~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/blackbox/test_info.py

  • Committer: Robert Collins
  • Date: 2009-07-07 04:32:13 UTC
  • mto: This revision was merged to the branch mainline in revision 4524.
  • Revision ID: robertc@robertcollins.net-20090707043213-4hjjhgr40iq7gk2d
More informative assertions in xml serialisation.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006, 2007 Canonical Ltd
 
1
# Copyright (C) 2006, 2007, 2008 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
 
18
18
"""Tests for the info command of bzr."""
19
19
 
20
 
import os
21
20
import sys
22
21
 
23
 
import bzrlib
24
22
from bzrlib import (
 
23
    branch,
25
24
    bzrdir,
 
25
    errors,
 
26
    info,
26
27
    osutils,
27
 
    repository,
 
28
    upgrade,
28
29
    urlutils,
29
30
    )
30
31
from bzrlib.osutils import format_date
41
42
            location = "/i/do/not/exist/"
42
43
        out, err = self.run_bzr('info '+location, retcode=3)
43
44
        self.assertEqual(out, '')
44
 
        self.assertEqual(err, 'bzr: ERROR: Not a branch: %s\n' % location)
 
45
        self.assertEqual(err, 'bzr: ERROR: Not a branch: "%s".\n' % location)
45
46
 
46
47
    def test_info_standalone(self):
47
48
        transport = self.get_transport()
60
61
""", out)
61
62
        self.assertEqual('', err)
62
63
 
 
64
        # Standalone branch - verbose mode
63
65
        out, err = self.run_bzr('info standalone -v')
64
66
        self.assertEqualDiff(
65
67
"""Standalone tree (format: weave)
84
86
 
85
87
Branch history:
86
88
         0 revisions
 
89
 
 
90
Repository:
 
91
         0 revisions
 
92
""", out)
 
93
        self.assertEqual('', err)
 
94
 
 
95
        # Standalone branch - really verbose mode
 
96
        out, err = self.run_bzr('info standalone -vv')
 
97
        self.assertEqualDiff(
 
98
"""Standalone tree (format: weave)
 
99
Location:
 
100
  branch root: standalone
 
101
 
 
102
Format:
 
103
       control: All-in-one format 6
 
104
  working tree: Working tree format 2
 
105
        branch: Branch format 4
 
106
    repository: Weave repository format 6
 
107
 
 
108
In the working tree:
 
109
         0 unchanged
 
110
         0 modified
 
111
         1 added
 
112
         0 removed
 
113
         0 renamed
 
114
         0 unknown
 
115
         0 ignored
 
116
         0 versioned subdirectories
 
117
 
 
118
Branch history:
 
119
         0 revisions
87
120
         0 committers
88
121
 
89
122
Repository:
90
123
         0 revisions
91
 
         0 KiB
92
124
""", out)
93
125
        self.assertEqual('', err)
94
126
        tree1.commit('commit one')
139
171
 
140
172
Branch history:
141
173
         1 revision
142
 
         1 committer
143
174
         0 days old
144
175
   first revision: %s
145
176
  latest revision: %s
146
177
 
147
178
Repository:
148
179
         1 revision
149
 
         %d KiB
150
180
""" % (datestring_first, datestring_first,
151
 
       # poking at _revision_store isn't all that clean, but neither is
152
 
       # having the ui test dependent on the exact overhead of a given store.
153
 
       branch2.repository._revision_store.total_size(
154
 
        branch2.repository.get_transaction())[1] / 1024,
155
181
       ), out)
156
182
        self.assertEqual('', err)
157
183
 
159
185
        # (creates backup as unknown)
160
186
        branch1.bzrdir.sprout('bound')
161
187
        knit1_format = bzrdir.format_registry.make_bzrdir('knit')
162
 
        bzrlib.upgrade.upgrade('bound', knit1_format)
163
 
        branch3 = bzrlib.bzrdir.BzrDir.open('bound').open_branch()
 
188
        upgrade.upgrade('bound', knit1_format)
 
189
        branch3 = bzrdir.BzrDir.open('bound').open_branch()
164
190
        branch3.bind(branch1)
165
191
        bound_tree = branch3.bzrdir.open_workingtree()
166
192
        out, err = self.run_bzr('info -v bound')
191
217
 
