24
24
rather than in tests/interversionedfile_implementations/*.py.
27
from bzrlib.versionedfile import InterVersionedFileTestProviderAdapter
29
27
from bzrlib.tests import (
36
class InterVersionedFileTestProviderAdapter(TestScenarioApplier):
37
"""A tool to generate a suite testing multiple inter versioned-file classes.
39
This is done by copying the test once for each InterVersionedFile provider
40
and injecting the transport_server, transport_readonly_server,
41
versionedfile_factory and versionedfile_factory_to classes into each copy.
42
Each copy is also given a new id() to make it easy to identify.
45
def __init__(self, transport_server, transport_readonly_server, formats):
46
self._transport_server = transport_server
47
self._transport_readonly_server = transport_readonly_server
48
self.scenarios = self.formats_to_scenarios(formats)
50
def formats_to_scenarios(self, formats):
51
"""Transform the input formats to a list of scenarios.
53
:param formats: A list of tuples:
54
(interversionedfile_class, versionedfile_factory,
55
versionedfile_factory_to).
58
for (interversionedfile_class,
59
versionedfile_factory,
60
versionedfile_factory_to) in formats:
61
scenario = (interversionedfile_class.__name__, {
62
"transport_server":self._transport_server,
63
"transport_readonly_server":self._transport_readonly_server,
64
"interversionedfile_class":interversionedfile_class,
65
"versionedfile_factory":versionedfile_factory,
66
"versionedfile_factory_to":versionedfile_factory_to,
68
result.append(scenario)
72
def default_test_list():
73
"""Generate the default list of interversionedfile permutations to test."""
74
from bzrlib.versionedfile import InterVersionedFile
75
from bzrlib.weave import WeaveFile
76
from bzrlib.knit import KnitVersionedFile
78
# test the fallback InterVersionedFile from annotated knits to weave
79
result.append((InterVersionedFile,
82
for optimiser in InterVersionedFile._optimisers:
83
result.append((optimiser,
84
optimiser._matching_file_from_factory,
85
optimiser._matching_file_to_factory
87
# if there are specific combinations we want to use, we can add them
38
93
result = TestSuite()
39
94
test_interversionedfile_implementations = [