Rev 2555: Move RepositoryTestProviderAdapter into the tests part of the code base. in sftp://rookery/~/public_html/baz2.0/adapter-cleanup

Robert Collins robertc at robertcollins.net
Wed Jun 27 23:27:13 BST 2007


At sftp://rookery/~/public_html/baz2.0/adapter-cleanup

------------------------------------------------------------
revno: 2555
revision-id: robertc at robertcollins.net-20070627222709-tqtod0gjk3xj5p6w
parent: robertc at robertcollins.net-20070627074138-2as9koyepbawsm8n
committer: Robert Collins <robertc at robertcollins.net>
branch nick: adapter-cleanup
timestamp: Thu 2007-06-28 08:27:09 +1000
message:
  Move RepositoryTestProviderAdapter into the tests part of the code base.
modified:
  bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
  bzrlib/tests/repository_implementations/__init__.py __init__.py-20060131092037-9564957a7d4a841b
  bzrlib/tests/test_selftest.py  test_selftest.py-20051202044319-c110a115d8c0456a
=== modified file 'bzrlib/repository.py'
--- a/bzrlib/repository.py	2007-06-27 07:41:38 +0000
+++ b/bzrlib/repository.py	2007-06-27 22:27:09 +0000
@@ -1787,71 +1787,6 @@
 InterRepository.register_optimiser(InterRemoteRepository)
 
 
-class RepositoryTestProviderAdapter(object):
-    """A tool to generate a suite testing multiple repository formats at once.
-
-    This is done by copying the test once for each transport and injecting
-    the transport_server, transport_readonly_server, and bzrdir_format and
-    repository_format classes into each copy. Each copy is also given a new id()
-    to make it easy to identify.
-    """
-
-    def __init__(self, transport_server, transport_readonly_server, formats,
-                 vfs_transport_factory=None):
-        self._transport_server = transport_server
-        self._transport_readonly_server = transport_readonly_server
-        self._vfs_transport_factory = vfs_transport_factory
-        self._formats = formats
-        self.scenarios = self.formats_to_scenarios(formats)
-    
-    def adapt(self, test):
-        """Return a TestSuite containing a copy of test for each scenario."""
-        result = unittest.TestSuite()
-        for scenario in self.scenarios:
-            result.addTest(self.adapt_test_to_scenario(test, scenario))
-        return result
-
-    def adapt_test_to_scenario(self, test, scenario):
-        """Copy test and apply scenario to it.
-
-        :param test: A test to adapt.
-        :param scenario: A tuple describing the scenarion.
-            The first element of the tuple is the new test id.
-            The second element is a dict containing attributes to set on the
-            test.
-        :return: The adapted test.
-        """
-        from copy import deepcopy
-        new_test = deepcopy(test)
-        for name, value in scenario[1].items():
-            setattr(new_test, name, value)
-        def make_new_test_id():
-            new_id = "%s(%s)" % (new_test.id(), scenario[0])
-            return lambda: new_id
-        new_test.id = make_new_test_id()
-        return new_test
-
-    def formats_to_scenarios(self, formats):
-        """Transform the input formats to a list of scenarios.
-
-        :param formats: A list of (repository_format, bzrdir_format).
-        """
-        result = []
-        for repository_format, bzrdir_format in formats:
-            scenario = (repository_format.__class__.__name__,
-                {"transport_server":self._transport_server,
-                 "transport_readonly_server":self._transport_readonly_server,
-                 "bzrdir_format":bzrdir_format,
-                 "repository_format":repository_format,
-                 })
-            # Only override the test's vfs_transport_factory if one was
-            # specified, otherwise just leave the default in place.
-            if self._vfs_transport_factory:
-                scenario[1]['vfs_transport_factory'] = self._vfs_transport_factory
-            result.append(scenario)
-        return result
-
-
 class InterRepositoryTestProviderAdapter(object):
     """A tool to generate a suite testing multiple inter repository formats.
 

=== modified file 'bzrlib/tests/repository_implementations/__init__.py'
--- a/bzrlib/tests/repository_implementations/__init__.py	2007-06-27 07:41:38 +0000
+++ b/bzrlib/tests/repository_implementations/__init__.py	2007-06-27 22:27:09 +0000
@@ -24,12 +24,11 @@
 rather than in tests/branch_implementations/*.py.
 """
 
+import unittest
+
 from bzrlib import (
     repository,
     )
-from bzrlib.repository import (
-    RepositoryTestProviderAdapter,
-    )
 from bzrlib.repofmt import (
     weaverepo,
     )
@@ -43,6 +42,71 @@
 from bzrlib.transport.memory import MemoryServer
 
 
