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