192
218
Branch history:
193
219
         1 revision
194
 
         1 committer
195
220
         0 days old
196
221
   first revision: %s
197
222
  latest revision: %s
198
223
 
199
224
Repository:
200
225
         1 revision
201
 
         %d KiB
202
226
""" % (bound_tree._format.get_format_description(),
203
227
       branch3._format.get_format_description(),
204
228
       branch3.repository._format.get_format_description(),
205
229
       datestring_first, datestring_first,
206
 
       # poking at _revision_store isn't all that clean, but neither is
207
 
       # having the ui test dependent on the exact overhead of a given store.
208
 
       branch3.repository._revision_store.total_size(
209
 
        branch3.repository.get_transaction())[1] / 1024,
210
230
       ), out)
211
231
        self.assertEqual('', err)
212
232
 
213
233
        # Checkout standalone (same as above, but does not have parent set)
214
 
        branch4 = bzrlib.bzrdir.BzrDir.create_branch_convenience('checkout',
 
234
        branch4 = bzrdir.BzrDir.create_branch_convenience('checkout',
215
235
            format=knit1_format)
216
236
        branch4.bind(branch1)
217
237
        branch4.bzrdir.open_workingtree().update()
240
260
 
241
261
Branch history:
242
262
         1 revision
243
 
         1 committer
244
263
         0 days old
245
264
   first revision: %s
246
265
  latest revision: %s
247
266
 
248
267
Repository:
249
268
         1 revision
250
 
         %d KiB
251
269
""" % (branch4.repository._format.get_format_description(),
252
270
       datestring_first, datestring_first,
253
 
       # poking at _revision_store isn't all that clean, but neither is
254
 
       # having the ui test dependent on the exact overhead of a given store.
255
 
       branch4.repository._revision_store.total_size(
256
 
        branch4.repository.get_transaction())[1] / 1024,
257
271
       ), out)
258
272
        self.assertEqual('', err)
259
273
 
262
276
        branch5 = tree5.branch
263
277
        out, err = self.run_bzr('info -v lightcheckout')
264
278
        self.assertEqualDiff(
265
 
"""Lightweight checkout (format: dirstate or dirstate-tags)
 
279
"""Lightweight checkout (format: 1.6 or 1.6.1-rich-root \
 
280
or 1.9 or 1.9-rich-root \
 
281
or dirstate or dirstate-tags or \
 
282
pack-0.92 or rich-root or rich-root-pack)
266
283
Location:
267
284
  light checkout root: lightcheckout
268
285
   checkout of branch: standalone
285
302
 
286
303
Branch history:
287
304
         1 revision
288
 
         1 committer
289
305
         0 days old
290
306
   first revision: %s
291
307
  latest revision: %s
292
308
 
293
309
Repository:
294
310
         1 revision
295
 
         0 KiB
296
311
""" % (datestring_first, datestring_first,), out)
297
312
        self.assertEqual('', err)
298
313
 
332
347
 
333
348
Branch history:
334
349
         1 revision
335
 
         1 committer
336
350
         0 days old
337
351
   first revision: %s
338
352
  latest revision: %s
339
353
 
340
354
Repository:
341
355
         1 revision
342
 
         0 KiB
343
356
""" % (datestring_first, datestring_first,
344
357
       ), out)
345
358
        self.assertEqual('', err)
375
388
 
376
389
Branch history:
377
390
         1 revision
378
 
         1 committer
379
391
         0 days old
380
392
   first revision: %s
381
393
  latest revision: %s
382
394
 
383
395
Repository:
384
396
         1 revision
385
 
         %d KiB
386
397
""" % (branch3.repository._format.get_format_description(),
387
398
       datestring_first, datestring_first,
388
 
       # poking at _revision_store isn't all that clean, but neither is
389
 
       # having the ui test dependent on the exact overhead of a given store.
390
 
       branch3.repository._revision_store.total_size(
391
 
        branch3.repository.get_transaction())[1] / 1024,
392
399
       ), out)
393
400
        self.assertEqual('', err)
394
401
 
420
427
 
421
428
Branch history:
422
429
         1 revision
423
 
         1 committer
424
430
         0 days old
425
431
   first revision: %s
426
432
  latest revision: %s
427
433
 
428
434
Repository:
429
435
         1 revision
430
 
         %d KiB
431
436
""" % (branch4.repository._format.get_format_description(),
432
437
       datestring_first, datestring_first,
433
 
       # poking at _revision_store isn't all that clean, but neither is
434
 
       # having the ui test dependent on the exact overhead of a given store.
435
 
       branch4.repository._revision_store.total_size(
436
 
        branch4.repository.get_transaction())[1] / 1024,
437
438
       ), out)
