2772
2771
# and not independently creatable, so are not registered.
2773
2772
_legacy_formats = [WorkingTreeFormat2(),
2777
class WorkingTreeTestProviderAdapter(object):
2778
"""A tool to generate a suite testing multiple workingtree formats at once.
2780
This is done by copying the test once for each transport and injecting
2781
the transport_server, transport_readonly_server, and workingtree_format
2782
classes into each copy. Each copy is also given a new id() to make it
2786
def __init__(self, transport_server, transport_readonly_server, formats):
2787
self._transport_server = transport_server
2788
self._transport_readonly_server = transport_readonly_server
2789
self._formats = formats
2791
def _clone_test(self, test, bzrdir_format, workingtree_format, variation):
2792
"""Clone test for adaption."""
2793
new_test = deepcopy(test)
2794
new_test.transport_server = self._transport_server
2795
new_test.transport_readonly_server = self._transport_readonly_server
2796
new_test.bzrdir_format = bzrdir_format
2797
new_test.workingtree_format = workingtree_format
2798
def make_new_test_id():
2799
new_id = "%s(%s)" % (test.id(), variation)
2800
return lambda: new_id
2801
new_test.id = make_new_test_id()
2804
def adapt(self, test):
2805
from bzrlib.tests import TestSuite
2806
result = TestSuite()
2807
for workingtree_format, bzrdir_format in self._formats:
2808
new_test = self._clone_test(
2811
workingtree_format, workingtree_format.__class__.__name__)
2812
result.addTest(new_test)