26
26
from bzrlib.lazy_import import lazy_import
27
27
lazy_import(globals(), """
28
from copy import deepcopy
31
28
from bzrlib import (
33
from bzrlib.trace import mutter
38
from bzrlib.trace import mutter
41
class RevisionStoreTestProviderAdapter(object):
42
"""A tool to generate a suite testing multiple repository stores.
44
This is done by copying the test once for each repository store
45
and injecting the transport_server, transport_readonly_server,
46
and revision-store-factory into each copy.
47
Each copy is also given a new id() to make it easy to identify.
50
def __init__(self, transport_server, transport_readonly_server, factories):
51
self._transport_server = transport_server
52
self._transport_readonly_server = transport_readonly_server
53
self._factories = factories
55
def adapt(self, test):
56
result = unittest.TestSuite()
57
for factory in self._factories:
58
new_test = deepcopy(test)
59
new_test.transport_server = self._transport_server
60
new_test.transport_readonly_server = self._transport_readonly_server
61
new_test.store_factory = factory
62
def make_new_test_id():
63
new_id = "%s(%s)" % (new_test.id(), factory)
65
new_test.id = make_new_test_id()
66
result.addTest(new_test)
70
def default_test_list():
71
"""Generate the default list of revision store permutations to test."""
72
from bzrlib.store.revision.text import TextRevisionStoreTestFactory
73
from bzrlib.store.revision.knit import KnitRevisionStoreFactory
75
# test the fallback InterVersionedFile from weave to annotated knits
76
result.append(TextRevisionStoreTestFactory())
77
result.append(KnitRevisionStoreFactory())
81
37
class RevisionStore(object):
82
38
"""A revision store stores revisions."""