Rev 3194: Helper to filter test suite building by module when loading a list. in file:///v/home/vila/src/bzr/experimental/selftest/

Vincent Ladeuil v.ladeuil+lp at free.fr
Fri Jan 18 17:20:36 GMT 2008


At file:///v/home/vila/src/bzr/experimental/selftest/

------------------------------------------------------------
revno: 3194
revision-id:v.ladeuil+lp at free.fr-20080118172031-5npzafmxac8pvq2v
parent: pqm at pqm.ubuntu.com-20080118055224-sskoia4bcpxd8wzu
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: selftest
timestamp: Fri 2008-01-18 18:20:31 +0100
message:
  Helper to filter test suite building by module when loading a list.
  
  * bzrlib/tests/__init__.py:
  (split_test_list_by_module): Split test name list by module.
  
  * bzrlib/tests/test_selftest.py:
  (TestSplitTestListByModules): Test plitting a test names list by
  modules.
modified:
  bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
  bzrlib/tests/test_selftest.py  test_selftest.py-20051202044319-c110a115d8c0456a
-------------- next part --------------
=== modified file 'bzrlib/tests/__init__.py'
--- a/bzrlib/tests/__init__.py	2008-01-11 05:08:20 +0000
+++ b/bzrlib/tests/__init__.py	2008-01-18 17:20:31 +0000
@@ -2707,6 +2707,28 @@
     return suite
 
 
+def split_test_list_by_module(test_name_list):
+    by_modules = {}
+    for test_name in test_name_list:
+        if '(' in test_name:
+            # Get read of params in case they contain '.' chars
+            name, params = test_name.split('(')
+        else:
+            name = test_name
+        try:
+            mod_name, klass, meth_name = name.rsplit('.', 2)
+        except ValueError:
+            # Not enough components. Put the test in a special module since we
+            # can't reliably find its associated module.
+            mod_name = ''
+        by_module = by_modules.get(mod_name, None)
+        if by_module is None:
+            by_modules[mod_name] = [test_name]
+        else:
+            by_module.append(test_name)
+    return by_modules
+
+
 def multiply_tests_from_modules(module_name_list, scenario_iter):
     """Adapt all tests in some given modules to given scenarios.
 

=== modified file 'bzrlib/tests/test_selftest.py'
--- a/bzrlib/tests/test_selftest.py	2008-01-03 19:12:30 +0000
+++ b/bzrlib/tests/test_selftest.py	2008-01-18 17:20:31 +0000
@@ -32,6 +32,7 @@
     osutils,
     repository,
     symbol_versioning,
+    tests,
     )
 from bzrlib.progress import _BaseProgressBar
 from bzrlib.repofmt import weaverepo
@@ -1842,3 +1843,41 @@
         module.__class__.load_tests = load_tests
         self.assertEqual(2, loader.loadTestsFromModule(module).countTestCases())
 
+
+class TestSplitTestListByModules(tests.TestCase):
+
+    def test_empty_list(self):
+        names_by_module = tests.split_test_list_by_module([])
+        self.assertEquals({}, names_by_module)
+
+    def test_valid_list(self):
+        test_list = ['mod1.cl1.meth1', 'mod1.cl1.meth2',
+                     'mod1.cl2.meth1', 'mod1.cl2.meth2',
+                     'mod1.submod2.cl1.meth1', 'mod1.submod2.cl2.meth2',
+                    ]
+        names_by_module = tests.split_test_list_by_module(test_list)
+        self.assertEquals(['mod1', 'mod1.submod2'], names_by_module.keys())
+        self.assertEquals(['mod1.cl1.meth1', 'mod1.cl1.meth2',
+                           'mod1.cl2.meth1', 'mod1.cl2.meth2',],
+                          names_by_module['mod1'])
+        self.assertEquals(['mod1.submod2.cl1.meth1', 'mod1.submod2.cl2.meth2'],
+                          names_by_module['mod1.submod2'])
+
+    def test_too_short_test_name(self):
+        test_list = ['mod1', 'mod2.method1', 'mod3.cl1']
+        names_by_module = tests.split_test_list_by_module(test_list)
+        self.assertEquals([''], names_by_module.keys())
+        self.assertEquals(['mod1', 'mod2.method1', 'mod3.cl1'],
+                          names_by_module[''])
+
+
+    def test_bad_chars_in_params(self):
+        test_list = ['mod1.cl1.meth1(xx.yy)']
+        names_by_module = tests.split_test_list_by_module(test_list)
+        self.assertEquals(['mod1'], names_by_module.keys())
+        self.assertEquals(['mod1.cl1.meth1(xx.yy)'],
+                          names_by_module['mod1'])
+
+# blank line
+# comment
+



More information about the bazaar-commits mailing list