438
439
        self.assertEqual('', err)
439
440
 
440
441
        # Out of date lightweight checkout
441
442
        out, err = self.run_bzr('info lightcheckout --verbose')
442
443
        self.assertEqualDiff(
443
 
"""Lightweight checkout (format: dirstate or dirstate-tags)
 
444
"""Lightweight checkout (format: 1.6 or 1.6.1-rich-root or \
 
445
1.9 or 1.9-rich-root or \
 
446
dirstate or dirstate-tags or \
 
447
pack-0.92 or rich-root or rich-root-pack)
444
448
Location:
445
449
  light checkout root: lightcheckout
446
450
   checkout of branch: standalone
465
469
 
466
470
Branch history:
467
471
         2 revisions
468
 
         1 committer
469
472
         0 days old
470
473
   first revision: %s
471
474
  latest revision: %s
472
475
 
473
476
Repository:
474
477
         2 revisions
475
 
         0 KiB
476
478
""" % (datestring_first, datestring_last,), out)
477
479
        self.assertEqual('', err)
478
480
 
483
485
        repo = branch.repository
484
486
        out, err = self.run_bzr('info branch -v')
485
487
        self.assertEqualDiff(
486
 
"""Standalone branch (format: dirstate or knit)
 
488
"""Standalone branch (format: %s)
487
489
Location:
488
490
  branch root: branch
489
491
 
494
496
 
495
497
Branch history:
496
498
         0 revisions
497
 
         0 committers
498
499
 
499
500
Repository:
500
501
         0 revisions
501
 
         0 KiB
502
 
""" % (format.get_branch_format().get_format_description(),
 
502
""" % (info.describe_format(repo.bzrdir, repo, branch, None),
 
503
       format.get_branch_format().get_format_description(),
503
504
       format.repository_format.get_format_description(),
504
505
       ), out)
505
506
        self.assertEqual('', err)
523
524
 
524
525
Repository:
525
526
         0 revisions
526
 
         0 KiB
527
527
""" % ('repo', format.repository_format.get_format_description(),
528
528
       ), out)
529
529
        self.assertEqual('', err)
546
546
 
547
547
Branch history:
548
548
         0 revisions
549
 
         0 committers
550
549
 
551
550
Repository:
552
551
         0 revisions
553
 
         0 KiB
554
552
""" % (format.get_branch_format().get_format_description(),
555
553
       format.repository_format.get_format_description(),
556
554
       ), out)
559
557
        # Create lightweight checkout
560
558
        transport.mkdir('tree')
561
559
        transport.mkdir('tree/lightcheckout')
562
 
        tree2 = branch1.create_checkout('tree/lightcheckout', 
 
560
        tree2 = branch1.create_checkout('tree/lightcheckout',
563
561
            lightweight=True)
564
562
        branch2 = tree2.branch
565
563
        self.assertCheckoutStatusOutput('-v tree/lightcheckout', tree2,
578
576
        datestring_first = format_date(rev.timestamp, rev.timezone)
579
577
        out, err = self.run_bzr('info tree/lightcheckout --verbose')
580
578
        self.assertEqualDiff(
581
 
"""Lightweight checkout (format: dirstate or dirstate-tags)
 
579
"""Lightweight checkout (format: 1.6 or 1.6.1-rich-root or \
 
580
1.9 or 1.9-rich-root or \
 
581
dirstate or dirstate-tags or \
 
582
pack-0.92 or rich-root or rich-root-pack)
582
583
Location:
583
584
  light checkout root: tree/lightcheckout
584
585
   checkout of branch: repo/branch
602
603
 
603
604
Branch history:
604
605
         1 revision
605
 
         1 committer
606
606
         0 days old
607
607
   first revision: %s
608
608
  latest revision: %s
609
609
 
610
610
Repository:
611
611
         1 revision
612
 
         %d KiB
613
612
""" % (format.get_branch_format().get_format_description(),
614
613
       format.repository_format.get_format_description(),
615
614
       datestring_first, datestring_first,
616
 
       # poking at _revision_store isn't all that clean, but neither is
617
 
       # having the ui test dependent on the exact overhead of a given store.
618
 
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
619
615
       ), out)
