Rev 3318: Prepare bzrlib.plugin to use the new test loader. in file:///v/home/vila/src/bzr/experimental/faster-selftest/

Vincent Ladeuil v.ladeuil+lp at free.fr
Wed Mar 26 09:06:39 GMT 2008


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

------------------------------------------------------------
revno: 3318
revision-id: v.ladeuil+lp at free.fr-20080326090634-1yv15m2m2e08uezt
parent: v.ladeuil+lp at free.fr-20080326084201-5nk05zka1xnoua90
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: filter-by-module-test-loader
timestamp: Wed 2008-03-26 10:06:34 +0100
message:
  Prepare bzrlib.plugin to use the new test loader.
  
  * bzrlib/tests/test_plugins.py:
  (TestPlugins.test_no_load_tests_gives_None_for_load_tests): Smoke
  tests for plugin.load_tests().
  
  * bzrlib/plugin.py:
  (PlugIn.load_tests): Add the ability to use load_tests() instead
  of test_suite().
modified:
  bzrlib/plugin.py               plugin.py-20050622060424-829b654519533d69
  bzrlib/tests/test_plugins.py   plugins.py-20050622075746-32002b55e5e943e9
-------------- next part --------------
=== modified file 'bzrlib/plugin.py'
--- a/bzrlib/plugin.py	2008-03-17 13:10:32 +0000
+++ b/bzrlib/plugin.py	2008-03-26 09:06:34 +0000
@@ -407,13 +407,31 @@
         else:
             return None
 
+    def load_tests(self, standard_tests, loader):
+        """Return the adapted plugin's test suite.
+
+        :param standard_tests: The test suite as returned by the regular python
+            loadTestsFromModule.
+
+        :param loader: The custom loader that should be used to load additional
+            tests.
+
+        Note that TestUtil.TestLoader defines load_tests(self, standard_tests,
+        module, loader), but here we are handling the associated plugin module
+        ourselves.
+        """
+        if getattr(self.module, 'load_tests', None) is not None:
+            return self.module.load_tests(standard_tests, self.module, loader)
+        else:
+            return None
+
     def version_info(self):
         """Return the plugin's version_tuple or None if unknown."""
         version_info = getattr(self.module, 'version_info', None)
         if version_info is not None and len(version_info) == 3:
             version_info = tuple(version_info) + ('final', 0)
         return version_info
-    
+
     def _get__version__(self):
         version_info = self.version_info()
         if version_info is None:

=== modified file 'bzrlib/tests/test_plugins.py'
--- a/bzrlib/tests/test_plugins.py	2008-03-17 13:10:32 +0000
+++ b/bzrlib/tests/test_plugins.py	2008-03-26 09:06:34 +0000
@@ -282,6 +282,20 @@
         plugin = bzrlib.plugin.plugins()['plugin']
         self.assertEqual('foo', plugin.test_suite())
 
+    def test_no_load_tests_gives_None_for_load_tests(self):
+        self.setup_plugin()
+        plugin = bzrlib.plugin.plugins()['plugin']
+        self.assertEqual(None, plugin.load_tests('bar', 'bzr'))
+
+    def test_load_tests_gives_load_tests_result(self):
+        source = """
+def load_tests(standard_tests, module, loader):
+    return 'foo'"""
+        self.setup_plugin(source)
+        plugin = bzrlib.plugin.plugins()['plugin']
+        # Note that 
+        self.assertEqual('foo', plugin.load_tests('bar', 'bzr'))
+
     def test_no_version_info(self):
         self.setup_plugin()
         plugin = bzrlib.plugin.plugins()['plugin']



More information about the bazaar-commits mailing list