Rev 2561: And overhaul InterVersionedFileTestProviderAdapter too. in sftp://rookery/~/public_html/baz2.0/adapter-cleanup
Robert Collins
robertc at robertcollins.net
Thu Jun 28 07:16:23 BST 2007
At sftp://rookery/~/public_html/baz2.0/adapter-cleanup
------------------------------------------------------------
revno: 2561
revision-id: robertc at robertcollins.net-20070628061619-mds81zx3hw1dpeqm
parent: robertc at robertcollins.net-20070628060118-wpuciqx1xrjesces
committer: Robert Collins <robertc at robertcollins.net>
branch nick: adapter-cleanup
timestamp: Thu 2007-06-28 16:16:19 +1000
message:
And overhaul InterVersionedFileTestProviderAdapter too.
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/tests/interversionedfile_implementations/__init__.py __init__.py-20060302012326-981af525594d02ed
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
bzrlib/versionedfile.py versionedfile.py-20060222045106-5039c71ee3b65490
=== modified file 'NEWS'
--- a/NEWS 2007-06-28 06:01:18 +0000
+++ b/NEWS 2007-06-28 06:16:19 +0000
@@ -59,6 +59,8 @@
``bzrlib.tests.branch_implementations``.
``bzrlib.bzrdir.BzrDirTestProviderAdapter`` has moved to
``bzrlib.tests.bzrdir_implementations``.
+ ``bzrlib.versionedfile.InterVersionedFileTestProviderAdapter`` has moved
+ to ``bzrlib.tests.interversionedfile_implementations``.
These changes are an API break in the testing infrastructure only.
(Robert Collins)
=== modified file 'bzrlib/tests/interversionedfile_implementations/__init__.py'
--- a/bzrlib/tests/interversionedfile_implementations/__init__.py 2006-10-11 23:08:27 +0000
+++ b/bzrlib/tests/interversionedfile_implementations/__init__.py 2007-06-28 06:16:19 +0000
@@ -24,16 +24,71 @@
rather than in tests/interversionedfile_implementations/*.py.
"""
-from bzrlib.versionedfile import InterVersionedFileTestProviderAdapter
-
from bzrlib.tests import (
adapt_modules,
default_transport,
TestLoader,
+ TestScenarioApplier,
TestSuite,
)
+class InterVersionedFileTestProviderAdapter(TestScenarioApplier):
+ """A tool to generate a suite testing multiple inter versioned-file classes.
+
+ This is done by copying the test once for each InterVersionedFile provider
+ and injecting the transport_server, transport_readonly_server,
+ versionedfile_factory and versionedfile_factory_to 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):
+ self._transport_server = transport_server
+ self._transport_readonly_server = transport_readonly_server
+ self.scenarios = self.formats_to_scenarios(formats)
+
+ def formats_to_scenarios(self, formats):
+ """Transform the input formats to a list of scenarios.
+
+ :param formats: A list of tuples:
+ (interversionedfile_class, versionedfile_factory,
+ versionedfile_factory_to).
+ """
+ result = []
+ for (interversionedfile_class,
+ versionedfile_factory,
+ versionedfile_factory_to) in formats:
+ scenario = (interversionedfile_class.__name__, {
+ "transport_server":self._transport_server,
+ "transport_readonly_server":self._transport_readonly_server,
+ "interversionedfile_class":interversionedfile_class,
+ "versionedfile_factory":versionedfile_factory,
+ "versionedfile_factory_to":versionedfile_factory_to,
+ })
+ result.append(scenario)
+ return result
+
+ @staticmethod
+ def default_test_list():
+ """Generate the default list of interversionedfile permutations to test."""
+ from bzrlib.versionedfile import InterVersionedFile
+ from bzrlib.weave import WeaveFile
+ from bzrlib.knit import KnitVersionedFile
+ result = []
+ # test the fallback InterVersionedFile from annotated knits to weave
+ result.append((InterVersionedFile,
+ KnitVersionedFile,
+ WeaveFile))
+ for optimiser in InterVersionedFile._optimisers:
+ result.append((optimiser,
+ optimiser._matching_file_from_factory,
+ optimiser._matching_file_to_factory
+ ))
+ # if there are specific combinations we want to use, we can add them
+ # here.
+ return result
+
+
def test_suite():
result = TestSuite()
test_interversionedfile_implementations = [
=== modified file 'bzrlib/tests/test_selftest.py'
--- a/bzrlib/tests/test_selftest.py 2007-06-28 06:01:18 +0000
+++ b/bzrlib/tests/test_selftest.py 2007-06-28 06:16:19 +0000
@@ -384,26 +384,26 @@
def test_adapted_tests(self):
# check that constructor parameters are passed through to the adapted
# test.
- from bzrlib.versionedfile import InterVersionedFileTestProviderAdapter
- input_test = TestInterRepositoryProviderAdapter(
- "test_adapted_tests")
+ from bzrlib.tests.interversionedfile_implementations \
+ import InterVersionedFileTestProviderAdapter
server1 = "a"
server2 = "b"
formats = [(str, "C1", "C2"), (int, "D1", "D2")]
adapter = InterVersionedFileTestProviderAdapter(server1, server2, formats)
- suite = adapter.adapt(input_test)
- tests = list(iter(suite))
- self.assertEqual(2, len(tests))
- self.assertEqual(tests[0].interversionedfile_class, formats[0][0])
- self.assertEqual(tests[0].versionedfile_factory, formats[0][1])
- self.assertEqual(tests[0].versionedfile_factory_to, formats[0][2])
- self.assertEqual(tests[0].transport_server, server1)
- self.assertEqual(tests[0].transport_readonly_server, server2)
- self.assertEqual(tests[1].interversionedfile_class, formats[1][0])
- self.assertEqual(tests[1].versionedfile_factory, formats[1][1])
- self.assertEqual(tests[1].versionedfile_factory_to, formats[1][2])
- self.assertEqual(tests[1].transport_server, server1)
- self.assertEqual(tests[1].transport_readonly_server, server2)
+ self.assertEqual([
+ ('str',
+ {'interversionedfile_class':str,
+ 'transport_readonly_server': 'b',
+ 'transport_server': 'a',
+ 'versionedfile_factory': 'C1',
+ 'versionedfile_factory_to': 'C2'}),
+ ('int',
+ {'interversionedfile_class': int,
+ 'transport_readonly_server': 'b',
+ 'transport_server': 'a',
+ 'versionedfile_factory': 'D1',
+ 'versionedfile_factory_to': 'D2'})],
+ adapter.scenarios)
class TestRevisionStoreProviderAdapter(TestCase):
=== modified file 'bzrlib/versionedfile.py'
--- a/bzrlib/versionedfile.py 2007-06-21 02:33:43 +0000
+++ b/bzrlib/versionedfile.py 2007-06-28 06:16:19 +0000
@@ -21,8 +21,6 @@
from bzrlib.lazy_import import lazy_import
lazy_import(globals(), """
-from copy import deepcopy
-import unittest
from bzrlib import (
errors,
@@ -684,55 +682,3 @@
else:
new_version_ids.add(version)
return new_version_ids
-
-
-class InterVersionedFileTestProviderAdapter(object):
- """A tool to generate a suite testing multiple inter versioned-file classes.
-
- This is done by copying the test once for each InterVersionedFile provider
- and injecting the transport_server, transport_readonly_server,
- versionedfile_factory and versionedfile_factory_to 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):
- self._transport_server = transport_server
- self._transport_readonly_server = transport_readonly_server
- self._formats = formats
-
- def adapt(self, test):
- result = unittest.TestSuite()
- for (interversionedfile_class,
- versionedfile_factory,
- versionedfile_factory_to) in self._formats:
- new_test = deepcopy(test)
- new_test.transport_server = self._transport_server
- new_test.transport_readonly_server = self._transport_readonly_server
- new_test.interversionedfile_class = interversionedfile_class
- new_test.versionedfile_factory = versionedfile_factory
- new_test.versionedfile_factory_to = versionedfile_factory_to
- def make_new_test_id():
- new_id = "%s(%s)" % (new_test.id(), interversionedfile_class.__name__)
- return lambda: new_id
- new_test.id = make_new_test_id()
- result.addTest(new_test)
- return result
-
- @staticmethod
- def default_test_list():
- """Generate the default list of interversionedfile permutations to test."""
- from bzrlib.weave import WeaveFile
- from bzrlib.knit import KnitVersionedFile
- result = []
- # test the fallback InterVersionedFile from annotated knits to weave
- result.append((InterVersionedFile,
- KnitVersionedFile,
- WeaveFile))
- for optimiser in InterVersionedFile._optimisers:
- result.append((optimiser,
- optimiser._matching_file_from_factory,
- optimiser._matching_file_to_factory
- ))
- # if there are specific combinations we want to use, we can add them
- # here.
- return result
More information about the bazaar-commits
mailing list