+class RepositoryTestProviderAdapter(object):
+    """A tool to generate a suite testing multiple repository formats at once.
+
+    This is done by copying the test once for each transport and injecting
+    the transport_server, transport_readonly_server, and bzrdir_format and
+    repository_format classes into each copy. Each copy is also given a new id()
+    to make it easy to identify.
+    """
+
+    def __init__(self, transport_server, transport_readonly_server, formats,
+                 vfs_transport_factory=None):
+        self._transport_server = transport_server
+        self._transport_readonly_server = transport_readonly_server
+        self._vfs_transport_factory = vfs_transport_factory
+        self._formats = formats
+        self.scenarios = self.formats_to_scenarios(formats)
+    
+    def adapt(self, test):
+        """Return a TestSuite containing a copy of test for each scenario."""
+        result = unittest.TestSuite()
+        for scenario in self.scenarios:
+            result.addTest(self.adapt_test_to_scenario(test, scenario))
+        return result
+
+    def adapt_test_to_scenario(self, test, scenario):
+        """Copy test and apply scenario to it.
+
+        :param test: A test to adapt.
+        :param scenario: A tuple describing the scenarion.
+            The first element of the tuple is the new test id.
+            The second element is a dict containing attributes to set on the
+            test.
+        :return: The adapted test.
+        """
+        from copy import deepcopy
+        new_test = deepcopy(test)
+        for name, value in scenario[1].items():
+            setattr(new_test, name, value)
+        def make_new_test_id():
+            new_id = "%s(%s)" % (new_test.id(), scenario[0])
+            return lambda: new_id
+        new_test.id = make_new_test_id()
+        return new_test
+
+    def formats_to_scenarios(self, formats):
+        """Transform the input formats to a list of scenarios.
+
+        :param formats: A list of (repository_format, bzrdir_format).
+        """
+        result = []
+        for repository_format, bzrdir_format in formats:
+            scenario = (repository_format.__class__.__name__,
+                {"transport_server":self._transport_server,
+                 "transport_readonly_server":self._transport_readonly_server,
+                 "bzrdir_format":bzrdir_format,
+                 "repository_format":repository_format,
+                 })
+            # Only override the test's vfs_transport_factory if one was
+            # specified, otherwise just leave the default in place.
+            if self._vfs_transport_factory:
+                scenario[1]['vfs_transport_factory'] = self._vfs_transport_factory
+            result.append(scenario)
+        return result
+
+
 class TestCaseWithRepository(TestCaseWithBzrDir):
 
     def make_repository(self, relpath, format=None):
@@ -50,7 +114,7 @@
             # Create a repository of the type we are trying to test.
             made_control = self.make_bzrdir(relpath)
             repo = self.repository_format.initialize(made_control)
-            if getattr(self, "repository_to_test_repository"):
+            if getattr(self, "repository_to_test_repository", None):
                 repo = self.repository_to_test_repository(repo)
             return repo
         else:

=== modified file 'bzrlib/tests/test_selftest.py'
--- a/bzrlib/tests/test_selftest.py	2007-06-27 07:41:38 +0000
+++ b/bzrlib/tests/test_selftest.py	2007-06-27 22:27:09 +0000
@@ -224,7 +224,7 @@
     def test_constructor(self):
         # check that constructor parameters are passed through to the
         # scenarios.
-        from bzrlib.repository import RepositoryTestProviderAdapter
+        from bzrlib.tests.repository_implementations import RepositoryTestProviderAdapter
         server1 = "a"
         server2 = "b"
         formats = [("c", "C"), ("d", "D")]
@@ -244,7 +244,7 @@
 
     def test_setting_vfs_transport(self):
         """The vfs_transport_factory can be set optionally."""
-        from bzrlib.repository import RepositoryTestProviderAdapter
+        from bzrlib.tests.repository_implementations import RepositoryTestProviderAdapter
         formats = [("a", "b"), ("c", "d")]
         adapter = RepositoryTestProviderAdapter(None, None, formats,
             vfs_transport_factory="vfs")
@@ -264,7 +264,7 @@
             adapter.scenarios)
 
     def test_adapt_applies_scenarios(self):
-        from bzrlib.repository import RepositoryTestProviderAdapter
+        from bzrlib.tests.repository_implementations import RepositoryTestProviderAdapter
         input_test = TestRepositoryProviderAdapter(
             "test_adapt_test_to_scenario")
         adapter = RepositoryTestProviderAdapter(None, None, [])
@@ -280,7 +280,7 @@
 
     def test_formats_to_scenarios(self):
         """The adapter can generate all the scenarios needed."""
-        from bzrlib.repository import RepositoryTestProviderAdapter
+        from bzrlib.tests.repository_implementations import RepositoryTestProviderAdapter
         no_vfs_adapter = RepositoryTestProviderAdapter("server", "readonly",
             [], None)
         vfs_adapter = RepositoryTestProviderAdapter("server", "readonly",
@@ -315,7 +315,7 @@
             vfs_adapter.formats_to_scenarios(formats))
 
     def test_adapt_test_to_scenario(self):
-        from bzrlib.repository import RepositoryTestProviderAdapter
+        from bzrlib.tests.repository_implementations import RepositoryTestProviderAdapter
         input_test = TestRepositoryProviderAdapter(
             "test_adapt_test_to_scenario")
         adapter = RepositoryTestProviderAdapter(None, None, [],



More information about the bazaar-commits mailing list