[CalendarServer-changes] [6798] CalDAVTester/trunk

source_changes at macosforge.org source_changes at macosforge.org
Fri Jan 21 13:23:34 PST 2011


Revision: 6798
          http://trac.macosforge.org/projects/calendarserver/changeset/6798
Author:   cdaboo at apple.com
Date:     2011-01-21 13:23:33 -0800 (Fri, 21 Jan 2011)
Log Message:
-----------
Add exclude-feature option to allow for "if/else" style feature matching.

Modified Paths:
--------------
    CalDAVTester/trunk/scripts/tests/CalDAV/caldavtest.dtd
    CalDAVTester/trunk/src/caldavtest.py
    CalDAVTester/trunk/src/request.py
    CalDAVTester/trunk/src/test.py
    CalDAVTester/trunk/src/testsuite.py
    CalDAVTester/trunk/src/xmlDefs.py

Modified: CalDAVTester/trunk/scripts/tests/CalDAV/caldavtest.dtd
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/caldavtest.dtd	2011-01-21 18:08:36 UTC (rev 6797)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/caldavtest.dtd	2011-01-21 21:23:33 UTC (rev 6798)
@@ -21,13 +21,15 @@
 
 	<!ELEMENT require-feature (feature*)>
 		<!ELEMENT feature (#PCDATA)>
+	<!ELEMENT exclude-feature (feature*)>
+		<!ELEMENT feature (#PCDATA)>
 
 	<!ELEMENT start (request*)>
 	<!ELEMENT end (request*)>
 
 	<!ELEMENT pause EMPTY>
 
-	<!ELEMENT request (require-feature?, method, ruri*, header*, data?, verify*, grabheader*, grabproperty*, grabelement*)>
+	<!ELEMENT request (require-feature?, exclude-feature?, method, ruri*, header*, data?, verify*, grabheader*, grabproperty*, grabelement*)>
 		<!ATTLIST request auth (yes|no) "yes"
 						 user CDATA ""
 						 pswd CDATA ""
@@ -58,11 +60,11 @@
 
 		<!ELEMENT grabelement (name, variable)>
 
-	<!ELEMENT test-suite (require-feature?, test*)>
+	<!ELEMENT test-suite (require-feature?, exclude-feature?, test*)>
 		<!ATTLIST test-suite name CDATA #REQUIRED
 							ignore (yes|no) "no">
 	
-		<!ELEMENT test (require-feature?, description?, (request|pause)+)>
+		<!ELEMENT test (require-feature?, exclude-feature?, description?, (request|pause)+)>
 			<!ATTLIST test name CDATA #REQUIRED
 						  count CDATA "1"
 						  stats (yes|no) "no"

Modified: CalDAVTester/trunk/src/caldavtest.py
===================================================================
--- CalDAVTester/trunk/src/caldavtest.py	2011-01-21 18:08:36 UTC (rev 6797)
+++ CalDAVTester/trunk/src/caldavtest.py	2011-01-21 21:23:33 UTC (rev 6798)
@@ -43,6 +43,7 @@
         self.name = name
         self.description = ""
         self.require_features = set()
+        self.exclude_features = set()
         self.ignore_all = False
         self.start_requests = []
         self.end_requests = []
@@ -53,11 +54,18 @@
     def missingFeatures(self):
         return self.require_features - self.manager.server_info.features
 
+    def excludedFeatures(self):
+        return self.exclude_features & self.manager.server_info.features
+
     def run( self ):
         if len(self.missingFeatures()) != 0:
             self.manager.log(manager.LOG_HIGH, "----- Ignoring Tests from \"%s\"... -----" % self.name, before=1)
             self.manager.log(manager.LOG_HIGH, "      Missing features: %s" % (", ".join(sorted(self.missingFeatures())),))
             return 0, 0, 1
+        if len(self.excludedFeatures()) != 0:
+            self.manager.log(manager.LOG_HIGH, "----- Ignoring Tests from \"%s\"... -----" % self.name, before=1)
+            self.manager.log(manager.LOG_HIGH, "      Excluded features: %s" % (", ".join(sorted(self.excludedFeatures())),))
+            return 0, 0, 1
             
         try:
             self.manager.log(manager.LOG_HIGH, "----- Running Tests from \"%s\"... -----" % self.name, before=1)
@@ -105,6 +113,10 @@
             self.manager.log(manager.LOG_HIGH, "[IGNORED]")
             self.manager.log(manager.LOG_HIGH, "      Missing features: %s" % (", ".join(sorted(suite.missingFeatures())),))
             ignored = len(suite.tests)
+        elif len(suite.excludedFeatures()) != 0:
+            self.manager.log(manager.LOG_HIGH, "[IGNORED]")
+            self.manager.log(manager.LOG_HIGH, "      Excluded features: %s" % (", ".join(sorted(suite.excludedFeatures())),))
+            ignored = len(suite.tests)
         else:
             self.manager.log(manager.LOG_HIGH, "")
             postgresCount = self.postgresInit()
@@ -139,6 +151,10 @@
             self.manager.log(manager.LOG_HIGH, "[IGNORED]")
             self.manager.log(manager.LOG_HIGH, "      Missing features: %s" % (", ".join(sorted(test.missingFeatures())),))
             return "i"
+        elif len(test.excludedFeatures()) != 0:
+            self.manager.log(manager.LOG_HIGH, "[IGNORED]")
+            self.manager.log(manager.LOG_HIGH, "      Excluded features: %s" % (", ".join(sorted(test.excludedFeatures())),))
+            return "i"
         else:
             result = False
             resulttxt = ""
@@ -401,6 +417,10 @@
             #self.manager.log(manager.LOG_HIGH, "[IGNORED]")
             #self.manager.log(manager.LOG_HIGH, "      Missing features: %s" % (", ".join(sorted(req.missingFeatures())),))
             return True, "", None, None
+        if len(req.excludedFeatures()) != 0:
+            #self.manager.log(manager.LOG_HIGH, "[IGNORED]")
+            #self.manager.log(manager.LOG_HIGH, "      Excluded features: %s" % (", ".join(sorted(req.excludedFeatures())),))
+            return True, "", None, None
 
         # Special check for DELETEALL
         if req.method == "DELETEALL":
@@ -585,7 +605,9 @@
             if child.tag == src.xmlDefs.ELEMENT_DESCRIPTION:
                 self.description = child.text
             elif child.tag == src.xmlDefs.ELEMENT_REQUIRE_FEATURE:
-                self.parseFeatures(child)
+                self.parseFeatures(child, require=True)
+            elif child.tag == src.xmlDefs.ELEMENT_EXCLUDE_FEATURE:
+                self.parseFeatures(child, require=False)
             elif child.tag == src.xmlDefs.ELEMENT_START:
                 self.start_requests = request.parseList(self.manager, child)
             elif child.tag == src.xmlDefs.ELEMENT_TESTSUITE:
@@ -595,10 +617,10 @@
             elif child.tag == src.xmlDefs.ELEMENT_END:
                 self.end_requests = request.parseList(self.manager, child)
     
-    def parseFeatures(self, node):
+    def parseFeatures(self, node, require=True):
         for child in node.getchildren():
             if child.tag == src.xmlDefs.ELEMENT_FEATURE:
-                self.require_features.add(child.text.encode("utf-8"))
+                (self.require_features if require else self.exclude_features).add(child.text.encode("utf-8"))
 
     def extractProperty(self, propertyname, respdata):
 

Modified: CalDAVTester/trunk/src/request.py
===================================================================
--- CalDAVTester/trunk/src/request.py	2011-01-21 18:08:36 UTC (rev 6797)
+++ CalDAVTester/trunk/src/request.py	2011-01-21 21:23:33 UTC (rev 6798)
@@ -141,6 +141,7 @@
         self.end_delete = False
         self.print_response = False
         self.require_features = set()
+        self.exclude_features = set()
         self.method = ""
         self.headers = {}
         self.ruris = []
@@ -158,6 +159,9 @@
     def missingFeatures(self):
         return self.require_features - self.manager.server_info.features
 
+    def excludedFeatures(self):
+        return self.exclude_features & self.manager.server_info.features
+
     def getURI( self, si ):
         uri = si.extrasubs(self.ruri)
         if "**" in uri:
@@ -305,7 +309,9 @@
 
         for child in node.getchildren():
             if child.tag == src.xmlDefs.ELEMENT_REQUIRE_FEATURE:
-                self.parseFeatures( child )
+                self.parseFeatures( child, require=True )
+            elif child.tag == src.xmlDefs.ELEMENT_EXCLUDE_FEATURE:
+                self.parseFeatures( child, require=False )
             elif child.tag == src.xmlDefs.ELEMENT_METHOD:
                 self.method = child.text.encode("utf-8")
             elif child.tag == src.xmlDefs.ELEMENT_HEADER:
@@ -327,10 +333,10 @@
             elif child.tag == src.xmlDefs.ELEMENT_GRABELEMENT:
                 self.parseGrab(child, self.grabelement)
 
-    def parseFeatures(self, node):
+    def parseFeatures(self, node, require=True):
         for child in node.getchildren():
             if child.tag == src.xmlDefs.ELEMENT_FEATURE:
-                self.require_features.add(child.text.encode("utf-8"))
+                (self.require_features if require else self.exclude_features).add(child.text.encode("utf-8"))
 
     def parseHeader(self, node):
         

Modified: CalDAVTester/trunk/src/test.py
===================================================================
--- CalDAVTester/trunk/src/test.py	2011-01-21 18:08:36 UTC (rev 6797)
+++ CalDAVTester/trunk/src/test.py	2011-01-21 21:23:33 UTC (rev 6798)
@@ -37,12 +37,16 @@
         self.stats = False
         self.ignore = False
         self.require_features = set()
+        self.exclude_features = set()
         self.description = ""
         self.requests = []
     
     def missingFeatures(self):
         return self.require_features - self.manager.server_info.features
 
+    def excludedFeatures(self):
+        return self.exclude_features & self.manager.server_info.features
+
     def parseXML( self, node ):
         self.name = node.get(src.xmlDefs.ATTR_NAME, "")
         self.details = getYesNoAttributeValue(node, src.xmlDefs.ATTR_DETAILS)
@@ -52,17 +56,19 @@
 
         for child in node.getchildren():
             if child.tag == src.xmlDefs.ELEMENT_REQUIRE_FEATURE:
-                self.parseFeatures( child )
+                self.parseFeatures( child, require=True )
+            elif child.tag == src.xmlDefs.ELEMENT_EXCLUDE_FEATURE:
+                self.parseFeatures( child, require=False )
             elif child.tag == src.xmlDefs.ELEMENT_DESCRIPTION:
                 self.description = child.text
 
         # get request
         self.requests = request.parseList( self.manager, node )
 
-    def parseFeatures(self, node):
+    def parseFeatures(self, node, require=True):
         for child in node.getchildren():
             if child.tag == src.xmlDefs.ELEMENT_FEATURE:
-                self.require_features.add(child.text.encode("utf-8"))
+                (self.require_features if require else self.exclude_features).add(child.text.encode("utf-8"))
 
     def dump( self ):
         print "\nTEST: %s" % self.name

Modified: CalDAVTester/trunk/src/testsuite.py
===================================================================
--- CalDAVTester/trunk/src/testsuite.py	2011-01-21 18:08:36 UTC (rev 6797)
+++ CalDAVTester/trunk/src/testsuite.py	2011-01-21 21:23:33 UTC (rev 6798)
@@ -32,27 +32,33 @@
         self.name = ""
         self.ignore = False
         self.require_features = set()
+        self.exclude_features = set()
         self.tests = []
     
     def missingFeatures(self):
         return self.require_features - self.manager.server_info.features
 
+    def excludedFeatures(self):
+        return self.exclude_features & self.manager.server_info.features
+
     def parseXML( self, node ):
         self.name = node.get(src.xmlDefs.ATTR_NAME, "")
         self.ignore = getYesNoAttributeValue(node, src.xmlDefs.ATTR_IGNORE)
 
         for child in node.getchildren():
             if child.tag == src.xmlDefs.ELEMENT_REQUIRE_FEATURE:
-                self.parseFeatures( child )
+                self.parseFeatures( child, require=True )
+            elif child.tag == src.xmlDefs.ELEMENT_EXCLUDE_FEATURE:
+                self.parseFeatures( child, require=False )
             elif child.tag == src.xmlDefs.ELEMENT_TEST:
                 t = test(self.manager)
                 t.parseXML( child )
                 self.tests.append( t )
 
-    def parseFeatures(self, node):
+    def parseFeatures(self, node, require=True):
         for child in node.getchildren():
             if child.tag == src.xmlDefs.ELEMENT_FEATURE:
-                self.require_features.add(child.text.encode("utf-8"))
+                (self.require_features if require else self.exclude_features).add(child.text.encode("utf-8"))
 
     def dump( self ):
         print "\nTest Suite:"

Modified: CalDAVTester/trunk/src/xmlDefs.py
===================================================================
--- CalDAVTester/trunk/src/xmlDefs.py	2011-01-21 18:08:36 UTC (rev 6797)
+++ CalDAVTester/trunk/src/xmlDefs.py	2011-01-21 21:23:33 UTC (rev 6798)
@@ -26,6 +26,7 @@
 ELEMENT_DATA = "data"
 ELEMENT_DESCRIPTION = "description"
 ELEMENT_END = "end"
+ELEMENT_EXCLUDE_FEATURE = "exclude-feature"
 ELEMENT_FEATURES = "features"
 ELEMENT_FEATURE = "feature"
 ELEMENT_FILEPATH = "filepath"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20110121/d342a832/attachment-0001.html>


More information about the calendarserver-changes mailing list