620
616
        self.assertEqual('', err)
621
617
 
647
643
 
648
644
Branch history:
649
645
         0 revisions
650
 
         0 committers
651
646
 
652
647
Repository:
653
648
         0 revisions
654
 
         0 KiB
655
649
""" % (format.get_branch_format().get_format_description(),
656
650
       format.repository_format.get_format_description(),
657
651
       ), out)
686
680
 
687
681
Branch history:
688
682
         1 revision
689
 
         1 committer
690
683
         0 days old
691
684
   first revision: %s
692
685
  latest revision: %s
693
686
 
694
687
Repository:
695
688
         1 revision
696
 
         %d KiB
697
689
""" % (format.get_branch_format().get_format_description(),
698
690
       format.repository_format.get_format_description(),
699
691
       datestring_first, datestring_first,
700
 
       # poking at _revision_store isn't all that clean, but neither is
701
 
       # having the ui test dependent on the exact overhead of a given store.
702
 
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
703
692
       ), out)
704
693
        self.assertEqual('', err)
705
694
        tree3.commit('commit two')
709
698
        datestring_last = format_date(rev.timestamp, rev.timezone)
710
699
        out, err = self.run_bzr('info tree/lightcheckout --verbose')
711
700
        self.assertEqualDiff(
712
 
"""Lightweight checkout (format: dirstate or dirstate-tags)
 
701
"""Lightweight checkout (format: 1.6 or 1.6.1-rich-root or \
 
702
1.9 or 1.9-rich-root or \
 
703
dirstate or dirstate-tags or \
 
704
pack-0.92 or rich-root or rich-root-pack)
713
705
Location:
714
706
  light checkout root: tree/lightcheckout
715
707
   checkout of branch: repo/branch
735
727
 
736
728
Branch history:
737
729
         2 revisions
738
 
         1 committer
739
730
         0 days old
740
731
   first revision: %s
741
732
  latest revision: %s
742
733
 
743
734
Repository:
744
735
         2 revisions
745
 
         %d KiB
746
736
""" % (format.get_branch_format().get_format_description(),
747
737
       format.repository_format.get_format_description(),
748
738
       datestring_first, datestring_last,
749
 
       # poking at _revision_store isn't all that clean, but neither is
750
 
       # having the ui test dependent on the exact overhead of a given store.
751
 
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
752
739
       ), out)
753
740
        self.assertEqual('', err)
754
741
 
767
754
 
768
755
Branch history:
769
756
         2 revisions
770
 
         1 committer
771
757
         0 days old
772
758
   first revision: %s
773
759
  latest revision: %s
774
760
 
775
761
Repository:
776
762
         2 revisions
777
 
         %d KiB
778
763
""" % (format.get_branch_format().get_format_description(),
779
764
       format.repository_format.get_format_description(),
780
765
       datestring_first, datestring_last,
781
 
       # poking at _revision_store isn't all that clean, but neither is
782
 
       # having the ui test dependent on the exact overhead of a given store.
783
 
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
784
766
       ), out)
785
767
        self.assertEqual('', err)
786
768
 
797
779
 
798
780
Repository:
799
781
         2 revisions
800
 
         %d KiB
801
782
""" % (format.repository_format.get_format_description(),
802
 
       # poking at _revision_store isn't all that clean, but neither is
803
 
       # having the ui test dependent on the exact overhead of a given store.
804
 
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
805
783
       ), out)
806
784
        self.assertEqual('', err)
807
785
 
826
804
 
827
805
Repository:
828
806
         0 revisions
829
 
         0 KiB
830
807
""" % (format.repository_format.get_format_description(),
831
808
       ), out)
832
809
        self.assertEqual('', err)
863
840
 
864
841
Branch history:
865
842
         0 revisions
866
 
         0 committers
867
843
 
868
844
Repository:
869
845
         0 revisions
870
 
         0 KiB
