[Checkins] SVN: zope.testing/branches/wosc-doctest-finder/src/zope/testing/testrunner/ support multiple features that find tests: merge multiple calls of register_tests() instead of overwriting.

Wolfgang Schnerring wosc at wosc.de
Fri Sep 11 06:44:34 EDT 2009


Log message for revision 103732:
  support multiple features that find tests: merge multiple calls of register_tests() instead of overwriting.
  

Changed:
  U   zope.testing/branches/wosc-doctest-finder/src/zope/testing/testrunner/runner.py
  A   zope.testing/branches/wosc-doctest-finder/src/zope/testing/testrunner/testrunner-find.txt
  U   zope.testing/branches/wosc-doctest-finder/src/zope/testing/testrunner/tests.py

-=-
Modified: zope.testing/branches/wosc-doctest-finder/src/zope/testing/testrunner/runner.py
===================================================================
--- zope.testing/branches/wosc-doctest-finder/src/zope/testing/testrunner/runner.py	2009-09-11 10:07:12 UTC (rev 103731)
+++ zope.testing/branches/wosc-doctest-finder/src/zope/testing/testrunner/runner.py	2009-09-11 10:44:34 UTC (rev 103732)
@@ -106,9 +106,10 @@
 
     def register_tests(self, tests):
         """Registers tests."""
-        # XXX To support multiple features that find tests this shouldn't be
-        # an update but merge the various layers individually.
-        self.tests_by_layer_name.update(tests)
+        for layer, suite in tests.items():
+            existing = self.tests_by_layer_name.setdefault(
+                layer, unittest.TestSuite())
+            existing.addTests(suite)
 
     def run(self):
         self.configure()

Added: zope.testing/branches/wosc-doctest-finder/src/zope/testing/testrunner/testrunner-find.txt
===================================================================
--- zope.testing/branches/wosc-doctest-finder/src/zope/testing/testrunner/testrunner-find.txt	                        (rev 0)
+++ zope.testing/branches/wosc-doctest-finder/src/zope/testing/testrunner/testrunner-find.txt	2009-09-11 10:44:34 UTC (rev 103732)
@@ -0,0 +1,34 @@
+===================
+ Registering tests
+===================
+
+register_tests() can be called multiple times.
+
+>>> from unittest import TestSuite
+>>> from zope.testing.testrunner.runner import Runner
+
+>>> def test1():
+...     return None
+>>> def test2():
+...     return None
+>>> suite1 = TestSuite([test1])
+>>> suite2 = TestSuite([test2])
+
+Different layers are simply merged:
+
+>>> runner = Runner()
+>>> runner.register_tests(dict(layer1=suite1))
+>>> runner.register_tests(dict(layer2=suite2))
+>>> runner.tests_by_layer_name
+{'layer2': <unittest.TestSuite tests=[<function test2 at 0x...>]>,
+'layer1': <unittest.TestSuite tests=[<function test1 at 0x...>]>}
+
+Multiple calls for the same layer append the new tests to the existing ones:
+
+>>> runner = Runner()
+>>> runner.register_tests(dict(layer1=suite1))
+>>> runner.register_tests(dict(layer1=suite2))
+>>> runner.tests_by_layer_name
+{'layer1': <unittest.TestSuite...>}
+>>> [x for x in runner.tests_by_layer_name['layer1']]
+[<function test1 at 0x...>, <function test2 at 0x...>]
\ No newline at end of file

Modified: zope.testing/branches/wosc-doctest-finder/src/zope/testing/testrunner/tests.py
===================================================================
--- zope.testing/branches/wosc-doctest-finder/src/zope/testing/testrunner/tests.py	2009-09-11 10:07:12 UTC (rev 103731)
+++ zope.testing/branches/wosc-doctest-finder/src/zope/testing/testrunner/tests.py	2009-09-11 10:44:34 UTC (rev 103732)
@@ -150,6 +150,7 @@
         'testrunner-debugging.txt',
         'testrunner-edge-cases.txt',
         'testrunner-errors.txt',
+        'testrunner-find.txt',
         'testrunner-layers-buff.txt',
         'testrunner-layers-ntd.txt',
         'testrunner-layers.txt',



More information about the checkins mailing list