36
36
# eg 'file:///foo' on Unix, or 'file:///C:/foo' on Windows
37
37
base = urlutils.local_path_to_url('/foo')
39
def look_up(self, name, url):
39
def look_up(self, name, url, purpose=None):
40
40
return self.base + name
55
55
def test_dereference(self):
56
56
self.assertEqual(FooService.base + 'bar',
57
57
self.registry.dereference('foo:bar'))
58
self.assertEqual(FooService.base + 'bar',
59
self.registry.dereference('foo:bar', purpose='write'))
58
60
self.assertEqual('baz:qux', self.registry.dereference('baz:qux'))
63
self.registry.dereference('baz:qux', purpose='write'))
60
65
def test_get_transport(self):
61
66
directories.register('foo:', FooService, 'Map foo URLs to http urls')
64
69
transport.get_transport('foo:bar').base)
72
class OldService(object):
73
"""A directory service that maps the name to a FILE url"""
75
# eg 'file:///foo' on Unix, or 'file:///C:/foo' on Windows
76
base = urlutils.local_path_to_url('/foo')
78
def look_up(self, name, url):
79
return self.base + name
82
class TestOldDirectoryLookup(TestCase):
83
"""Test compatibility with older implementations of Directory
84
that don't support the purpose argument."""
87
super(TestOldDirectoryLookup, self).setUp()
88
self.registry = DirectoryServiceRegistry()
89
self.registry.register('old:', OldService, 'Map foo URLs to http urls')
91
def test_dereference(self):
92
self.assertEqual(OldService.base + 'bar',
93
self.registry.dereference('old:bar'))
94
self.assertEqual(OldService.base + 'bar',
95
self.registry.dereference('old:bar', purpose='write'))
96
self.assertEqual('baz:qux', self.registry.dereference('baz:qux'))
99
self.registry.dereference('baz:qux', purpose='write'))
67
102
class TestAliasDirectory(TestCaseWithTransport):
77
112
def test_lookup_parent(self):
78
113
self.assertAliasFromBranch(self.branch.set_parent, 'http://a',
81
116
def test_lookup_submit(self):
82
117
self.assertAliasFromBranch(self.branch.set_submit_branch, 'http://b',
115
150
def test_register_location_alias(self):
116
151
self.addCleanup(AliasDirectory.branch_aliases.remove, "booga")
117
152
AliasDirectory.branch_aliases.register("booga",
118
lambda b: "UHH?", help="Nobody knows")
153
lambda b: "UHH?", help="Nobody knows")
119
154
self.assertEqual("UHH?", directories.dereference(":booga"))
124
159
def test_lookup_non_default(self):
125
160
default = self.make_branch('.')
126
161
non_default = default.controldir.create_branch(name='nondefault')
127
self.assertEqual(non_default.base, directories.dereference('co:nondefault'))
162
self.assertEqual(non_default.base,
163
directories.dereference('co:nondefault'))
129
165
def test_lookup_default(self):
130
166
default = self.make_branch('.')
131
167
non_default = default.controldir.create_branch(name='nondefault')
132
168
self.assertEqual(urlutils.join_segment_parameters(default.controldir.user_url,
133
{"branch": ""}), directories.dereference('co:'))
169
{"branch": ""}), directories.dereference('co:'))
135
171
def test_no_such_branch(self):
136
172
# No error is raised in this case, that is up to the code that actually
137
173
# opens the branch.
138
174
default = self.make_branch('.')
139
175
self.assertEqual(urlutils.join_segment_parameters(default.controldir.user_url,
140
{"branch": "foo"}), directories.dereference('co:foo'))
176
{"branch": "foo"}), directories.dereference('co:foo'))