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