871
846
""" % (format.get_branch_format().get_format_description(),
872
847
       format.repository_format.get_format_description(),
873
848
       ), out)
905
880
 
906
881
Branch history:
907
882
         1 revision
908
 
         1 committer
909
883
         0 days old
910
884
   first revision: %s
911
885
  latest revision: %s
912
886
 
913
887
Repository:
914
888
         1 revision
915
 
         %d KiB
916
889
""" % (format.get_branch_format().get_format_description(),
917
890
       format.repository_format.get_format_description(),
918
891
       datestring_first, datestring_first,
919
 
       # poking at _revision_store isn't all that clean, but neither is
920
 
       # having the ui test dependent on the exact overhead of a given store.
921
 
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
922
892
       ), out)
923
893
        self.assertEqual('', err)
924
894
 
951
921
 
952
922
Branch history:
953
923
         0 revisions
954
 
         0 committers
955
924
 
956
925
Repository:
957
926
         1 revision
958
 
         %d KiB
959
927
""" % (format.get_branch_format().get_format_description(),
960
928
       format.repository_format.get_format_description(),
961
 
       # poking at _revision_store isn't all that clean, but neither is
962
 
       # having the ui test dependent on the exact overhead of a given store.
963
 
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
964
929
       ), out)
965
930
        self.assertEqual('', err)
966
931
 
995
960
 
996
961
Branch history:
997
962
         1 revision
998
 
         1 committer
999
963
         0 days old
1000
964
   first revision: %s
1001
965
  latest revision: %s
1002
966
 
1003
967
Repository:
1004
968
         1 revision
1005
 
         %d KiB
1006
969
""" % (format.get_branch_format().get_format_description(),
1007
970
       format.repository_format.get_format_description(),
1008
971
       datestring_first, datestring_first,
1009
 
       # poking at _revision_store isn't all that clean, but neither is
1010
 
       # having the ui test dependent on the exact overhead of a given store.
1011
 
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
1012
972
       ), out)
1013
973
        self.assertEqual('', err)
1014
974
 
1027
987
 
1028
988
Repository:
1029
989
         1 revision
1030
 
         %d KiB
1031
990
""" % (format.repository_format.get_format_description(),
1032
 
       # poking at _revision_store isn't all that clean, but neither is
1033
 
       # having the ui test dependent on the exact overhead of a given store.
1034
 
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
1035
991
       ),
1036
992
       out)
1037
993
        self.assertEqual('', err)
1038
 
    
 
994
 
1039
995
    def test_info_shared_repository_with_tree_in_root(self):
1040
996
        format = bzrdir.format_registry.make_bzrdir('knit')
1041
997
        transport = self.get_transport()
1057
1013
 
1058
1014
Repository:
1059
1015
         0 revisions
1060
 
         0 KiB
1061
1016
""" % (format.repository_format.get_format_description(),
1062
1017
       ), out)
1063
1018
        self.assertEqual('', err)
1091
1046
 
1092
1047
Branch history:
1093
1048
         0 revisions
1094
 
         0 committers
1095
1049
 
1096
1050
Repository:
1097
1051
         0 revisions
1098
 
         0 KiB
1099
1052
""" % (format.get_branch_format().get_format_description(),
1100
1053
       format.repository_format.get_format_description(),
1101
1054
       ), out)
1102
1055
        self.assertEqual('', err)
1103
1056
 
1104
 
    def assertCheckoutStatusOutput(self, 
 
1057
    def test_info_repository_hook(self):
 
1058
        format = bzrdir.format_registry.make_bzrdir('knit')
 
1059
        def repo_info(repo, stats, outf):
 
1060
            outf.write("more info\n")
 
1061
        info.hooks.install_named_hook('repository', repo_info, None)
 
1062
        # Create shared repository with working trees
 
1063
        repo = self.make_repository('repo', shared=True, format=format)
 
1064
        out, err = self.run_bzr('info -v repo')
 
1065
        self.assertEqualDiff(
 
1066
"""Shared repository with trees (format: dirstate or dirstate-tags or knit)
 
1067
Location:
 
1068
  shared repository: repo
 
1069
 
 
1070
Format:
 
1071
       control: Meta directory format 1
 
1072
    repository: %s
 
1073
 
 
1074
Create working tree for new branches inside the repository.
 
