Rev 2929: * New helper function ``bzrlib.tests.condition_isinstance`` which helps in http://people.ubuntu.com/~robertc/baz2.0/in-module-parameterisation

Robert Collins robertc at robertcollins.net
Sun Oct 21 03:20:03 BST 2007


At http://people.ubuntu.com/~robertc/baz2.0/in-module-parameterisation

------------------------------------------------------------
revno: 2929
revision-id: robertc at robertcollins.net-20071021021936-jlz4q3xd60fc84z8
parent: robertc at robertcollins.net-20071021020852-1o0jfwqhyb04fp0f
committer: Robert Collins <robertc at robertcollins.net>
branch nick: in-module-parameterisation
timestamp: Sun 2007-10-21 12:19:36 +1000
message:
  * New helper function ``bzrlib.tests.condition_isinstance`` which helps
    filter tests based on class. (Robert Collins)
modified:
  NEWS                           NEWS-20050323055033-4e00b5db738777ff
  bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
  bzrlib/tests/test_selftest.py  test_selftest.py-20051202044319-c110a115d8c0456a
=== modified file 'NEWS'
--- a/NEWS	2007-10-21 02:08:52 +0000
+++ b/NEWS	2007-10-21 02:19:36 +0000
@@ -263,6 +263,9 @@
 
   TESTING:
 
+   * New helper function ``bzrlib.tests.condition_isinstance`` which helps
+     filter tests based on class. (Robert Collins)
+    
    * New helper function ``bzrlib.tests.filter_suite_by_condition`` which
      generalises the ``filter_suite_by_re`` function. (Robert Collins)
 

=== modified file 'bzrlib/tests/__init__.py'
--- a/bzrlib/tests/__init__.py	2007-10-21 02:08:52 +0000
+++ b/bzrlib/tests/__init__.py	2007-10-21 02:19:36 +0000
@@ -2197,6 +2197,17 @@
             self.transport_readonly_server = HttpServer
 
 
+def condition_isinstance(klass_or_klass_list):
+    """Create a condition filter which returns isinstance(param, klass).
+    
+    :return: A callable which when called with one parameter obj return the
+        result of isinstance(obj, klass_or_klass_list).
+    """
+    def condition(obj):
+        return isinstance(obj, klass_or_klass_list)
+    return condition
+
+
 def filter_suite_by_condition(suite, condition):
     """Create a test suite by filtering another one.
     

=== modified file 'bzrlib/tests/test_selftest.py'
--- a/bzrlib/tests/test_selftest.py	2007-10-21 02:08:52 +0000
+++ b/bzrlib/tests/test_selftest.py	2007-10-21 02:19:36 +0000
@@ -55,6 +55,7 @@
                           TestUtil,
                           TextTestRunner,
                           UnavailableFeature,
+                          condition_isinstance,
                           exclude_tests_by_re,
                           filter_suite_by_condition,
                           filter_suite_by_re,
@@ -1656,6 +1657,14 @@
         """Get the ids for the tests in a test suite."""
         return [t.id() for t in iter_suite_tests(test_suite)]
 
+    def test_condition_isinstance(self):
+        filtered_suite = filter_suite_by_condition(self.suite,
+            condition_isinstance(self.__class__))
+        class_pattern = 'bzrlib.tests.test_selftest.TestSelftestFiltering.'
+        re_filtered = filter_suite_by_re(self.suite, class_pattern)
+        self.assertEqual(self._test_ids(re_filtered),
+            self._test_ids(filtered_suite))
+
     def test_exclude_tests_by_re(self):
         self.all_names = self._test_ids(self.suite)
         filtered_suite = exclude_tests_by_re(self.suite, 'exclude_tests_by_re')



More information about the bazaar-commits mailing list