41
46
def test_info_non_existing(self):
42
47
self.vfs_transport_factory = memory.MemoryServer
43
48
location = self.get_url()
44
out, err = self.run_bzr('info '+location, retcode=3)
49
out, err = self.run_bzr('info ' + location, retcode=3)
45
50
self.assertEqual(out, '')
46
self.assertEqual(err, 'bzr: ERROR: Not a branch: "%s".\n' % location)
51
self.assertEqual(err, 'brz: ERROR: Not a branch: "%s".\n' % location)
53
def test_info_empty_controldir(self):
54
self.make_controldir('ctrl')
55
out, err = self.run_bzr('info ctrl')
57
'Empty control directory (format: 2a)\n'
59
' control directory: ctrl\n')
60
self.assertEqual(err, '')
62
def test_info_empty_controldir_verbose(self):
63
self.make_controldir('ctrl')
64
out, err = self.run_bzr('info -v ctrl')
65
self.assertEqualDiff(out,
66
'Empty control directory (format: 2a)\n'
68
' control directory: ctrl\n\n'
70
' control: Meta directory format 1\n\n'
71
'Control directory:\n'
73
self.assertEqual(err, '')
75
def test_info_dangling_branch_reference(self):
76
br = self.make_branch('target')
77
br.create_checkout('from', lightweight=True)
78
shutil.rmtree('target')
79
out, err = self.run_bzr('info from')
81
'Dangling branch reference (format: 2a)\n'
83
' control directory: from\n'
84
' checkout of branch: target\n')
85
self.assertEqual(err, '')
87
def test_info_colocated(self):
88
br = self.make_branch_and_tree('target', format='development-colo')
89
target = br.controldir.create_branch(name='dichtbij')
90
br.controldir.set_branch_reference(target)
91
out, err = self.run_bzr('info target')
93
'Standalone tree (format: development-colo)\n'
95
' light checkout root: target\n'
96
' checkout of co-located branch: dichtbij\n')
97
self.assertEqual(err, '')
48
99
def test_info_standalone(self):
49
100
transport = self.get_transport()
51
102
# Create initial standalone branch
52
tree1 = self.make_branch_and_tree('standalone', 'weave')
103
tree1 = self.make_branch_and_tree('standalone', 'knit')
53
104
self.build_tree(['standalone/a'])
55
106
branch1 = tree1.branch
57
108
out, err = self.run_bzr('info standalone')
58
109
self.assertEqualDiff(
59
"""Standalone tree (format: weave)
110
"""Standalone tree (format: knit)
61
112
branch root: standalone
65
116
# Standalone branch - verbose mode
66
117
out, err = self.run_bzr('info standalone -v')
67
118
self.assertEqualDiff(
68
"""Standalone tree (format: weave)
119
"""Standalone tree (format: knit)
70
121
branch root: standalone
73
control: All-in-one format 6
74
working tree: Working tree format 2
75
branch: Branch format 4
76
repository: Weave repository format 6
124
control: Meta directory format 1
125
working tree: Working tree format 3
126
branch: Branch format 5
127
repository: Knit repository format 1
78
132
In the working tree:
96
150
# Standalone branch - really verbose mode
97
151
out, err = self.run_bzr('info standalone -vv')
98
152
self.assertEqualDiff(
99
"""Standalone tree (format: weave)
153
"""Standalone tree (format: knit)
101
155
branch root: standalone
104
control: All-in-one format 6
105
working tree: Working tree format 2
106
branch: Branch format 4
107
repository: Weave repository format 6
158
control: Meta directory format 1
159
working tree: Working tree format 3
160
branch: Branch format 5
161
repository: Knit repository format 1
109
166
In the working tree:
126
183
self.assertEqual('', err)
127
184
tree1.commit('commit one')
128
rev = branch1.repository.get_revision(branch1.revision_history()[0])
185
rev = branch1.repository.get_revision(branch1.last_revision())
129
186
datestring_first = osutils.format_date(rev.timestamp, rev.timezone)
131
188
# Branch standalone with push location
132
branch2 = branch1.bzrdir.sprout('branch').open_branch()
133
branch2.set_push_location(branch1.bzrdir.root_transport.base)
189
branch2 = branch1.controldir.sprout('branch').open_branch()
190
branch2.set_push_location(branch1.controldir.root_transport.base)
135
192
out, err = self.run_bzr('info branch')
136
193
self.assertEqualDiff(
137
"""Standalone tree (format: weave)
194
"""Standalone tree (format: knit)
139
196
branch root: branch
185
245
# Branch and bind to standalone, needs upgrade to metadir
186
246
# (creates backup as unknown)
187
branch1.bzrdir.sprout('bound')
188
knit1_format = bzrdir.format_registry.make_bzrdir('knit')
247
branch1.controldir.sprout('bound')
248
knit1_format = controldir.format_registry.make_controldir('knit')
189
249
upgrade.upgrade('bound', knit1_format)
190
branch3 = bzrdir.BzrDir.open('bound').open_branch()
250
branch3 = controldir.ControlDir.open('bound').open_branch()
191
251
branch3.bind(branch1)
192
bound_tree = branch3.bzrdir.open_workingtree()
252
bound_tree = branch3.controldir.open_workingtree()
193
253
out, err = self.run_bzr('info -v bound')
194
254
self.assertEqualDiff(
195
"""Checkout (format: knit)
255
"""Checkout (format: knit)
197
257
checkout root: bound
198
258
checkout of branch: standalone
227
290
""" % (bound_tree._format.get_format_description(),
228
branch3._format.get_format_description(),
229
branch3.repository._format.get_format_description(),
230
datestring_first, datestring_first,
291
branch3._format.get_format_description(),
292
branch3.repository._format.get_format_description(),
293
datestring_first, datestring_first,
232
295
self.assertEqual('', err)
234
297
# Checkout standalone (same as above, but does not have parent set)
235
branch4 = bzrdir.BzrDir.create_branch_convenience('checkout',
298
branch4 = controldir.ControlDir.create_branch_convenience('checkout',
237
300
branch4.bind(branch1)
238
branch4.bzrdir.open_workingtree().update()
301
branch4.controldir.open_workingtree().update()
239
302
out, err = self.run_bzr('info checkout --verbose')
240
303
self.assertEqualDiff(
241
"""Checkout (format: knit)
304
"""Checkout (format: knit)
243
306
checkout root: checkout
244
307
checkout of branch: standalone
276
342
tree5 = branch1.create_checkout('lightcheckout', lightweight=True)
277
343
branch5 = tree5.branch
278
344
out, err = self.run_bzr('info -v lightcheckout')
345
if "metaweave" in controldir.format_registry:
346
format_description = "knit or metaweave"
348
format_description = "knit"
279
349
self.assertEqualDiff(
280
"""Lightweight checkout (format: %s)
350
"""Lightweight checkout (format: %s)
282
352
light checkout root: lightcheckout
283
353
checkout of branch: standalone
286
356
control: Meta directory format 1
287
working tree: Working tree format 6
288
branch: Branch format 4
289
repository: Weave repository format 6
357
working tree: Working tree format 3
358
branch: Branch format 5
359
repository: Knit repository format 1
291
364
In the working tree:
309
""" % (self._repo_strings, datestring_first, datestring_first,), out)
382
""" % (format_description, datestring_first, datestring_first,), out)
310
383
self.assertEqual('', err)
312
385
# Update initial standalone branch
313
386
self.build_tree(['standalone/b'])
315
388
tree1.commit('commit two')
316
rev = branch1.repository.get_revision(branch1.revision_history()[-1])
389
rev = branch1.repository.get_revision(branch1.last_revision())
317
390
datestring_last = osutils.format_date(rev.timestamp, rev.timezone)
319
392
# Out of date branched standalone branch will not be detected
320
393
out, err = self.run_bzr('info -v branch')
321
394
self.assertEqualDiff(
322
"""Standalone tree (format: weave)
395
"""Standalone tree (format: knit)
324
397
branch root: branch
395
474
""" % (branch3.repository._format.get_format_description(),
396
datestring_first, datestring_first,
475
datestring_first, datestring_first,
398
477
self.assertEqual('', err)
400
479
# Out of date checkout
401
480
out, err = self.run_bzr('info -v checkout')
402
481
self.assertEqualDiff(
403
"""Checkout (format: knit)
482
"""Checkout (format: knit)
405
484
checkout root: checkout
406
485
checkout of branch: standalone
434
516
""" % (branch4.repository._format.get_format_description(),
435
datestring_first, datestring_first,
517
datestring_first, datestring_first,
437
519
self.assertEqual('', err)
439
521
# Out of date lightweight checkout
440
522
out, err = self.run_bzr('info lightcheckout --verbose')
441
523
self.assertEqualDiff(
442
"""Lightweight checkout (format: %s)
524
"""Lightweight checkout (format: %s)
444
526
light checkout root: lightcheckout
445
527
checkout of branch: standalone
448
530
control: Meta directory format 1
449
working tree: Working tree format 6
450
branch: Branch format 4
451
repository: Weave repository format 6
531
working tree: Working tree format 3
532
branch: Branch format 5
533
repository: Knit repository format 1
453
538
Working tree is out of date: missing 1 revision.
473
""" % (self._repo_strings, datestring_first, datestring_last,), out)
558
""" % (format_description, datestring_first, datestring_last,), out)
474
559
self.assertEqual('', err)
476
561
def test_info_standalone_no_tree(self):
477
562
# create standalone branch without a working tree
478
format = bzrdir.format_registry.make_bzrdir('default')
563
format = controldir.format_registry.make_controldir('default')
479
564
branch = self.make_branch('branch')
480
565
repo = branch.repository
481
566
out, err = self.run_bzr('info branch -v')
482
567
self.assertEqualDiff(
483
"""Standalone branch (format: %s)
568
"""Standalone branch (format: %s)
485
570
branch root: branch
497
""" % (info.describe_format(repo.bzrdir, repo, branch, None),
498
format.get_branch_format().get_format_description(),
499
format.repository_format.get_format_description(),
585
""" % (info.describe_format(repo.controldir, repo, branch, None),
586
format.get_branch_format().get_format_description(),
587
format.repository_format.get_format_description(),
501
589
self.assertEqual('', err)
503
591
def test_info_shared_repository(self):
504
format = bzrdir.format_registry.make_bzrdir('knit')
592
format = controldir.format_registry.make_controldir('knit')
505
593
transport = self.get_transport()
507
595
# Create shared repository
524
615
self.assertEqual('', err)
526
617
# Create branch inside shared repository
527
repo.bzrdir.root_transport.mkdir('branch')
528
branch1 = repo.bzrdir.create_branch_convenience('repo/branch',
618
repo.controldir.root_transport.mkdir('branch')
619
branch1 = controldir.ControlDir.create_branch_convenience(
620
'repo/branch', format=format)
530
621
out, err = self.run_bzr('info -v repo/branch')
531
622
self.assertEqualDiff(
532
"""Repository branch (format: dirstate or knit)
623
"""Repository branch (format: dirstate or knit)
534
625
shared repository: repo
535
626
repository branch: repo/branch
553
647
transport.mkdir('tree')
554
648
transport.mkdir('tree/lightcheckout')
555
649
tree2 = branch1.create_checkout('tree/lightcheckout',
557
651
branch2 = tree2.branch
558
652
self.assertCheckoutStatusOutput('-v tree/lightcheckout', tree2,
559
shared_repo=repo, repo_branch=branch1, verbose=True)
653
shared_repo=repo, repo_branch=branch1, verbose=True)
561
655
# Create normal checkout
562
656
tree3 = branch1.create_checkout('tree/checkout')
563
657
self.assertCheckoutStatusOutput('tree/checkout --verbose', tree3,
565
light_checkout=False, repo_branch=branch1)
659
light_checkout=False, repo_branch=branch1)
566
660
# Update lightweight checkout
567
661
self.build_tree(['tree/lightcheckout/a'])
569
663
tree2.commit('commit one')
570
rev = repo.get_revision(branch2.revision_history()[0])
664
rev = repo.get_revision(branch2.last_revision())
571
665
datestring_first = osutils.format_date(rev.timestamp, rev.timezone)
572
666
out, err = self.run_bzr('info tree/lightcheckout --verbose')
573
667
self.assertEqualDiff(
574
"""Lightweight checkout (format: %s)
668
"""Lightweight checkout (format: %s)
576
670
light checkout root: tree/lightcheckout
577
671
checkout of branch: repo/branch
604
701
""" % (self._repo_strings, format.get_branch_format().get_format_description(),
605
format.repository_format.get_format_description(),
606
datestring_first, datestring_first,
702
format.repository_format.get_format_description(),
703
datestring_first, datestring_first,
608
705
self.assertEqual('', err)
610
707
# Out of date checkout
611
708
out, err = self.run_bzr('info -v tree/checkout')
612
709
self.assertEqualDiff(
613
"""Checkout (format: unnamed)
710
"""Checkout (format: unnamed)
615
712
checkout root: tree/checkout
616
713
checkout of branch: repo/branch
681
784
""" % (format.get_branch_format().get_format_description(),
682
format.repository_format.get_format_description(),
683
datestring_first, datestring_first,
785
format.repository_format.get_format_description(),
786
datestring_first, datestring_first,
685
788
self.assertEqual('', err)
686
789
tree3.commit('commit two')
688
791
# Out of date lightweight checkout
689
rev = repo.get_revision(branch1.revision_history()[-1])
792
rev = repo.get_revision(branch1.last_revision())
690
793
datestring_last = osutils.format_date(rev.timestamp, rev.timezone)
691
794
out, err = self.run_bzr('info tree/lightcheckout --verbose')
692
795
self.assertEqualDiff(
693
"""Lightweight checkout (format: %s)
796
"""Lightweight checkout (format: %s)
695
798
light checkout root: tree/lightcheckout
696
799
checkout of branch: repo/branch
725
831
""" % (self._repo_strings, format.get_branch_format().get_format_description(),
726
format.repository_format.get_format_description(),
727
datestring_first, datestring_last,
832
format.repository_format.get_format_description(),
833
datestring_first, datestring_last,
729
835
self.assertEqual('', err)
731
837
# Show info about shared branch
732
838
out, err = self.run_bzr('info repo/branch --verbose')
733
839
self.assertEqualDiff(
734
"""Repository branch (format: dirstate or knit)
840
"""Repository branch (format: dirstate or knit)
736
842
shared repository: repo
737
843
repository branch: repo/branch
752
861
""" % (format.get_branch_format().get_format_description(),
753
format.repository_format.get_format_description(),
754
datestring_first, datestring_last,
862
format.repository_format.get_format_description(),
863
datestring_first, datestring_last,
756
865
self.assertEqual('', err)
758
867
# Show info about repository with revisions
759
868
out, err = self.run_bzr('info -v repo')
760
869
self.assertEqualDiff(
761
"""Shared repository (format: dirstate or dirstate-tags or knit)
870
"""Shared repository (format: dirstate or dirstate-tags or knit)
763
872
shared repository: repo
798
913
self.assertEqual('', err)
800
915
# Create two branches
801
repo.bzrdir.root_transport.mkdir('branch1')
802
branch1 = repo.bzrdir.create_branch_convenience('repo/branch1',
804
branch2 = branch1.bzrdir.sprout('repo/branch2').open_branch()
916
repo.controldir.root_transport.mkdir('branch1')
917
branch1 = controldir.ControlDir.create_branch_convenience('repo/branch1',
919
branch2 = branch1.controldir.sprout('repo/branch2').open_branch()
806
921
# Empty first branch
807
922
out, err = self.run_bzr('info repo/branch1 --verbose')
808
923
self.assertEqualDiff(
809
"""Repository tree (format: knit)
924
"""Repository tree (format: knit)
811
926
shared repository: repo
812
927
repository branch: repo/branch1
835
953
""" % (format.get_branch_format().get_format_description(),
836
format.repository_format.get_format_description(),
954
format.repository_format.get_format_description(),
838
956
self.assertEqual('', err)
840
958
# Update first branch
841
959
self.build_tree(['repo/branch1/a'])
842
tree1 = branch1.bzrdir.open_workingtree()
960
tree1 = branch1.controldir.open_workingtree()
844
962
tree1.commit('commit one')
845
rev = repo.get_revision(branch1.revision_history()[0])
963
rev = repo.get_revision(branch1.last_revision())
846
964
datestring_first = osutils.format_date(rev.timestamp, rev.timezone)
847
965
out, err = self.run_bzr('info -v repo/branch1')
848
966
self.assertEqualDiff(
849
"""Repository tree (format: knit)
967
"""Repository tree (format: knit)
851
969
shared repository: repo
852
970
repository branch: repo/branch1
878
999
""" % (format.get_branch_format().get_format_description(),
879
format.repository_format.get_format_description(),
880
datestring_first, datestring_first,
1000
format.repository_format.get_format_description(),
1001
datestring_first, datestring_first,
882
1003
self.assertEqual('', err)
884
1005
# Out of date second branch
885
1006
out, err = self.run_bzr('info repo/branch2 --verbose')
886
1007
self.assertEqualDiff(
887
"""Repository tree (format: knit)
1008
"""Repository tree (format: knit)
889
1010
shared repository: repo
890
1011
repository branch: repo/branch2
916
1040
""" % (format.get_branch_format().get_format_description(),
917
format.repository_format.get_format_description(),
1041
format.repository_format.get_format_description(),
919
1043
self.assertEqual('', err)
921
1045
# Update second branch
922
tree2 = branch2.bzrdir.open_workingtree()
1046
tree2 = branch2.controldir.open_workingtree()
923
1047
tree2.pull(branch1)
924
1048
out, err = self.run_bzr('info -v repo/branch2')
925
1049
self.assertEqualDiff(
926
"""Repository tree (format: knit)
1050
"""Repository tree (format: knit)
928
1052
shared repository: repo
929
1053
repository branch: repo/branch2
958
1085
""" % (format.get_branch_format().get_format_description(),
959
format.repository_format.get_format_description(),
960
datestring_first, datestring_first,
1086
format.repository_format.get_format_description(),
1087
datestring_first, datestring_first,
962
1089
self.assertEqual('', err)
964
1091
# Show info about repository with revisions
965
1092
out, err = self.run_bzr('info -v repo')
966
1093
self.assertEqualDiff(
967
"""Shared repository with trees (format: dirstate or dirstate-tags or knit)
1094
"""Shared repository with trees (format: dirstate or dirstate-tags or knit)
969
1096
shared repository: repo
972
1099
control: Meta directory format 1
975
1105
Create working tree for new branches inside the repository.
979
1109
""" % (format.repository_format.get_format_description(),
982
1112
self.assertEqual('', err)
984
1114
def test_info_shared_repository_with_tree_in_root(self):
985
format = bzrdir.format_registry.make_bzrdir('knit')
1115
format = controldir.format_registry.make_controldir('knit')
986
1116
transport = self.get_transport()
988
1118
# Create shared repository with working trees
1041
1177
""" % (format.get_branch_format().get_format_description(),
1042
format.repository_format.get_format_description(),
1178
format.repository_format.get_format_description(),
1044
1180
self.assertEqual('', err)
1046
1182
def test_info_repository_hook(self):
1047
format = bzrdir.format_registry.make_bzrdir('knit')
1183
format = controldir.format_registry.make_controldir('knit')
1048
1185
def repo_info(repo, stats, outf):
1049
outf.write("more info\n")
1186
outf.write(u"more info\n")
1050
1187
info.hooks.install_named_hook('repository', repo_info, None)
1051
1188
# Create shared repository with working trees
1052
1189
repo = self.make_repository('repo', shared=True, format=format)
1053
1190
out, err = self.run_bzr('info -v repo')
1054
1191
self.assertEqualDiff(
1055
"""Shared repository with trees (format: dirstate or dirstate-tags or knit)
1192
"""Shared repository with trees (format: dirstate or dirstate-tags or knit)
1057
1194
shared repository: repo
1070
1210
self.assertEqual('', err)
1212
def test_info_unshared_repository_with_colocated_branches(self):
1213
format = controldir.format_registry.make_controldir('development-colo')
1214
transport = self.get_transport()
1216
# Create unshared repository
1217
repo = self.make_repository('repo', shared=False, format=format)
1218
repo.set_make_working_trees(True)
1219
repo.controldir.create_branch(name='foo')
1220
out, err = self.run_bzr('info repo')
1221
self.assertEqualDiff(
1222
"""Unshared repository with trees and colocated branches (format: development-colo)
1226
self.assertEqual('', err)
1072
1228
def assertCheckoutStatusOutput(self,
1073
command_string, lco_tree, shared_repo=None,
1076
branch_locked=False, repo_locked=False,
1078
light_checkout=True,
1079
checkout_root=None):
1229
command_string, lco_tree, shared_repo=None,
1232
branch_locked=False, repo_locked=False,
1234
light_checkout=True,
1235
checkout_root=None):
1080
1236
"""Check the output of info in a checkout.
1082
1238
This is not quite a mirror of the info code: rather than using the
1113
1269
# in the different process -- either on win32 or on linux).
1114
1270
# This should be removed when the locking errors are fixed.
1115
1271
self.expectFailure('OS locks are exclusive '
1116
'for different processes (Bug #174055)',
1117
self.run_bzr_subprocess,
1118
'info ' + command_string)
1272
'for different processes (Bug #174055)',
1273
self.run_bzr_subprocess,
1274
'info ' + command_string)
1119
1275
out, err = self.run_bzr('info %s' % command_string)
1120
1276
description = {
1121
1277
(True, True): 'Lightweight checkout',
1148
1304
extra_space = ''
1149
1305
if light_checkout:
1150
1306
tree_data = (" light checkout root: %s\n" %
1151
friendly_location(lco_tree.bzrdir.root_transport.base))
1307
friendly_location(lco_tree.controldir.root_transport.base))
1152
1308
extra_space = ' '
1153
1309
if lco_tree.branch.get_bound_location() is not None:
1154
1310
tree_data += ("%s checkout root: %s\n" % (extra_space,
1155
friendly_location(lco_tree.branch.bzrdir.root_transport.base)))
1311
friendly_location(lco_tree.branch.controldir.root_transport.base)))
1156
1312
if shared_repo is not None:
1157
1313
branch_data = (
1158
1314
" checkout of branch: %s\n"
1159
1315
" shared repository: %s\n" %
1160
(friendly_location(repo_branch.bzrdir.root_transport.base),
1161
friendly_location(shared_repo.bzrdir.root_transport.base)))
1316
(friendly_location(repo_branch.controldir.root_transport.base),
1317
friendly_location(shared_repo.controldir.root_transport.base)))
1162
1318
elif repo_branch is not None:
1163
1319
branch_data = (
1164
1320
"%s checkout of branch: %s\n" %
1166
friendly_location(repo_branch.bzrdir.root_transport.base)))
1322
friendly_location(repo_branch.controldir.root_transport.base)))
1168
1324
branch_data = (" checkout of branch: %s\n" %
1169
lco_tree.branch.bzrdir.root_transport.base)
1325
lco_tree.branch.controldir.root_transport.base)
1171
1327
if verbose >= 2:
1172
1328
verbose_info = ' 0 committers\n'
1205
lco_tree._format.get_format_description(),
1206
lco_tree.branch._format.get_format_description(),
1207
lco_tree.branch.repository._format.get_format_description(),
1208
expected_lock_output,
1364
lco_tree._format.get_format_description(),
1365
lco_tree.branch._format.get_format_description(),
1366
lco_tree.branch.repository._format.get_format_description(),
1367
expected_lock_output,
1211
1370
self.assertEqual('', err)
1213
1372
def test_info_locking(self):
1216
1375
repo = self.make_repository('repo', shared=True,
1217
1376
format=bzrdir.BzrDirMetaFormat1())
1218
1377
repo.set_make_working_trees(False)
1219
repo.bzrdir.root_transport.mkdir('branch')
1220
repo_branch = repo.bzrdir.create_branch_convenience('repo/branch',
1221
format=bzrdir.BzrDirMetaFormat1())
1378
repo.controldir.root_transport.mkdir('branch')
1379
repo_branch = controldir.ControlDir.create_branch_convenience(
1380
'repo/branch', format=bzrdir.BzrDirMetaFormat1())
1222
1381
# Do a heavy checkout
1223
1382
transport.mkdir('tree')
1224
1383
transport.mkdir('tree/checkout')
1225
co_branch = bzrdir.BzrDir.create_branch_convenience('tree/checkout',
1226
format=bzrdir.BzrDirMetaFormat1())
1384
co_branch = controldir.ControlDir.create_branch_convenience(
1385
'tree/checkout', format=bzrdir.BzrDirMetaFormat1())
1227
1386
co_branch.bind(repo_branch)
1228
1387
# Do a light checkout of the heavy one
1229
1388
transport.mkdir('tree/lightcheckout')
1230
1389
lco_dir = bzrdir.BzrDirMetaFormat1().initialize('tree/lightcheckout')
1231
branch.BranchReferenceFormat().initialize(lco_dir,
1232
target_branch=co_branch)
1390
lco_dir.set_branch_reference(co_branch)
1233
1391
lco_dir.create_workingtree()
1234
1392
lco_tree = lco_dir.open_workingtree()
1244
1402
lco_tree.branch.repository.lock_write()
1246
1404
self.assertCheckoutStatusOutput('-v tree/lightcheckout',
1247
lco_tree, repo_branch=repo_branch,
1248
repo_locked=True, verbose=True, light_checkout=True)
1405
lco_tree, repo_branch=repo_branch,
1406
repo_locked=True, verbose=True, light_checkout=True)
1250
1408
lco_tree.branch.repository.unlock()
1252
1410
lco_tree.branch.lock_write()
1254
1412
self.assertCheckoutStatusOutput('-v tree/lightcheckout',
1258
repo_branch=repo_branch,
1416
repo_branch=repo_branch,
1261
1419
lco_tree.branch.unlock()
1263
1421
lco_tree.lock_write()
1265
1423
self.assertCheckoutStatusOutput('-v tree/lightcheckout',
1266
lco_tree, repo_branch=repo_branch,
1424
lco_tree, repo_branch=repo_branch,
1272
1430
lco_tree.unlock()
1312
1470
lco_tree.branch.repository.unlock()
1314
1472
self.assertCheckoutStatusOutput('-v tree/lightcheckout',
1315
lco_tree, repo_branch=repo_branch,
1473
lco_tree, repo_branch=repo_branch,
1319
1477
lco_tree.branch.repository.lock_write()
1320
1478
lco_tree.branch.unlock()
1322
1480
if sys.platform == 'win32':
1323
self.knownFailure('Win32 cannot run "bzr info"'
1481
self.knownFailure('Win32 cannot run "brz info"'
1324
1482
' when the tree is locked.')
1326
def test_info_locking_oslocks(self):
1327
if sys.platform == "win32":
1328
self.skip("don't use oslocks on win32 in unix manner")
1329
# This test tests old (all-in-one, OS lock using) behaviour which
1330
# simply cannot work on windows (and is indeed why we changed our
1331
# design. As such, don't try to remove the thisFailsStrictLockCheck
1333
self.thisFailsStrictLockCheck()
1335
tree = self.make_branch_and_tree('branch',
1336
format=bzrdir.BzrDirFormat6())
1338
# Test all permutations of locking the working tree, branch and repository
1339
# XXX: Well not yet, as we can't query oslocks yet. Currently, it's
1340
# implemented by raising NotImplementedError and get_physical_lock_status()
1341
# always returns false. This makes bzr info hide the lock status. (Olaf)
1345
out, err = self.run_bzr('info -v branch')
1346
self.assertEqualDiff(
1347
"""Standalone tree (format: weave)
1352
control: All-in-one format 6
1353
working tree: Working tree format 2
1354
branch: Branch format 4
1357
In the working tree:
1365
0 versioned subdirectories
1372
""" % ('branch', tree.branch.repository._format.get_format_description(),
1374
self.assertEqual('', err)
1377
out, err = self.run_bzr('info -v branch')
1378
self.assertEqualDiff(
1379
"""Standalone tree (format: weave)
1384
control: All-in-one format 6
1385
working tree: Working tree format 2
1386
branch: Branch format 4
1389
In the working tree:
1397
0 versioned subdirectories
1404
""" % ('branch', tree.branch.repository._format.get_format_description(),
1406
self.assertEqual('', err)
1409
1484
def test_info_stacked(self):
1410
1485
# We have a mainline
1411
1486
trunk_tree = self.make_branch_and_tree('mainline',
1413
1488
trunk_tree.commit('mainline')
1414
1489
# and a branch from it which is stacked
1415
new_dir = trunk_tree.bzrdir.sprout('newbranch', stacked=True)
1490
new_dir = trunk_tree.controldir.sprout('newbranch', stacked=True)
1416
1491
out, err = self.run_bzr('info newbranch')
1417
1492
self.assertEqual(
1418
"""Standalone tree (format: 1.6)
1493
"""Standalone tree (format: 1.6)
1420
1495
branch root: newbranch
1424
1499
stacked on: mainline
1426
1501
self.assertEqual("", err)
1503
def test_info_revinfo_optional(self):
1504
tree = self.make_branch_and_tree('.')
1506
def last_revision_info(self):
1507
raise errors.UnsupportedOperation(last_revision_info, self)
1509
branch.Branch, "last_revision_info", last_revision_info)
1510
out, err = self.run_bzr('info -v .')
1512
"""Standalone tree (format: 2a)
1517
control: Meta directory format 1
1518
working tree: Working tree format 6
1519
branch: Branch format 7
1520
repository: Repository format 2a - rich roots, group compression and chk inventories
1525
In the working tree:
1533
0 versioned subdirectories
1535
self.assertEqual("", err)
1537
def test_info_shows_colocated_branches(self):
1538
bzrdir = self.make_branch('.', format='development-colo').controldir
1539
bzrdir.create_branch(name="colo1")
1540
bzrdir.create_branch(name="colo2")
1541
bzrdir.create_branch(name="colo3")
1542
out, err = self.run_bzr('info -v .')
1543
self.assertEqualDiff(
1544
"""Standalone branch (format: development-colo)
1549
control: Meta directory format 1 with support for colocated branches
1550
branch: Branch format 7
1551
repository: Repository format 2a - rich roots, group compression and chk inventories
1562
self.assertEqual("", err)
1565
class TestSmartServerInfo(tests.TestCaseWithTransport):
1567
def test_simple_branch_info(self):
1568
self.setup_smart_server_with_call_log()
1569
t = self.make_branch_and_tree('branch')
1570
self.build_tree_contents([('branch/foo', b'thecontents')])
1573
self.reset_smart_call_log()
1574
out, err = self.run_bzr(['info', self.get_url('branch')])
1575
# This figure represent the amount of work to perform this use case. It
1576
# is entirely ok to reduce this number if a test fails due to rpc_count
1577
# being too low. If rpc_count increases, more network roundtrips have
1578
# become necessary for this use case. Please do not adjust this number
1579
# upwards without agreement from bzr's network support maintainers.
1580
self.assertLength(10, self.hpss_calls)
1581
self.assertLength(1, self.hpss_connections)
1582
self.assertThat(self.hpss_calls, ContainsNoVfsCalls)
1584
def test_verbose_branch_info(self):
1585
self.setup_smart_server_with_call_log()
1586
t = self.make_branch_and_tree('branch')
1587
self.build_tree_contents([('branch/foo', b'thecontents')])
1590
self.reset_smart_call_log()
1591
out, err = self.run_bzr(['info', '-v', self.get_url('branch')])
1592
# This figure represent the amount of work to perform this use case. It
1593
# is entirely ok to reduce this number if a test fails due to rpc_count
1594
# being too low. If rpc_count increases, more network roundtrips have
1595
# become necessary for this use case. Please do not adjust this number
1596
# upwards without agreement from bzr's network support maintainers.
1597
self.assertLength(14, self.hpss_calls)
1598
self.assertLength(1, self.hpss_connections)
1599
self.assertThat(self.hpss_calls, ContainsNoVfsCalls)