1075
 
 
1076
Repository:
 
1077
         0 revisions
 
1078
more info
 
1079
""" % (format.repository_format.get_format_description(),
 
1080
       ), out)
 
1081
        self.assertEqual('', err)
 
1082
 
 
1083
    def assertCheckoutStatusOutput(self,
1105
1084
        command_string, lco_tree, shared_repo=None,
1106
1085
        repo_branch=None,
1107
1086
        tree_locked=False,
1116
1095
        allow us, the test writers, to document what *should* be present in
1117
1096
        the output. Removing this separation would remove the value of the
1118
1097
        tests.
1119
 
        
 
1098
 
1120
1099
        :param path: the path to the light checkout.
1121
1100
        :param lco_tree: the tree object for the light checkout.
1122
1101
        :param shared_repo: A shared repository is in use, expect that in
1126
1105
        :param tree_locked: If true, expect the tree to be locked.
1127
1106
        :param branch_locked: If true, expect the branch to be locked.
1128
1107
        :param repo_locked: If true, expect the repository to be locked.
1129
 
        :param verbose: If true, expect verbose output
 
1108
            Note that the lco_tree.branch.repository is inspected, and if is not
 
1109
            actually locked then this parameter is overridden. This is because
 
1110
            pack repositories do not have any public API for obtaining an
 
1111
            exclusive repository wide lock.
 
1112
        :param verbose: verbosity level: 2 or higher to show committers
1130
1113
        """
1131
1114
        def friendly_location(url):
1132
1115
            path = urlutils.unescape_for_display(url, 'ascii')
1133
1116
            try:
1134
 
                return osutils.relpath(os.getcwd(), path)
 
1117
                return osutils.relpath(osutils.getcwd(), path)
1135
1118
            except errors.PathNotChild:
1136
1119
                return path
1137
1120
 
1138
 
        if tree_locked and sys.platform == 'win32':
1139
 
            # We expect this to fail because of locking errors. (A write-locked
1140
 
            # file cannot be read-locked in the same process).
 
1121
        if tree_locked:
 
1122
            # We expect this to fail because of locking errors.
 
1123
            # (A write-locked file cannot be read-locked
 
1124
            # in the different process -- either on win32 or on linux).
1141
1125
            # This should be removed when the locking errors are fixed.
1142
 
            args = command_string.split(' ')
1143
 
            self.run_bzr_error([], 'info', *args)
1144
 
            return
 
1126
            self.expectFailure('OS locks are exclusive '
 
1127
                'for different processes (Bug #174055)',
 
1128
                self.run_bzr_subprocess,
 
1129
                'info ' + command_string)
1145
1130
        out, err = self.run_bzr('info %s' % command_string)
1146
1131
        description = {
1147
1132
            (True, True): 'Lightweight checkout',
1149
1134
            (False, True): 'Lightweight checkout',
1150
1135
            (False, False): 'Checkout',
1151
1136
            }[(shared_repo is not None, light_checkout)]
