/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/test_smart.py

  • Committer: Andrew Bennetts
  • Date: 2008-03-12 20:13:07 UTC
  • mfrom: (3267 +trunk)
  • mto: This revision was merged to the branch mainline in revision 3756.
  • Revision ID: andrew.bennetts@canonical.com-20080312201307-ngd5bynt2nvhnlb7
Merge from bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
38
38
import bzrlib.smart.bzrdir
39
39
import bzrlib.smart.branch
40
40
import bzrlib.smart.repository
 
41
from bzrlib.tests import (
 
42
    iter_suite_tests,
 
43
    split_suite_by_re,
 
44
    TestScenarioApplier,
 
45
    )
41
46
from bzrlib.util import bencode
42
47
 
43
48
 
 
49
def load_tests(standard_tests, module, loader):
 
50
    """Multiply tests version and protocol consistency."""
 
51
    # FindRepository tests.
 
52
    bzrdir_mod = bzrlib.smart.bzrdir
 
53
    applier = TestScenarioApplier()
 
54
    applier.scenarios = [
 
55
        ("find_repository", {
 
56
            "_request_class":bzrdir_mod.SmartServerRequestFindRepositoryV1}),
 
57
        ("find_repositoryV2", {
 
58
            "_request_class":bzrdir_mod.SmartServerRequestFindRepositoryV2}),
 
59
        ]
 
60
    to_adapt, result = split_suite_by_re(standard_tests,
 
61
        "TestSmartServerRequestFindRepository")
 
62
    v2_only, v1_and_2 = split_suite_by_re(to_adapt,
 
63
        "_v2")
 
64
    for test in iter_suite_tests(v1_and_2):
 
65
        result.addTests(applier.adapt(test))
 
66
    del applier.scenarios[0]
 
67
    for test in iter_suite_tests(v2_only):
 
68
        result.addTests(applier.adapt(test))
 
69
    return result
 
70
 
 
71
 
44
72
class TestCaseWithSmartMedium(tests.TestCaseWithTransport):
45
73
 
46
74
    def setUp(self):
77
105
    def test_no_repository(self):
78
106
        """When there is no repository to be found, ('norepository', ) is returned."""
79
107
        backing = self.get_transport()
80
 
        request = smart.bzrdir.SmartServerRequestFindRepository(backing)
 
108
        request = self._request_class(backing)
81
109
        self.make_bzrdir('.')
82
110
        self.assertEqual(SmartServerResponse(('norepository', )),
83
111
            request.execute(backing.local_abspath('')))
87
115
        # path the repository is being searched on is the same as that that 
88
116
        # the repository is at.
89
117
        backing = self.get_transport()
90
 
        request = smart.bzrdir.SmartServerRequestFindRepository(backing)
 
118
        request = self._request_class(backing)
91
119
        result = self._make_repository_and_result()
92
120
        self.assertEqual(result, request.execute(backing.local_abspath('')))
93
121
        self.make_bzrdir('subdir')
108
136
            subtrees = 'yes'
109
137
        else:
110
138
            subtrees = 'no'
111
 
        return SmartServerResponse(('ok', '', rich_root, subtrees))
 
139
        if (smart.bzrdir.SmartServerRequestFindRepositoryV2 ==
 
140
            self._request_class):
 
141
            # All tests so far are on formats, and for non-external
 
142
            # repositories.
 
143
            return SuccessfulSmartServerResponse(
 
144
                ('ok', '', rich_root, subtrees, 'no'))
 
145
        else:
 
146
            return SuccessfulSmartServerResponse(('ok', '', rich_root, subtrees))
112
147
 
113
148
    def test_shared_repository(self):
114
149
        """When there is a shared repository, we get 'ok', 'relpath-to-repo'."""
115
150
        backing = self.get_transport()
116
 
        request = smart.bzrdir.SmartServerRequestFindRepository(backing)
 
151
        request = self._request_class(backing)
117
152
        result = self._make_repository_and_result(shared=True)
118
153
        self.assertEqual(result, request.execute(backing.local_abspath('')))
119
154
        self.make_bzrdir('subdir')
128
163
    def test_rich_root_and_subtree_encoding(self):
129
164
        """Test for the format attributes for rich root and subtree support."""
130
165
        backing = self.get_transport()
131
 
        request = smart.bzrdir.SmartServerRequestFindRepository(backing)
 
166
        request = self._request_class(backing)
132
167
        result = self._make_repository_and_result(format='dirstate-with-subtree')
133
168
        # check the test will be valid
134
169
        self.assertEqual('yes', result.args[2])
135
170
        self.assertEqual('yes', result.args[3])
136
171
        self.assertEqual(result, request.execute(backing.local_abspath('')))
137
172
 
 
173
    def test_supports_external_lookups_no_v2(self):
 
174
        """Test for the supports_external_lookups attribute."""
 
175
        backing = self.get_transport()
 
176
        request = self._request_class(backing)
 
177
        result = self._make_repository_and_result(format='dirstate-with-subtree')
 
178
        # check the test will be valid
 
179
        self.assertEqual('no', result.args[4])
 
180
        self.assertEqual(result, request.execute(backing.local_abspath('')))
 
181
 
138
182
 
139
183
class TestSmartServerRequestInitializeBzrDir(tests.TestCaseWithTransport):
140
184
 
922
966
            smart.branch.SmartServerBranchRequestUnlock)
923
967
        self.assertEqual(
924
968
            smart.request.request_handlers.get('BzrDir.find_repository'),
925
 
            smart.bzrdir.SmartServerRequestFindRepository)
 
969
            smart.bzrdir.SmartServerRequestFindRepositoryV1)
 
970
        self.assertEqual(
 
971
            smart.request.request_handlers.get('BzrDir.find_repositoryV2'),
 
972
            smart.bzrdir.SmartServerRequestFindRepositoryV2)
926
973
        self.assertEqual(
927
974
            smart.request.request_handlers.get('BzrDirFormat.initialize'),
928
975
            smart.bzrdir.SmartServerRequestInitializeBzrDir)