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, '')
48
87
def test_info_standalone(self):
49
88
transport = self.get_transport()
51
90
# Create initial standalone branch
52
tree1 = self.make_branch_and_tree('standalone', 'weave')
91
tree1 = self.make_branch_and_tree('standalone', 'knit')
53
92
self.build_tree(['standalone/a'])
55
94
branch1 = tree1.branch
57
96
out, err = self.run_bzr('info standalone')
58
97
self.assertEqualDiff(
59
"""Standalone tree (format: weave)
98
"""Standalone tree (format: knit)
61
100
branch root: standalone
65
104
# Standalone branch - verbose mode
66
105
out, err = self.run_bzr('info standalone -v')
67
106
self.assertEqualDiff(
68
"""Standalone tree (format: weave)
107
"""Standalone tree (format: knit)
70
109
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
112
control: Meta directory format 1
113
working tree: Working tree format 3
114
branch: Branch format 5
115
repository: Knit repository format 1
78
120
In the working tree:
96
138
# Standalone branch - really verbose mode
97
139
out, err = self.run_bzr('info standalone -vv')
98
140
self.assertEqualDiff(
99
"""Standalone tree (format: weave)
141
"""Standalone tree (format: knit)
101
143
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
146
control: Meta directory format 1
147
working tree: Working tree format 3
148
branch: Branch format 5
149
repository: Knit repository format 1
109
154
In the working tree:
126
171
self.assertEqual('', err)
127
172
tree1.commit('commit one')
128
rev = branch1.repository.get_revision(branch1.revision_history()[0])
173
rev = branch1.repository.get_revision(branch1.last_revision())
129
174
datestring_first = osutils.format_date(rev.timestamp, rev.timezone)
131
176
# Branch standalone with push location
132
branch2 = branch1.bzrdir.sprout('branch').open_branch()
133
branch2.set_push_location(branch1.bzrdir.root_transport.base)
177
branch2 = branch1.controldir.sprout('branch').open_branch()
178
branch2.set_push_location(branch1.controldir.root_transport.base)
135
180
out, err = self.run_bzr('info branch')
136
181
self.assertEqualDiff(
137
"""Standalone tree (format: weave)
182
"""Standalone tree (format: knit)
139
184
branch root: branch
185
233
# Branch and bind to standalone, needs upgrade to metadir
186
234
# (creates backup as unknown)
187
branch1.bzrdir.sprout('bound')
188
knit1_format = bzrdir.format_registry.make_bzrdir('knit')
235
branch1.controldir.sprout('bound')
236
knit1_format = controldir.format_registry.make_controldir('knit')
189
237
upgrade.upgrade('bound', knit1_format)
190
branch3 = bzrdir.BzrDir.open('bound').open_branch()
238
branch3 = controldir.ControlDir.open('bound').open_branch()
191
239
branch3.bind(branch1)
192
bound_tree = branch3.bzrdir.open_workingtree()
240
bound_tree = branch3.controldir.open_workingtree()
193
241
out, err = self.run_bzr('info -v bound')
194
242
self.assertEqualDiff(
195
"""Checkout (format: knit)
243
"""Checkout (format: knit)
197
245
checkout root: bound
198
246
checkout of branch: standalone
227
278
""" % (bound_tree._format.get_format_description(),
228
branch3._format.get_format_description(),
229
branch3.repository._format.get_format_description(),
230
datestring_first, datestring_first,
279
branch3._format.get_format_description(),
280
branch3.repository._format.get_format_description(),
281
datestring_first, datestring_first,
232
283
self.assertEqual('', err)
234
285
# Checkout standalone (same as above, but does not have parent set)
235
branch4 = bzrdir.BzrDir.create_branch_convenience('checkout',
286
branch4 = controldir.ControlDir.create_branch_convenience('checkout',
237
288
branch4.bind(branch1)
238
branch4.bzrdir.open_workingtree().update()
289
branch4.controldir.open_workingtree().update()
239
290
out, err = self.run_bzr('info checkout --verbose')
240
291
self.assertEqualDiff(
241
"""Checkout (format: knit)
292
"""Checkout (format: knit)
243
294
checkout root: checkout
244
295
checkout of branch: standalone
276
330
tree5 = branch1.create_checkout('lightcheckout', lightweight=True)
277
331
branch5 = tree5.branch
278
332
out, err = self.run_bzr('info -v lightcheckout')
333
if "metaweave" in controldir.format_registry:
334
format_description = "knit or metaweave"
336
format_description = "knit"
279
337
self.assertEqualDiff(
280
"""Lightweight checkout (format: %s)
338
"""Lightweight checkout (format: %s)
282
340
light checkout root: lightcheckout
283
341
checkout of branch: standalone
286
344
control: Meta directory format 1
287
working tree: Working tree format 6
288
branch: Branch format 4
289
repository: Weave repository format 6
345
working tree: Working tree format 3
346
branch: Branch format 5
347
repository: Knit repository format 1
291
352
In the working tree:
309
""" % (self._repo_strings, datestring_first, datestring_first,), out)
370
""" % (format_description, datestring_first, datestring_first,), out)
310
371
self.assertEqual('', err)
312
373
# Update initial standalone branch
313
374
self.build_tree(['standalone/b'])
315
376
tree1.commit('commit two')
316
rev = branch1.repository.get_revision(branch1.revision_history()[-1])
377
rev = branch1.repository.get_revision(branch1.last_revision())
317
378
datestring_last = osutils.format_date(rev.timestamp, rev.timezone)
319
380
# Out of date branched standalone branch will not be detected
320
381
out, err = self.run_bzr('info -v branch')
321
382
self.assertEqualDiff(
322
"""Standalone tree (format: weave)
383
"""Standalone tree (format: knit)
324
385
branch root: branch
395
462
""" % (branch3.repository._format.get_format_description(),
396
datestring_first, datestring_first,
463
datestring_first, datestring_first,
398
465
self.assertEqual('', err)
400
467
# Out of date checkout
401
468
out, err = self.run_bzr('info -v checkout')
402
469
self.assertEqualDiff(
403
"""Checkout (format: knit)
470
"""Checkout (format: knit)
405
472
checkout root: checkout
406
473
checkout of branch: standalone
434
504
""" % (branch4.repository._format.get_format_description(),
435
datestring_first, datestring_first,
505
datestring_first, datestring_first,
437
507
self.assertEqual('', err)
439
509
# Out of date lightweight checkout
440
510
out, err = self.run_bzr('info lightcheckout --verbose')
441
511
self.assertEqualDiff(
442
"""Lightweight checkout (format: %s)
512
"""Lightweight checkout (format: %s)
444
514
light checkout root: lightcheckout
445
515
checkout of branch: standalone
448
518
control: Meta directory format 1
449
working tree: Working tree format 6
450
branch: Branch format 4
451
repository: Weave repository format 6
519
working tree: Working tree format 3
520
branch: Branch format 5
521
repository: Knit repository format 1
453
526
Working tree is out of date: missing 1 revision.
473
""" % (self._repo_strings, datestring_first, datestring_last,), out)
546
""" % (format_description, datestring_first, datestring_last,), out)
474
547
self.assertEqual('', err)
476
549
def test_info_standalone_no_tree(self):
477
550
# create standalone branch without a working tree
478
format = bzrdir.format_registry.make_bzrdir('default')
551
format = controldir.format_registry.make_controldir('default')
479
552
branch = self.make_branch('branch')
480
553
repo = branch.repository
481
554
out, err = self.run_bzr('info branch -v')
482
555
self.assertEqualDiff(
483
"""Standalone branch (format: %s)
556
"""Standalone branch (format: %s)
485
558
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(),
573
""" % (info.describe_format(repo.controldir, repo, branch, None),
574
format.get_branch_format().get_format_description(),
575
format.repository_format.get_format_description(),
501
577
self.assertEqual('', err)
503
579
def test_info_shared_repository(self):
504
format = bzrdir.format_registry.make_bzrdir('knit')
580
format = controldir.format_registry.make_controldir('knit')
505
581
transport = self.get_transport()
507
583
# Create shared repository
524
603
self.assertEqual('', err)
526
605
# Create branch inside shared repository
527
repo.bzrdir.root_transport.mkdir('branch')
528
branch1 = repo.bzrdir.create_branch_convenience('repo/branch',
606
repo.controldir.root_transport.mkdir('branch')
607
branch1 = controldir.ControlDir.create_branch_convenience(
608
'repo/branch', format=format)
530
609
out, err = self.run_bzr('info -v repo/branch')
531
610
self.assertEqualDiff(
532
"""Repository branch (format: dirstate or knit)
611
"""Repository branch (format: dirstate or knit)
534
613
shared repository: repo
535
614
repository branch: repo/branch
553
635
transport.mkdir('tree')
554
636
transport.mkdir('tree/lightcheckout')
555
637
tree2 = branch1.create_checkout('tree/lightcheckout',
557
639
branch2 = tree2.branch
558
640
self.assertCheckoutStatusOutput('-v tree/lightcheckout', tree2,
559
shared_repo=repo, repo_branch=branch1, verbose=True)
641
shared_repo=repo, repo_branch=branch1, verbose=True)
561
643
# Create normal checkout
562
644
tree3 = branch1.create_checkout('tree/checkout')
563
645
self.assertCheckoutStatusOutput('tree/checkout --verbose', tree3,
565
light_checkout=False, repo_branch=branch1)
647
light_checkout=False, repo_branch=branch1)
566
648
# Update lightweight checkout
567
649
self.build_tree(['tree/lightcheckout/a'])
569
651
tree2.commit('commit one')
570
rev = repo.get_revision(branch2.revision_history()[0])
652
rev = repo.get_revision(branch2.last_revision())
571
653
datestring_first = osutils.format_date(rev.timestamp, rev.timezone)
572
654
out, err = self.run_bzr('info tree/lightcheckout --verbose')
573
655
self.assertEqualDiff(
574
"""Lightweight checkout (format: %s)
656
"""Lightweight checkout (format: %s)
576
658
light checkout root: tree/lightcheckout
577
659
checkout of branch: repo/branch
604
689
""" % (self._repo_strings, format.get_branch_format().get_format_description(),
605
format.repository_format.get_format_description(),
606
datestring_first, datestring_first,
690
format.repository_format.get_format_description(),
691
datestring_first, datestring_first,
608
693
self.assertEqual('', err)
610
695
# Out of date checkout
611
696
out, err = self.run_bzr('info -v tree/checkout')
612
697
self.assertEqualDiff(
613
"""Checkout (format: unnamed)
698
"""Checkout (format: unnamed)
615
700
checkout root: tree/checkout
616
701
checkout of branch: repo/branch
681
772
""" % (format.get_branch_format().get_format_description(),
682
format.repository_format.get_format_description(),
683
datestring_first, datestring_first,
773
format.repository_format.get_format_description(),
774
datestring_first, datestring_first,
685
776
self.assertEqual('', err)
686
777
tree3.commit('commit two')
688
779
# Out of date lightweight checkout
689
rev = repo.get_revision(branch1.revision_history()[-1])
780
rev = repo.get_revision(branch1.last_revision())
690
781
datestring_last = osutils.format_date(rev.timestamp, rev.timezone)
691
782
out, err = self.run_bzr('info tree/lightcheckout --verbose')
692
783
self.assertEqualDiff(
693
"""Lightweight checkout (format: %s)
784
"""Lightweight checkout (format: %s)
695
786
light checkout root: tree/lightcheckout
696
787
checkout of branch: repo/branch
725
819
""" % (self._repo_strings, format.get_branch_format().get_format_description(),
726
format.repository_format.get_format_description(),
727
datestring_first, datestring_last,
820
format.repository_format.get_format_description(),
821
datestring_first, datestring_last,
729
823
self.assertEqual('', err)
731
825
# Show info about shared branch
732
826
out, err = self.run_bzr('info repo/branch --verbose')
733
827
self.assertEqualDiff(
734
"""Repository branch (format: dirstate or knit)
828
"""Repository branch (format: dirstate or knit)
736
830
shared repository: repo
737
831
repository branch: repo/branch
752
849
""" % (format.get_branch_format().get_format_description(),
753
format.repository_format.get_format_description(),
754
datestring_first, datestring_last,
850
format.repository_format.get_format_description(),
851
datestring_first, datestring_last,
756
853
self.assertEqual('', err)
758
855
# Show info about repository with revisions
759
856
out, err = self.run_bzr('info -v repo')
760
857
self.assertEqualDiff(
761
"""Shared repository (format: dirstate or dirstate-tags or knit)
858
"""Shared repository (format: dirstate or dirstate-tags or knit)
763
860
shared repository: repo
798
901
self.assertEqual('', err)
800
903
# 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()
904
repo.controldir.root_transport.mkdir('branch1')
905
branch1 = controldir.ControlDir.create_branch_convenience('repo/branch1',
907
branch2 = branch1.controldir.sprout('repo/branch2').open_branch()
806
909
# Empty first branch
807
910
out, err = self.run_bzr('info repo/branch1 --verbose')
808
911
self.assertEqualDiff(
809
"""Repository tree (format: knit)
912
"""Repository tree (format: knit)
811
914
shared repository: repo
812
915
repository branch: repo/branch1
835
941
""" % (format.get_branch_format().get_format_description(),
836
format.repository_format.get_format_description(),
942
format.repository_format.get_format_description(),
838
944
self.assertEqual('', err)
840
946
# Update first branch
841
947
self.build_tree(['repo/branch1/a'])
842
tree1 = branch1.bzrdir.open_workingtree()
948
tree1 = branch1.controldir.open_workingtree()
844
950
tree1.commit('commit one')
845
rev = repo.get_revision(branch1.revision_history()[0])
951
rev = repo.get_revision(branch1.last_revision())
846
952
datestring_first = osutils.format_date(rev.timestamp, rev.timezone)
847
953
out, err = self.run_bzr('info -v repo/branch1')
848
954
self.assertEqualDiff(
849
"""Repository tree (format: knit)
955
"""Repository tree (format: knit)
851
957
shared repository: repo
852
958
repository branch: repo/branch1
878
987
""" % (format.get_branch_format().get_format_description(),
879
format.repository_format.get_format_description(),
880
datestring_first, datestring_first,
988
format.repository_format.get_format_description(),
989
datestring_first, datestring_first,
882
991
self.assertEqual('', err)
884
993
# Out of date second branch
885
994
out, err = self.run_bzr('info repo/branch2 --verbose')
886
995
self.assertEqualDiff(
887
"""Repository tree (format: knit)
996
"""Repository tree (format: knit)
889
998
shared repository: repo
890
999
repository branch: repo/branch2
916
1028
""" % (format.get_branch_format().get_format_description(),
917
format.repository_format.get_format_description(),
1029
format.repository_format.get_format_description(),
919
1031
self.assertEqual('', err)
921
1033
# Update second branch
922
tree2 = branch2.bzrdir.open_workingtree()
1034
tree2 = branch2.controldir.open_workingtree()
923
1035
tree2.pull(branch1)
924
1036
out, err = self.run_bzr('info -v repo/branch2')
925
1037
self.assertEqualDiff(
926
"""Repository tree (format: knit)
1038
"""Repository tree (format: knit)
928
1040
shared repository: repo
929
1041
repository branch: repo/branch2
958
1073
""" % (format.get_branch_format().get_format_description(),
959
format.repository_format.get_format_description(),
960
datestring_first, datestring_first,
1074
format.repository_format.get_format_description(),
1075
datestring_first, datestring_first,
962
1077
self.assertEqual('', err)
964
1079
# Show info about repository with revisions
965
1080
out, err = self.run_bzr('info -v repo')
966
1081
self.assertEqualDiff(
967
"""Shared repository with trees (format: dirstate or dirstate-tags or knit)
1082
"""Shared repository with trees (format: dirstate or dirstate-tags or knit)
969
1084
shared repository: repo
972
1087
control: Meta directory format 1
975
1093
Create working tree for new branches inside the repository.
979
1097
""" % (format.repository_format.get_format_description(),
982
1100
self.assertEqual('', err)
984
1102
def test_info_shared_repository_with_tree_in_root(self):
985
format = bzrdir.format_registry.make_bzrdir('knit')
1103
format = controldir.format_registry.make_controldir('knit')
986
1104
transport = self.get_transport()
988
1106
# Create shared repository with working trees
1041
1165
""" % (format.get_branch_format().get_format_description(),
1042
format.repository_format.get_format_description(),
1166
format.repository_format.get_format_description(),
1044
1168
self.assertEqual('', err)
1046
1170
def test_info_repository_hook(self):
1047
format = bzrdir.format_registry.make_bzrdir('knit')
1171
format = controldir.format_registry.make_controldir('knit')
1048
1173
def repo_info(repo, stats, outf):
1049
outf.write("more info\n")
1174
outf.write(u"more info\n")
1050
1175
info.hooks.install_named_hook('repository', repo_info, None)
1051
1176
# Create shared repository with working trees
1052
1177
repo = self.make_repository('repo', shared=True, format=format)
1053
1178
out, err = self.run_bzr('info -v repo')
1054
1179
self.assertEqualDiff(
1055
"""Shared repository with trees (format: dirstate or dirstate-tags or knit)
1180
"""Shared repository with trees (format: dirstate or dirstate-tags or knit)
1057
1182
shared repository: repo
1070
1198
self.assertEqual('', err)
1200
def test_info_unshared_repository_with_colocated_branches(self):
1201
format = controldir.format_registry.make_controldir('development-colo')
1202
transport = self.get_transport()
1204
# Create unshared repository
1205
repo = self.make_repository('repo', shared=False, format=format)
1206
repo.set_make_working_trees(True)
1207
repo.controldir.create_branch(name='foo')
1208
out, err = self.run_bzr('info repo')
1209
self.assertEqualDiff(
1210
"""Unshared repository with trees and colocated branches (format: development-colo)
1214
self.assertEqual('', err)
1072
1216
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):
1217
command_string, lco_tree, shared_repo=None,
1220
branch_locked=False, repo_locked=False,
1222
light_checkout=True,
1223
checkout_root=None):
1080
1224
"""Check the output of info in a checkout.
1082
1226
This is not quite a mirror of the info code: rather than using the
1113
1257
# in the different process -- either on win32 or on linux).
1114
1258
# This should be removed when the locking errors are fixed.
1115
1259
self.expectFailure('OS locks are exclusive '
1116
'for different processes (Bug #174055)',
1117
self.run_bzr_subprocess,
1118
'info ' + command_string)
1260
'for different processes (Bug #174055)',
1261
self.run_bzr_subprocess,
1262
'info ' + command_string)
1119
1263
out, err = self.run_bzr('info %s' % command_string)
1120
1264
description = {
1121
1265
(True, True): 'Lightweight checkout',
1148
1292
extra_space = ''
1149
1293
if light_checkout:
1150
1294
tree_data = (" light checkout root: %s\n" %
1151
friendly_location(lco_tree.bzrdir.root_transport.base))
1295
friendly_location(lco_tree.controldir.root_transport.base))
1152
1296
extra_space = ' '
1153
1297
if lco_tree.branch.get_bound_location() is not None:
1154
1298
tree_data += ("%s checkout root: %s\n" % (extra_space,
1155
friendly_location(lco_tree.branch.bzrdir.root_transport.base)))
1299
friendly_location(lco_tree.branch.controldir.root_transport.base)))
1156
1300
if shared_repo is not None:
1157
1301
branch_data = (
1158
1302
" checkout of branch: %s\n"
1159
1303
" shared repository: %s\n" %
1160
(friendly_location(repo_branch.bzrdir.root_transport.base),
1161
friendly_location(shared_repo.bzrdir.root_transport.base)))
1304
(friendly_location(repo_branch.controldir.root_transport.base),
1305
friendly_location(shared_repo.controldir.root_transport.base)))
1162
1306
elif repo_branch is not None:
1163
1307
branch_data = (
1164
1308
"%s checkout of branch: %s\n" %
1166
friendly_location(repo_branch.bzrdir.root_transport.base)))
1310
friendly_location(repo_branch.controldir.root_transport.base)))
1168
1312
branch_data = (" checkout of branch: %s\n" %
1169
lco_tree.branch.bzrdir.root_transport.base)
1313
lco_tree.branch.controldir.root_transport.base)
1171
1315
if verbose >= 2:
1172
1316
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,
1352
lco_tree._format.get_format_description(),
1353
lco_tree.branch._format.get_format_description(),
1354
lco_tree.branch.repository._format.get_format_description(),
1355
expected_lock_output,
1211
1358
self.assertEqual('', err)
1213
1360
def test_info_locking(self):
1216
1363
repo = self.make_repository('repo', shared=True,
1217
1364
format=bzrdir.BzrDirMetaFormat1())
1218
1365
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())
1366
repo.controldir.root_transport.mkdir('branch')
1367
repo_branch = controldir.ControlDir.create_branch_convenience(
1368
'repo/branch', format=bzrdir.BzrDirMetaFormat1())
1222
1369
# Do a heavy checkout
1223
1370
transport.mkdir('tree')
1224
1371
transport.mkdir('tree/checkout')
1225
co_branch = bzrdir.BzrDir.create_branch_convenience('tree/checkout',
1226
format=bzrdir.BzrDirMetaFormat1())
1372
co_branch = controldir.ControlDir.create_branch_convenience(
1373
'tree/checkout', format=bzrdir.BzrDirMetaFormat1())
1227
1374
co_branch.bind(repo_branch)
1228
1375
# Do a light checkout of the heavy one
1229
1376
transport.mkdir('tree/lightcheckout')
1230
1377
lco_dir = bzrdir.BzrDirMetaFormat1().initialize('tree/lightcheckout')
1231
branch.BranchReferenceFormat().initialize(lco_dir,
1232
target_branch=co_branch)
1378
lco_dir.set_branch_reference(co_branch)
1233
1379
lco_dir.create_workingtree()
1234
1380
lco_tree = lco_dir.open_workingtree()
1244
1390
lco_tree.branch.repository.lock_write()
1246
1392
self.assertCheckoutStatusOutput('-v tree/lightcheckout',
1247
lco_tree, repo_branch=repo_branch,
1248
repo_locked=True, verbose=True, light_checkout=True)
1393
lco_tree, repo_branch=repo_branch,
1394
repo_locked=True, verbose=True, light_checkout=True)
1250
1396
lco_tree.branch.repository.unlock()
1252
1398
lco_tree.branch.lock_write()
1254
1400
self.assertCheckoutStatusOutput('-v tree/lightcheckout',
1258
repo_branch=repo_branch,
1404
repo_branch=repo_branch,
1261
1407
lco_tree.branch.unlock()
1263
1409
lco_tree.lock_write()
1265
1411
self.assertCheckoutStatusOutput('-v tree/lightcheckout',
1266
lco_tree, repo_branch=repo_branch,
1412
lco_tree, repo_branch=repo_branch,
1272
1418
lco_tree.unlock()
1312
1458
lco_tree.branch.repository.unlock()
1314
1460
self.assertCheckoutStatusOutput('-v tree/lightcheckout',
1315
lco_tree, repo_branch=repo_branch,
1461
lco_tree, repo_branch=repo_branch,
1319
1465
lco_tree.branch.repository.lock_write()
1320
1466
lco_tree.branch.unlock()
1322
1468
if sys.platform == 'win32':
1323
self.knownFailure('Win32 cannot run "bzr info"'
1469
self.knownFailure('Win32 cannot run "brz info"'
1324
1470
' 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
1472
def test_info_stacked(self):
1410
1473
# We have a mainline
1411
1474
trunk_tree = self.make_branch_and_tree('mainline',
1413
1476
trunk_tree.commit('mainline')
1414
1477
# and a branch from it which is stacked
1415
new_dir = trunk_tree.bzrdir.sprout('newbranch', stacked=True)
1478
new_dir = trunk_tree.controldir.sprout('newbranch', stacked=True)
1416
1479
out, err = self.run_bzr('info newbranch')
1417
1480
self.assertEqual(
1418
"""Standalone tree (format: 1.6)
1481
"""Standalone tree (format: 1.6)
1420
1483
branch root: newbranch
1424
1487
stacked on: mainline
1426
1489
self.assertEqual("", err)
1491
def test_info_revinfo_optional(self):
1492
tree = self.make_branch_and_tree('.')
1494
def last_revision_info(self):
1495
raise errors.UnsupportedOperation(last_revision_info, self)
1497
branch.Branch, "last_revision_info", last_revision_info)
1498
out, err = self.run_bzr('info -v .')
1500
"""Standalone tree (format: 2a)
1505
control: Meta directory format 1
1506
working tree: Working tree format 6
1507
branch: Branch format 7
1508
repository: Repository format 2a - rich roots, group compression and chk inventories
1513
In the working tree:
1521
0 versioned subdirectories
1523
self.assertEqual("", err)
1525
def test_info_shows_colocated_branches(self):
1526
bzrdir = self.make_branch('.', format='development-colo').controldir
1527
bzrdir.create_branch(name="colo1")
1528
bzrdir.create_branch(name="colo2")
1529
bzrdir.create_branch(name="colo3")
1530
out, err = self.run_bzr('info -v .')
1531
self.assertEqualDiff(
1532
"""Standalone branch (format: development-colo)
1537
control: Meta directory format 1 with support for colocated branches
1538
branch: Branch format 7
1539
repository: Repository format 2a - rich roots, group compression and chk inventories
1550
self.assertEqual("", err)
1553
class TestSmartServerInfo(tests.TestCaseWithTransport):
1555
def test_simple_branch_info(self):
1556
self.setup_smart_server_with_call_log()
1557
t = self.make_branch_and_tree('branch')
1558
self.build_tree_contents([('branch/foo', b'thecontents')])
1561
self.reset_smart_call_log()
1562
out, err = self.run_bzr(['info', self.get_url('branch')])
1563
# This figure represent the amount of work to perform this use case. It
1564
# is entirely ok to reduce this number if a test fails due to rpc_count
1565
# being too low. If rpc_count increases, more network roundtrips have
1566
# become necessary for this use case. Please do not adjust this number
1567
# upwards without agreement from bzr's network support maintainers.
1568
self.assertLength(10, self.hpss_calls)
1569
self.assertLength(1, self.hpss_connections)
1570
self.assertThat(self.hpss_calls, ContainsNoVfsCalls)
1572
def test_verbose_branch_info(self):
1573
self.setup_smart_server_with_call_log()
1574
t = self.make_branch_and_tree('branch')
1575
self.build_tree_contents([('branch/foo', b'thecontents')])
1578
self.reset_smart_call_log()
1579
out, err = self.run_bzr(['info', '-v', self.get_url('branch')])
1580
# This figure represent the amount of work to perform this use case. It
1581
# is entirely ok to reduce this number if a test fails due to rpc_count
1582
# being too low. If rpc_count increases, more network roundtrips have
1583
# become necessary for this use case. Please do not adjust this number
1584
# upwards without agreement from bzr's network support maintainers.
1585
self.assertLength(14, self.hpss_calls)
1586
self.assertLength(1, self.hpss_connections)
1587
self.assertThat(self.hpss_calls, ContainsNoVfsCalls)