/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

  • Committer: Andrew Bennetts
  • Date: 2009-03-10 04:57:28 UTC
  • mfrom: (4102 +trunk)
  • mto: This revision was merged to the branch mainline in revision 4105.
  • Revision ID: andrew.bennetts@canonical.com-20090310045728-ty6iymi18247i2pl
Merge bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
"""Branch implementation tests for bzr.
21
21
 
22
22
These test the conformance of all the branch variations to the expected API.
23
 
Specific tests for individual formats are in the tests/test_branch file 
 
23
Specific tests for individual formats are in the tests/test_branch file
24
24
rather than in tests/branch_implementations/*.py.
25
25
"""
26
26
 
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
 
    combinations = [(format, format._matchingbzrdir) for format in 
 
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)