1152
 
        format = {True: 'dirstate or dirstate-tags',
 
1137
        format = {True: '1.6 or 1.6.1-rich-root'
 
1138
                        ' or 1.9 or 1.9-rich-root'
 
1139
                        ' or dirstate or dirstate-tags or pack-0.92'
 
1140
                        ' or rich-root or rich-root-pack',
1153
1141
                  False: 'dirstate'}[light_checkout]
 
1142
        if repo_locked:
 
1143
            repo_locked = lco_tree.branch.repository.get_physical_lock_status()
1154
1144
        if repo_locked or branch_locked or tree_locked:
1155
1145
            def locked_message(a_bool):
1156
1146
                if a_bool:
1191
1181
        else:
1192
1182
            branch_data = ("   checkout of branch: %s\n" %
1193
1183
                lco_tree.branch.bzrdir.root_transport.base)
1194
 
        
1195
 
        if verbose:
 
1184
 
 
1185
        if verbose >= 2:
1196
1186
            verbose_info = '         0 committers\n'
1197
1187
        else:
1198
1188
            verbose_info = ''
1199
 
            
 
1189
 
1200
1190
        self.assertEqualDiff(
1201
1191
"""%s (format: %s)
1202
1192
Location:
1222
1212
%s
1223
1213
Repository:
1224
1214
         0 revisions
1225
 
         0 KiB
1226
1215
""" %  (description,
1227
1216
        format,
1228
1217
        tree_data,
1239
1228
        transport = self.get_transport()
1240
1229
        # Create shared repository with a branch
1241
1230
        repo = self.make_repository('repo', shared=True,
1242
 
                                    format=bzrlib.bzrdir.BzrDirMetaFormat1())
 
1231
                                    format=bzrdir.BzrDirMetaFormat1())
1243
1232
        repo.set_make_working_trees(False)
1244
1233
        repo.bzrdir.root_transport.mkdir('branch')
1245
1234
        repo_branch = repo.bzrdir.create_branch_convenience('repo/branch',
1246
 
                                    format=bzrlib.bzrdir.BzrDirMetaFormat1())
 
1235
                                    format=bzrdir.BzrDirMetaFormat1())
1247
1236
        # Do a heavy checkout
1248
1237
        transport.mkdir('tree')
1249
1238
        transport.mkdir('tree/checkout')
1250
 
        co_branch = bzrlib.bzrdir.BzrDir.create_branch_convenience('tree/checkout',
1251
 
            format=bzrlib.bzrdir.BzrDirMetaFormat1())
 
1239
        co_branch = bzrdir.BzrDir.create_branch_convenience('tree/checkout',
 
1240
            format=bzrdir.BzrDirMetaFormat1())
1252
1241
        co_branch.bind(repo_branch)
1253
1242
        # Do a light checkout of the heavy one
1254
1243
        transport.mkdir('tree/lightcheckout')
1255
 
        lco_dir = bzrlib.bzrdir.BzrDirMetaFormat1().initialize('tree/lightcheckout')
1256
 
        bzrlib.branch.BranchReferenceFormat().initialize(lco_dir, co_branch)
 
1244
        lco_dir = bzrdir.BzrDirMetaFormat1().initialize('tree/lightcheckout')
 
1245
        branch.BranchReferenceFormat().initialize(lco_dir, co_branch)
1257
1246
        lco_dir.create_workingtree()
1258
1247
        lco_tree = lco_dir.open_workingtree()
1259
1248
 
1352
1341
            raise TestSkipped("don't use oslocks on win32 in unix manner")
1353
1342
 
1354
1343
        tree = self.make_branch_and_tree('branch',
1355
 
                                         format=bzrlib.bzrdir.BzrDirFormat6())
 
1344
                                         format=bzrdir.BzrDirFormat6())
1356
1345
 
1357
1346
        # Test all permutations of locking the working tree, branch and repository
1358
1347
        # XXX: Well not yet, as we can't query oslocks yet. Currently, it's
1385
1374
 
1386
1375
Branch history:
1387
1376
         0 revisions
1388
 
         0 committers
1389
1377
 
1390
1378
Repository:
1391
1379
         0 revisions
1392
 
         0 KiB
1393
1380
""" % ('branch', tree.branch.repository._format.get_format_description(),
1394
1381
       ), out)
1395
1382
        self.assertEqual('', err)
1419
1406
 
1420
1407
Branch history:
1421
1408
         0 revisions
1422
 
         0 committers
1423
1409
 
1424
1410
Repository:
1425
1411
         0 revisions
1426
 
         0 KiB
1427
1412
""" % ('branch', tree.branch.repository._format.get_format_description(),
1428
1413
       ), out)
1429
1414
        self.assertEqual('', err)
1430
1415
        tree.unlock()
 
1416
 
 
1417
    def test_info_stacked(self):
 
1418
        # We have a mainline
 
1419
        trunk_tree = self.make_branch_and_tree('mainline',
 
1420
            format='1.6')
 
1421
        trunk_tree.commit('mainline')
 
1422
        # and a branch from it which is stacked
 
1423
        new_dir = trunk_tree.bzrdir.sprout('newbranch', stacked=True)
 
1424
        out, err = self.run_bzr('info newbranch')
 
1425
        self.assertEqual(
 
1426
"""Standalone tree (format: 1.6)
 
1427
Location:
 
1428
  branch root: newbranch
 
1429
 
 
1430
Related branches:
 
1431
  parent branch: mainline
 
1432
     stacked on: mainline
 
1433
""", out)
 
1434
        self.assertEqual("", err)