[Checkins] SVN: z3c.testsetup/branches/ulif-cleanup/src/z3c/testsetup/doctesting.py * Remove UnitDocTestSetup

Uli Fouquet uli at gnufix.de
Sat Oct 24 08:54:42 EDT 2009


Log message for revision 105256:
  * Remove UnitDocTestSetup
  
  * Allow encoding of ``None`` for doctests.
  
  * Register encoding properly when tests are setup.
  
  * Replace support for ``:zcml-layer:`` and ``:functional-zcml-layer:``
    by new marker: ``:zcml-file:``.
  
  * Flatten handling of functional (ZCMLLayer based) tests.
  
  * Allow optionflags ``None`` for doctests.
  

Changed:
  U   z3c.testsetup/branches/ulif-cleanup/src/z3c/testsetup/doctesting.py

-=-
Modified: z3c.testsetup/branches/ulif-cleanup/src/z3c/testsetup/doctesting.py
===================================================================
--- z3c.testsetup/branches/ulif-cleanup/src/z3c/testsetup/doctesting.py	2009-10-24 12:50:22 UTC (rev 105255)
+++ z3c.testsetup/branches/ulif-cleanup/src/z3c/testsetup/doctesting.py	2009-10-24 12:54:41 UTC (rev 105256)
@@ -21,6 +21,8 @@
 from z3c.testsetup.util import (get_package, get_marker_from_file, warn,
                                 get_attribute)
 
+marker = object()
+
 class DocTestSetup(BasicTestSetup):
     """A test setup for doctests."""
 
@@ -35,16 +37,17 @@
     checker = None
     
     def __init__(self, package, setup=None, teardown=None, globs=None,
-                 optionflags=None, encoding=None, checker=None,
-                 allow_teardown=True, **kw):
+                 optionflags=marker, encoding=marker, checker=None,
+                 allow_teardown=None, **kw):
         BasicTestSetup.__init__(self, package, **kw)
         self.setUp = setup or self.setUp
         self.tearDown = teardown or self.tearDown
-        self.encoding = encoding or self.encoding
         self.checker = checker or self.checker
+        if not(encoding is marker):
+            self.encoding = encoding
         if globs is not None:
             self.globs = globs
-        if optionflags is not None:
+        if not (optionflags is marker):
             self.optionflags = optionflags
         self.allow_teardown = allow_teardown
 
@@ -62,16 +65,12 @@
             layerdef = get_marker_from_file('layer', name)
             if layerdef is not None:
                 layerdef = get_attribute(layerdef)
-
-            zcml_layer = self.getZCMLLayer(name, 'zcml-layer')
+                
+            zcml_layer = self.getZCMLLayer(
+                name, 'zcml-file')
             if zcml_layer is not None:
                 layerdef = zcml_layer
 
-            functional_zcml_layer = self.getZCMLLayer(
-                name, 'functional-zcml-layer')
-            if functional_zcml_layer is not None:
-                layerdef = functional_zcml_layer
-
             setup = get_marker_from_file('setup', name) or self.setUp
             if setup is not None and isinstance(setup, basestring):
                 setup = get_attribute(setup)
@@ -87,32 +86,22 @@
                 name = name[len(common_prefix):]
 
             suite_creator = doctest.DocFileSuite
-            if functional_zcml_layer is not None:
+            if layerdef is not None:
+                # Set up test functionally if layer is ZCMLLayer...
                 try:
                     from zope.app.testing.functional import (
-                        FunctionalDocFileSuite)
+                        FunctionalDocFileSuite, ZCMLLayer)
                 except ImportError:
-                    warn("""You specified `:functional-zcml-layer:` in
+                    if zcml_layer is not None:
+                        warn("""You specified `:zcml-file:` in
     %s
 but there seems to be no `zope.app.testing` package available.
 Please include `zope.app.testing` in your project setup to run this testfile.
 """ % (os.path.join(common_prefix, name),))
                     continue
-                suite_creator = FunctionalDocFileSuite
+                if isinstance(layerdef, ZCMLLayer):
+                    suite_creator = FunctionalDocFileSuite
 
-            # If the defined layer is a ZCMLLayer, we also enable the
-            # functional test setup.
-            if layerdef is not None:
-                try:
-                    from zope.app.testing.functional import (
-                        ZCMLLayer, FunctionalDocFileSuite)
-                    if isinstance(layerdef, ZCMLLayer):
-                        suite_creator = FunctionalDocFileSuite
-                except ImportError:
-                    # If zope.app.testing is not available, the layer
-                    # cannot be a ZCML layer.
-                    pass
-
             test = suite_creator(
                 name,
                 package=self.package,
@@ -121,6 +110,7 @@
                 globs=self.globs,
                 optionflags=self.optionflags,
                 checker=self.checker,
+                encoding=self.encoding,
                 **self.additional_options
                 )
             if layerdef is not None:
@@ -183,61 +173,3 @@
             subdir_files = self.getDocTestFiles(dirpath=abs_path, **kw)
             dirlist.extend(subdir_files)
         return dirlist
-
-
-class UnitDocTestSetup(DocTestSetup):
-    """A unit test setup for packages.
-
-    A collection of methods to search for appropriate doctest files in
-    a given package. ``UnitTestSetup`` is also able to 'register' the
-    tests found and to deliver them as a ready-to-use
-    ``unittest.TestSuite`` instance.
-
-    While the functionality to search for testfiles is mostly
-    inherited from the base class, the focus here is to setup the
-    tests correctly.
-
-    See file `unittestsetup.py` in the tests/testsetup directory to
-    learn more about ``UnitTestSetup``.
-    """
-
-    optionflags = (doctest.ELLIPSIS+
-                   doctest.NORMALIZE_WHITESPACE+
-                   doctest.REPORT_NDIFF)
-
-    regexp_list = [
-        '^\s*:(T|t)est-(L|l)ayer:\s*(unit)\s*',
-        ]
-
-    globs = dict()
-
-    def setUp(self, test):
-        pass
-
-    def tearDown(self, test):
-        cleanup.cleanUp()
-
-    def getTestSuite(self):
-        docfiles = self.getDocTestFiles(package=self.package)
-        suite = unittest.TestSuite()
-        for name in docfiles:
-            layerdef = get_marker_from_file('Test-Layerdef', name)
-            if os.path.isabs(name):
-                # We get absolute pathnames, but we need relative ones...
-                common_prefix = os.path.commonprefix([self.package.__file__,
-                                                      name])
-                name = name[len(common_prefix):]
-            test = doctest.DocFileSuite(
-                name,
-                package=self.package,
-                setUp=self.setUp,
-                tearDown=self.tearDown,
-                globs=self.globs,
-                optionflags=self.optionflags,
-                checker=self.checker,
-                **self.additional_options
-                )
-            if layerdef is not None:
-                test.layer = layerdef
-            suite.addTest(test)
-        return suite



More information about the checkins mailing list