/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/branch_implementations/__init__.py

merge bzr.dev rev 4098

Show diffs side-by-side

added added

removed removed

Lines of Context:
42
42
from bzrlib.transport.memory import MemoryServer
43
43
 
44
44
 
45
 
class BranchTestProviderAdapter(tests.TestScenarioApplier):
46
 
    """A tool to generate a suite testing multiple branch formats at once.
 
45
def make_scenarios(transport_server, transport_readonly_server,
 
46
    formats, vfs_transport_factory=None, name_suffix=''):
 
47
    """Transform the input formats to a list of scenarios.
47
48
 
48
 
    This is done by copying the test once for each transport and injecting
49
 
    the transport_server, transport_readonly_server, and branch_format
50
 
    classes into each copy. Each copy is also given a new id() to make it
51
 
    easy to identify.
 
49
    :param formats: A list of (branch_format, bzrdir_format).
52
50
    """
53
 
 
54
 
    def __init__(self, transport_server, transport_readonly_server, formats,
55
 
        vfs_transport_factory=None, name_suffix=''):
56
 
        self._transport_server = transport_server
57
 
        self._transport_readonly_server = transport_readonly_server
58
 
        self._name_suffix = name_suffix
59
 
        self.scenarios = self.formats_to_scenarios(formats)
60
 
 
61
 
    def formats_to_scenarios(self, formats):
62
 
        """Transform the input formats to a list of scenarios.
63
 
 
64
 
        :param formats: A list of (branch_format, bzrdir_format).
65
 
        """
66
 
        result = []
67
 
        for branch_format, bzrdir_format in formats:
68
 
            # some branches don't have separate format objects.
69
 
            # so we have a conditional here to handle them.
70
 
            scenario_name = getattr(branch_format, '__name__',
71
 
                branch_format.__class__.__name__)
72
 
            scenario_name += self._name_suffix
73
 
            scenario = (scenario_name, {
74
 
                "transport_server":self._transport_server,
75
 
                "transport_readonly_server":self._transport_readonly_server,
76
 
                "bzrdir_format":bzrdir_format,
77
 
                "branch_format":branch_format,
78
 
                    })
79
 
            result.append(scenario)
80
 
        return result
 
51
    result = []
 
52
    for branch_format, bzrdir_format in formats:
 
53
        # some branches don't have separate format objects.
 
54
        # so we have a conditional here to handle them.
 
55
        scenario_name = getattr(branch_format, '__name__',
 
56
            branch_format.__class__.__name__)
 
57
        scenario_name += name_suffix
 
58
        scenario = (scenario_name, {
 
59
            "transport_server":transport_server,
 
60
            "transport_readonly_server":transport_readonly_server,
 
61
            "bzrdir_format":bzrdir_format,
 
62
            "branch_format":branch_format,
 
63
                })
 
64
        result.append(scenario)
 
65
    return result
81
66
 
82
67
 
83
68
class TestCaseWithBranch(TestCaseWithBzrDir):
84
 
    """This helper will be adapted for each branch_implementation test."""
 
69
    """This helper will be parameterised in each branch_implementation test."""
85
70
 
86
71
    def setUp(self):
87
72
        super(TestCaseWithBranch, self).setUp()
145
130
        return tree
146
131
 
147
132
 
148
 
def load_tests(basic_tests, module, loader):
149
 
    result = loader.suiteClass()
150
 
    # add the tests for this module
151
 
    result.addTests(basic_tests)
152
 
 
 
133
def load_tests(standard_tests, module, loader):
153
134
    test_branch_implementations = [
154
135
        'bzrlib.tests.branch_implementations.test_bound_sftp',
155
136
        'bzrlib.tests.branch_implementations.test_branch',
156
137
        'bzrlib.tests.branch_implementations.test_break_lock',
157
138
        'bzrlib.tests.branch_implementations.test_check',
158
139
        'bzrlib.tests.branch_implementations.test_create_checkout',
 
140
        'bzrlib.tests.branch_implementations.test_create_clone',
159
141
        'bzrlib.tests.branch_implementations.test_commit',
160
142
        'bzrlib.tests.branch_implementations.test_dotted_revno_to_revision_id',
161
143
        'bzrlib.tests.branch_implementations.test_get_revision_id_to_revno_map',
178
160
        'bzrlib.tests.branch_implementations.test_uncommit',
179
161
        'bzrlib.tests.branch_implementations.test_update',
180
162
        ]
 
163
    sub_tests = loader.loadTestsFromModuleNames(test_branch_implementations)
181
164
    # Generate a list of branch formats and their associated bzrdir formats to
182
165
    # use.
183
166
    combinations = [(format, format._matchingbzrdir) for format in
184
167
         BranchFormat._formats.values() + _legacy_formats]
185
 
    adapter = BranchTestProviderAdapter(
 
168
    scenarios = make_scenarios(
186
169
        # None here will cause the default vfs transport server to be used.
187
170
        None,
188
171
        # None here will cause a readonly decorator to be created
189
172
        # by the TestCaseWithTransport.get_readonly_transport method.
190
173
        None,
191
174
        combinations)
192
 
    # add the tests for the sub modules
193
 
    tests.adapt_modules(test_branch_implementations, adapter, loader, result)
194
 
 
195
175
    # Add RemoteBranch tests, which need a special server.
196
176
    remote_branch_format = RemoteBranchFormat()
197
 
    adapt_to_smart_server = BranchTestProviderAdapter(
 
177
    scenarios.extend(make_scenarios(
198
178
        SmartTCPServer_for_testing,
199
179
        ReadonlySmartTCPServer_for_testing,
200
180
        [(remote_branch_format, remote_branch_format._matchingbzrdir)],
201
181
        MemoryServer,
202
 
        name_suffix='-default')
203
 
    tests.adapt_modules(test_branch_implementations,
204
 
                        adapt_to_smart_server,
205
 
                        loader,
206
 
                        result)
207
 
 
 
182
        name_suffix='-default'))
208
183
    # Also add tests for RemoteBranch with HPSS protocol v2 (i.e. bzr <1.6)
209
184
    # server.
210
 
    adapt_to_smart_server = BranchTestProviderAdapter(
 
185
    scenarios.extend(make_scenarios(
211
186
        SmartTCPServer_for_testing_v2_only,
212
187
        ReadonlySmartTCPServer_for_testing_v2_only,
213
188
        [(remote_branch_format, remote_branch_format._matchingbzrdir)],
214
189
        MemoryServer,
215
 
        name_suffix='-v2')
216
 
    tests.adapt_modules(test_branch_implementations,
217
 
                        adapt_to_smart_server,
218
 
                        loader,
219
 
                        result)
220
 
 
221
 
    return result
 
190
        name_suffix='-v2'))
 
191
    # add the tests for the sub modules
 
192
    return tests.multiply_tests(sub_tests, scenarios, standard_tests)