[Checkins] SVN: Sandbox/ulif/z3c-testsetup/trunk/src/z3c/testsetup/doctesting.py Rename collect-funcs, clean up constructor.

Uli Fouquet uli at gnufix.de
Tue Feb 5 02:04:27 EST 2008


Log message for revision 83520:
  Rename collect-funcs, clean up constructor.

Changed:
  U   Sandbox/ulif/z3c-testsetup/trunk/src/z3c/testsetup/doctesting.py

-=-
Modified: Sandbox/ulif/z3c-testsetup/trunk/src/z3c/testsetup/doctesting.py
===================================================================
--- Sandbox/ulif/z3c-testsetup/trunk/src/z3c/testsetup/doctesting.py	2008-02-05 07:03:36 UTC (rev 83519)
+++ Sandbox/ulif/z3c-testsetup/trunk/src/z3c/testsetup/doctesting.py	2008-02-05 07:04:27 UTC (rev 83520)
@@ -101,22 +101,36 @@
         '^\s*:(T|t)est-(L|l)ayer:\s*(functional)\s*',
         ]
 
-    def _init(self, package, *args, **kwargs):
-        """Setup a special ZCML layer if requested.
-        """
-        if self.zcml_config is not None:
-            zcml_file = self.zcml_config
-            if not os.path.isfile(zcml_file):
-                zcml_file = os.path.join(
+    checker = None
+
+    param_list = BasicTestSetup.param_list + ['globs', 'setup', 'teardown',
+                                              'optionflags', 'checker',
+                                              'zcml_config', 'layer_name',
+                                              'layer', 'encoding']
+
+    def __init__(self, package, filter_func=None, extensions=None,
+                 regexp_list=None, globs=None, setup=None, teardown=None,
+                 optionflags=None, checker=None, zcml_config = None,
+                 layer_name='FunctionalLayer', layer=None, encoding='utf-8',
+                 **kw):
+        BasicTestSetup.__init__(self, package, filter_func=filter_func,
+                       extensions=extensions)
+        self.checker = checker
+        self.encoding = encoding
+        # Setup a new layer if specified in params...
+        if zcml_config is not None and layer is None:
+            if not os.path.isfile(zcml_config):
+                zcml_config = os.path.join(
                     os.path.dirname(self.package.__file__),
-                    zcml_file)
-            layer_name = 'FunctionalLayer'
-            if self.layer_name is not None:
-                layer_name = self.layer_name
-            self.layer = ZCMLLayer(zcml_file, self.package.__name__,
+                    zcml_config)
+            self.layer = ZCMLLayer(zcml_config, self.package.__name__,
                                    layer_name)
+        # Passing a ready-for-use layer overrides layer specified by
+        # zcml_config...
+        if layer is not None:
+            self.layer = layer
         return
-            
+        
     def setUp(self, test):
         FunctionalTestSetup().setUp()
 
@@ -134,6 +148,7 @@
             setUp=self.setUp, tearDown=self.tearDown,
             globs=self.globs,
             optionflags=self.optionflags,
+            encoding=self.encoding,
             **self.additional_options
             )
         test.layer = self.layer
@@ -147,12 +162,37 @@
             suite.addTest(self.suiteFromFile(name))
         return suite
 
-def collect_doctests(package, *args, **kwargs):
+def _collect_tests(pkg_or_dotted_name, setup_type,
+                   typespec_kws=[], *args, **kwargs):
+    pkg = get_package(pkg_or_dotted_name)
+    options = kwargs.copy()
+    for kw in typespec_kws:
+        if kw in kwargs.keys():
+            options[kw[1:]] = kwargs[kw]
+            del options[kw]
+    for kw in options.copy().keys():
+        if kw not in setup_type.param_list:
+            del options[kw]
+    return setup_type(pkg, *args, **options).getTestSuite()
+    
+
+def get_unitdoctests_suite(pkg_or_dotted_name, *args, **kwargs):
+    kws = ['uglobs', 'uoptionflags', 'usetup', 'uteardown']
+    return _collect_tests(pkg_or_dotted_name, UnitDocTestSetup,
+                          typespec_kws=kws, *args, **kwargs)
+
+def get_functionaldoctests_suite(pkg_or_dotted_name, *args, **kwargs):
+    return _collect_tests(pkg_or_dotted_name, FunctionalDocTestSetup,
+                          ['fglobs', 'foptionflags', 'fsetup', 'fteardown'],
+                          *args, **kwargs)
+
+def get_doctests_suite(pkg_or_dotted_name, *args, **kwargs):
+    pkg = get_package(pkg_or_dotted_name)
     suite = unittest.TestSuite()
-    suite.addTests(
-        UnitDocTestSetup(package, *args, **kwargs).getTestSuite())
     suite.addTest(
-        FunctionalDocTestSetup(package, *args, **kwargs).getTestSuite())
+        get_unitdoctests_suite(pkg, *args, **kwargs))
+    suite.addTest(
+        get_functionaldoctests_suite(pkg, *args, **kwargs))
     return suite
 
 def register_doctests(pkg_or_dotted_name, *args, **kwargs):
@@ -169,6 +209,6 @@
     """
     pkg = get_package(pkg_or_dotted_name)
     def tmpfunc():
-        return collect_doctests(pkg, *args, **kwargs)
+        return get_doctests_suite(pkg, *args, **kwargs)
     return tmpfunc
     



More information about the Checkins mailing list