31
31
def test_describe_standalone_layout(self):
32
32
tree = self.make_branch_and_tree('tree')
33
33
self.assertEqual('Empty control directory', info.describe_layout())
35
'Unshared repository with trees and colocated branches',
36
info.describe_layout(tree.branch.repository, control=tree.bzrdir))
34
self.assertEqual('Unshared repository with trees',
35
info.describe_layout(tree.branch.repository))
37
36
tree.branch.repository.set_make_working_trees(False)
38
self.assertEqual('Unshared repository with colocated branches',
39
info.describe_layout(tree.branch.repository, control=tree.bzrdir))
37
self.assertEqual('Unshared repository',
38
info.describe_layout(tree.branch.repository))
40
39
self.assertEqual('Standalone branch',
41
info.describe_layout(tree.branch.repository, tree.branch,
40
info.describe_layout(tree.branch.repository, tree.branch))
43
41
self.assertEqual('Standalone branchless tree',
44
info.describe_layout(tree.branch.repository, None, tree,
42
info.describe_layout(tree.branch.repository, None, tree))
46
43
self.assertEqual('Standalone tree',
47
info.describe_layout(tree.branch.repository, tree.branch, tree,
44
info.describe_layout(tree.branch.repository, tree.branch, tree))
49
45
tree.branch.bind(tree.branch)
50
46
self.assertEqual('Bound branch',
51
info.describe_layout(tree.branch.repository, tree.branch,
47
info.describe_layout(tree.branch.repository, tree.branch))
53
48
self.assertEqual('Checkout',
54
info.describe_layout(tree.branch.repository, tree.branch, tree,
49
info.describe_layout(tree.branch.repository, tree.branch, tree))
56
50
checkout = tree.branch.create_checkout('checkout', lightweight=True)
57
51
self.assertEqual('Lightweight checkout',
58
52
info.describe_layout(checkout.branch.repository, checkout.branch,
59
checkout, control=tree.bzrdir))
61
55
def test_describe_repository_layout(self):
62
56
repository = self.make_repository('.', shared=True)
63
tree = controldir.ControlDir.create_branch_convenience('tree',
57
tree = bzrdir.BzrDir.create_branch_convenience('tree',
64
58
force_new_tree=True).bzrdir.open_workingtree()
65
self.assertEqual('Shared repository with trees and colocated branches',
66
info.describe_layout(tree.branch.repository, control=tree.bzrdir))
59
self.assertEqual('Shared repository with trees',
60
info.describe_layout(tree.branch.repository))
67
61
repository.set_make_working_trees(False)
68
self.assertEqual('Shared repository with colocated branches',
69
info.describe_layout(tree.branch.repository, control=tree.bzrdir))
62
self.assertEqual('Shared repository',
63
info.describe_layout(tree.branch.repository))
70
64
self.assertEqual('Repository branch',
71
info.describe_layout(tree.branch.repository, tree.branch,
65
info.describe_layout(tree.branch.repository, tree.branch))
73
66
self.assertEqual('Repository branchless tree',
74
info.describe_layout(tree.branch.repository, None, tree,
67
info.describe_layout(tree.branch.repository, None, tree))
76
68
self.assertEqual('Repository tree',
77
info.describe_layout(tree.branch.repository, tree.branch, tree,
69
info.describe_layout(tree.branch.repository, tree.branch, tree))
79
70
tree.branch.bind(tree.branch)
80
71
self.assertEqual('Repository checkout',
81
info.describe_layout(tree.branch.repository, tree.branch, tree,
72
info.describe_layout(tree.branch.repository, tree.branch, tree))
83
73
checkout = tree.branch.create_checkout('checkout', lightweight=True)
84
74
self.assertEqual('Lightweight checkout',
85
75
info.describe_layout(checkout.branch.repository, checkout.branch,
86
checkout, control=tree.bzrdir))
88
78
def assertTreeDescription(self, format):
89
79
"""Assert a tree's format description matches expectations"""
134
124
repo, None, None))
136
126
def test_describe_tree_format(self):
137
for key in controldir.format_registry.keys():
138
if key in controldir.format_registry.aliases():
127
for key in bzrdir.format_registry.keys():
128
if key in bzrdir.format_registry.aliases():
140
130
self.assertTreeDescription(key)
142
132
def test_describe_checkout_format(self):
143
for key in controldir.format_registry.keys():
144
if key in controldir.format_registry.aliases():
133
for key in bzrdir.format_registry.keys():
134
if key in bzrdir.format_registry.aliases():
145
135
# Aliases will not describe correctly in the UI because the
146
136
# real format is found.
148
138
# legacy: weave does not support checkouts
149
139
if key == 'weave':
151
if controldir.format_registry.get_info(key).experimental:
141
if bzrdir.format_registry.get_info(key).experimental:
152
142
# We don't require that experimental formats support checkouts
153
143
# or describe correctly in the UI.
155
if controldir.format_registry.get_info(key).hidden:
145
if bzrdir.format_registry.get_info(key).hidden:
158
148
if key in ('pack-0.92',):
159
149
expected = 'pack-0.92'
160
150
elif key in ('knit', 'metaweave'):
161
if 'metaweave' in controldir.format_registry:
151
if 'metaweave' in bzrdir.format_registry:
162
152
expected = 'knit or metaweave'
164
154
expected = 'knit'
196
186
expected = '1.14-rich-root'
197
187
self.assertRepoDescription(key, expected)
199
format = controldir.format_registry.make_bzrdir('knit')
189
format = bzrdir.format_registry.make_bzrdir('knit')
200
190
format.set_branch_format(_mod_branch.BzrBranchFormat6())
201
191
tree = self.make_branch_and_tree('unknown', format=format)
202
192
self.assertEqual('unnamed', info.describe_format(tree.bzrdir,
203
193
tree.branch.repository, tree.branch, tree))
205
def test_gather_location_controldir_only(self):
206
bzrdir = self.make_bzrdir('.')
207
self.assertEqual([('control directory', bzrdir.user_url)],
208
info.gather_location_info(control=bzrdir))
210
195
def test_gather_location_standalone(self):
211
196
tree = self.make_branch_and_tree('tree')
212
197
self.assertEqual([('branch root', tree.bzrdir.root_transport.base)],
213
info.gather_location_info(
214
tree.branch.repository, tree.branch, tree, control=tree.bzrdir))
198
info.gather_location_info(tree.branch.repository, tree.branch,
215
200
self.assertEqual([('branch root', tree.bzrdir.root_transport.base)],
216
info.gather_location_info(
217
tree.branch.repository, tree.branch, control=tree.bzrdir))
201
info.gather_location_info(tree.branch.repository, tree.branch))
220
204
def test_gather_location_repo(self):
221
205
srepo = self.make_repository('shared', shared=True)
223
[('shared repository', srepo.bzrdir.root_transport.base)],
224
info.gather_location_info(srepo, control=srepo.bzrdir))
206
self.assertEqual([('shared repository',
207
srepo.bzrdir.root_transport.base)],
208
info.gather_location_info(srepo))
225
209
urepo = self.make_repository('unshared')
227
[('repository', urepo.bzrdir.root_transport.base)],
228
info.gather_location_info(urepo, control=urepo.bzrdir))
210
self.assertEqual([('repository',
211
urepo.bzrdir.root_transport.base)],
212
info.gather_location_info(urepo))
230
214
def test_gather_location_repo_branch(self):
231
215
srepo = self.make_repository('shared', shared=True)
233
[('shared repository', srepo.bzrdir.root_transport.base)],
234
info.gather_location_info(srepo, control=srepo.bzrdir))
216
self.assertEqual([('shared repository',
217
srepo.bzrdir.root_transport.base)],
218
info.gather_location_info(srepo))
235
219
tree = self.make_branch_and_tree('shared/tree')
237
[('shared repository', srepo.bzrdir.root_transport.base),
238
('repository branch', tree.branch.base)],
239
info.gather_location_info(srepo, tree.branch, tree, srepo.bzrdir))
220
self.assertEqual([('shared repository',
221
srepo.bzrdir.root_transport.base),
222
('repository branch', tree.branch.base)],
223
info.gather_location_info(srepo, tree.branch, tree))
241
225
def test_gather_location_light_checkout(self):
242
226
tree = self.make_branch_and_tree('tree')
285
269
self.assertEqual(
286
270
[('branch root', bound_branch.bzrdir.root_transport.base),
287
271
('bound to branch', branch.bzrdir.root_transport.base)],
288
info.gather_location_info(
289
bound_branch.repository, bound_branch, control=bound_branch.bzrdir)
292
def test_gather_location_bound_in_repository(self):
293
repo = self.make_repository('repo', shared=True)
294
repo.set_make_working_trees(False)
295
branch = self.make_branch('branch')
296
bound_branch = controldir.ControlDir.create_branch_convenience(
298
bound_branch.bind(branch)
300
[('shared repository', bound_branch.repository.bzrdir.user_url),
301
('repository branch', bound_branch.bzrdir.user_url),
302
('bound to branch', branch.bzrdir.user_url)],
303
272
info.gather_location_info(bound_branch.repository, bound_branch)