~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Ian Clatworthy
  • Date: 2007-08-13 14:33:10 UTC
  • mto: (2733.1.1 ianc-integration)
  • mto: This revision was merged to the branch mainline in revision 2734.
  • Revision ID: ian.clatworthy@internode.on.net-20070813143310-twhj4la0qnupvze8
Added Quick Start Summary

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006-2010 Canonical Ltd
 
1
# Copyright (C) 2006, 2007 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
 
18
18
"""Tests for the info command of bzr."""
19
19
 
 
20
import os
20
21
import sys
21
22
 
 
23
import bzrlib
22
24
from bzrlib import (
23
 
    branch,
24
25
    bzrdir,
25
 
    errors,
26
 
    info,
27
26
    osutils,
28
 
    tests,
29
 
    upgrade,
 
27
    repository,
30
28
    urlutils,
31
29
    )
32
 
from bzrlib.transport import memory
33
 
 
34
 
 
35
 
class TestInfo(tests.TestCaseWithTransport):
36
 
 
37
 
    def setUp(self):
38
 
        super(TestInfo, self).setUp()
39
 
        self._repo_strings = "2a"
 
30
from bzrlib.osutils import format_date
 
31
from bzrlib.tests import TestSkipped
 
32
from bzrlib.tests.blackbox import ExternalBase
 
33
 
 
34
 
 
35
class TestInfo(ExternalBase):
40
36
 
41
37
    def test_info_non_existing(self):
42
 
        self.vfs_transport_factory = memory.MemoryServer
43
 
        location = self.get_url()
 
38
        if sys.platform == "win32":
 
39
            location = "C:/i/do/not/exist/"
 
40
        else:
 
41
            location = "/i/do/not/exist/"
44
42
        out, err = self.run_bzr('info '+location, retcode=3)
45
43
        self.assertEqual(out, '')
46
 
        self.assertEqual(err, 'bzr: ERROR: Not a branch: "%s".\n' % location)
 
44
        self.assertEqual(err, 'bzr: ERROR: Not a branch: %s\n' % location)
47
45
 
48
46
    def test_info_standalone(self):
49
47
        transport = self.get_transport()
62
60
""", out)
63
61
        self.assertEqual('', err)
64
62
 
65
 
        # Standalone branch - verbose mode
66
63
        out, err = self.run_bzr('info standalone -v')
67
64
        self.assertEqualDiff(
68
65
"""Standalone tree (format: weave)
87
84
 
88
85
Branch history:
89
86
         0 revisions
90
 
 
91
 
Repository:
92
 
         0 revisions
93
 
""", out)
94
 
        self.assertEqual('', err)
95
 
 
96
 
        # Standalone branch - really verbose mode
97
 
        out, err = self.run_bzr('info standalone -vv')
98
 
        self.assertEqualDiff(
99
 
"""Standalone tree (format: weave)
100
 
Location:
101
 
  branch root: standalone
102
 
 
103
 
Format:
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
108
 
 
109
 
In the working tree:
110
 
         0 unchanged
111
 
         0 modified
112
 
         1 added
113
 
         0 removed
114
 
         0 renamed
115
 
         0 unknown
116
 
         0 ignored
117
 
         0 versioned subdirectories
118
 
 
119
 
Branch history:
120
 
         0 revisions
121
87
         0 committers
122
88
 
123
89
Repository:
124
90
         0 revisions
 
91
         0 KiB
125
92
""", out)
126
93
        self.assertEqual('', err)
127
94
        tree1.commit('commit one')
128
95
        rev = branch1.repository.get_revision(branch1.revision_history()[0])
129
 
        datestring_first = osutils.format_date(rev.timestamp, rev.timezone)
 
96
        datestring_first = format_date(rev.timestamp, rev.timezone)
130
97
 
131
98
        # Branch standalone with push location
132
99
        branch2 = branch1.bzrdir.sprout('branch').open_branch()
172
139
 
173
140
Branch history:
174
141
         1 revision
 
142
         1 committer
175
143
         0 days old
176
144
   first revision: %s
177
145
  latest revision: %s
178
146
 
179
147
Repository:
180
148
         1 revision
 
149
         %d KiB
181
150
""" % (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,
182
155
       ), out)
183
156
        self.assertEqual('', err)
184
157
 
186
159
        # (creates backup as unknown)
187
160
        branch1.bzrdir.sprout('bound')
188
161
        knit1_format = bzrdir.format_registry.make_bzrdir('knit')
189
 
        upgrade.upgrade('bound', knit1_format)
190
 
        branch3 = bzrdir.BzrDir.open('bound').open_branch()
 
162
        bzrlib.upgrade.upgrade('bound', knit1_format)
 
163
        branch3 = bzrlib.bzrdir.BzrDir.open('bound').open_branch()
191
164
        branch3.bind(branch1)
192
165
        bound_tree = branch3.bzrdir.open_workingtree()
193
166
        out, err = self.run_bzr('info -v bound')
212
185
         0 added
213
186
         0 removed
214
187
         0 renamed
215
 
         0 unknown
216
 
         1 ignored
 
188
         1 unknown
 
189
         0 ignored
217
190
         0 versioned subdirectories
218
191
 
219
192
Branch history:
220
193
         1 revision
 
194
         1 committer
221
195
         0 days old
222
196
   first revision: %s
223
197
  latest revision: %s
224
198
 
225
199
Repository:
226
200
         1 revision
 
201
         %d KiB
227
202
""" % (bound_tree._format.get_format_description(),
228
203
       branch3._format.get_format_description(),
229
204
       branch3.repository._format.get_format_description(),
230
205
       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,
231
210
       ), out)
232
211
        self.assertEqual('', err)
233
212
 
234
213
        # Checkout standalone (same as above, but does not have parent set)
235
 
        branch4 = bzrdir.BzrDir.create_branch_convenience('checkout',
 
214
        branch4 = bzrlib.bzrdir.BzrDir.create_branch_convenience('checkout',
236
215
            format=knit1_format)
237
216
        branch4.bind(branch1)
238
217
        branch4.bzrdir.open_workingtree().update()
261
240
 
262
241
Branch history:
263
242
         1 revision
 
243
         1 committer
264
244
         0 days old
265
245
   first revision: %s
266
246
  latest revision: %s
267
247
 
268
248
Repository:
269
249
         1 revision
 
250
         %d KiB
270
251
""" % (branch4.repository._format.get_format_description(),
271
252
       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,
272
257
       ), out)
273
258
        self.assertEqual('', err)
274
259
 
277
262
        branch5 = tree5.branch
278
263
        out, err = self.run_bzr('info -v lightcheckout')
279
264
        self.assertEqualDiff(
280
 
"""Lightweight checkout (format: %s)
 
265
"""Lightweight checkout (format: dirstate or dirstate-tags)
281
266
Location:
282
267
  light checkout root: lightcheckout
283
268
   checkout of branch: standalone
284
269
 
285
270
Format:
286
271
       control: Meta directory format 1
287
 
  working tree: Working tree format 6
 
272
  working tree: Working tree format 4
288
273
        branch: Branch format 4
289
274
    repository: Weave repository format 6
290
275
 
300
285
 
301
286
Branch history:
302
287
         1 revision
 
288
         1 committer
303
289
         0 days old
304
290
   first revision: %s
305
291
  latest revision: %s
306
292
 
307
293
Repository:
308
294
         1 revision
309
 
""" % (self._repo_strings, datestring_first, datestring_first,), out)
 
295
         0 KiB
 
296
""" % (datestring_first, datestring_first,), out)
310
297
        self.assertEqual('', err)
311
298
 
312
299
        # Update initial standalone branch
314
301
        tree1.add('b')
315
302
        tree1.commit('commit two')
316
303
        rev = branch1.repository.get_revision(branch1.revision_history()[-1])
317
 
        datestring_last = osutils.format_date(rev.timestamp, rev.timezone)
 
304
        datestring_last = format_date(rev.timestamp, rev.timezone)
318
305
 
319
306
        # Out of date branched standalone branch will not be detected
320
307
        out, err = self.run_bzr('info -v branch')
345
332
 
346
333
Branch history:
347
334
         1 revision
 
335
         1 committer
348
336
         0 days old
349
337
   first revision: %s
350
338
  latest revision: %s
351
339
 
352
340
Repository:
353
341
         1 revision
 
342
         0 KiB
354
343
""" % (datestring_first, datestring_first,
355
344
       ), out)
356
345
        self.assertEqual('', err)
380
369
         0 added
381
370
         0 removed
382
371
         0 renamed
383
 
         0 unknown
384
 
         1 ignored
 
372
         1 unknown
 
373
         0 ignored
385
374
         0 versioned subdirectories
386
375
 
387
376
Branch history:
388
377
         1 revision
 
378
         1 committer
389
379
         0 days old
390
380
   first revision: %s
391
381
  latest revision: %s
392
382
 
393
383
Repository:
394
384
         1 revision
 
385
         %d KiB
395
386
""" % (branch3.repository._format.get_format_description(),
396
387
       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,
397
392
       ), out)
398
393
        self.assertEqual('', err)
399
394
 
425
420
 
426
421
Branch history:
427
422
         1 revision
 
423
         1 committer
428
424
         0 days old
429
425
   first revision: %s
430
426
  latest revision: %s
431
427
 
432
428
Repository:
433
429
         1 revision
 
430
         %d KiB
434
431
""" % (branch4.repository._format.get_format_description(),
435
432
       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,
436
437
       ), out)
437
438
        self.assertEqual('', err)
438
439
 
439
440
        # Out of date lightweight checkout
440
441
        out, err = self.run_bzr('info lightcheckout --verbose')
441
442
        self.assertEqualDiff(
442
 
"""Lightweight checkout (format: %s)
 
443
"""Lightweight checkout (format: dirstate or dirstate-tags)
443
444
Location:
444
445
  light checkout root: lightcheckout
445
446
   checkout of branch: standalone
446
447
 
447
448
Format:
448
449
       control: Meta directory format 1
449
 
  working tree: Working tree format 6
 
450
  working tree: Working tree format 4
450
451
        branch: Branch format 4
451
452
    repository: Weave repository format 6
452
453
 
464
465
 
465
466
Branch history:
466
467
         2 revisions
 
468
         1 committer
467
469
         0 days old
468
470
   first revision: %s
469
471
  latest revision: %s
470
472
 
471
473
Repository:
472
474
         2 revisions
473
 
""" % (self._repo_strings, datestring_first, datestring_last,), out)
 
475
         0 KiB
 
476
""" % (datestring_first, datestring_last,), out)
474
477
        self.assertEqual('', err)
475
478
 
476
479
    def test_info_standalone_no_tree(self):
480
483
        repo = branch.repository
481
484
        out, err = self.run_bzr('info branch -v')
482
485
        self.assertEqualDiff(
483
 
"""Standalone branch (format: %s)
 
486
"""Standalone branch (format: dirstate or knit)
484
487
Location:
485
488
  branch root: branch
486
489
 
491
494
 
492
495
Branch history:
493
496
         0 revisions
 
497
         0 committers
494
498
 
495
499
Repository:
496
500
         0 revisions
497
 
""" % (info.describe_format(repo.bzrdir, repo, branch, None),
498
 
       format.get_branch_format().get_format_description(),
 
501
         0 KiB
 
502
""" % (format.get_branch_format().get_format_description(),
499
503
       format.repository_format.get_format_description(),
500
504
       ), out)
501
505
        self.assertEqual('', err)
519
523
 
520
524
Repository:
521
525
         0 revisions
 
526
         0 KiB
522
527
""" % ('repo', format.repository_format.get_format_description(),
523
528
       ), out)
524
529
        self.assertEqual('', err)
541
546
 
542
547
Branch history:
543
548
         0 revisions
 
549
         0 committers
544
550
 
545
551
Repository:
546
552
         0 revisions
 
553
         0 KiB
547
554
""" % (format.get_branch_format().get_format_description(),
548
555
       format.repository_format.get_format_description(),
549
556
       ), out)
552
559
        # Create lightweight checkout
553
560
        transport.mkdir('tree')
554
561
        transport.mkdir('tree/lightcheckout')
555
 
        tree2 = branch1.create_checkout('tree/lightcheckout',
 
562
        tree2 = branch1.create_checkout('tree/lightcheckout', 
556
563
            lightweight=True)
557
564
        branch2 = tree2.branch
558
565
        self.assertCheckoutStatusOutput('-v tree/lightcheckout', tree2,
568
575
        tree2.add('a')
569
576
        tree2.commit('commit one')
570
577
        rev = repo.get_revision(branch2.revision_history()[0])
571
 
        datestring_first = osutils.format_date(rev.timestamp, rev.timezone)
 
578
        datestring_first = format_date(rev.timestamp, rev.timezone)
572
579
        out, err = self.run_bzr('info tree/lightcheckout --verbose')
573
580
        self.assertEqualDiff(
574
 
"""Lightweight checkout (format: %s)
 
581
"""Lightweight checkout (format: dirstate or dirstate-tags)
575
582
Location:
576
583
  light checkout root: tree/lightcheckout
577
584
   checkout of branch: repo/branch
579
586
 
580
587
Format:
581
588
       control: Meta directory format 1
582
 
  working tree: Working tree format 6
 
589
  working tree: Working tree format 4
583
590
        branch: %s
584
591
    repository: %s
585
592
 
595
602
 
596
603
Branch history:
597
604
         1 revision
 
605
         1 committer
598
606
         0 days old
599
607
   first revision: %s
600
608
  latest revision: %s
601
609
 
602
610
Repository:
603
611
         1 revision
604
 
""" % (self._repo_strings, format.get_branch_format().get_format_description(),
 
612
         %d KiB
 
613
""" % (format.get_branch_format().get_format_description(),
605
614
       format.repository_format.get_format_description(),
606
615
       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,
607
619
       ), out)
608
620
        self.assertEqual('', err)
609
621
 
610
622
        # Out of date checkout
611
623
        out, err = self.run_bzr('info -v tree/checkout')
612
624
        self.assertEqualDiff(
613
 
"""Checkout (format: unnamed)
 
625
"""Checkout (format: dirstate)
614
626
Location:
615
627
       checkout root: tree/checkout
616
628
  checkout of branch: repo/branch
617
629
 
618
630
Format:
619
631
       control: Meta directory format 1
620
 
  working tree: Working tree format 6
 
632
  working tree: Working tree format 4
621
633
        branch: %s
622
634
    repository: %s
623
635
 
635
647
 
636
648
Branch history:
637
649
         0 revisions
 
650
         0 committers
638
651
 
639
652
Repository:
640
653
         0 revisions
 
654
         0 KiB
641
655
""" % (format.get_branch_format().get_format_description(),
642
656
       format.repository_format.get_format_description(),
643
657
       ), out)
649
663
        tree3.add('b')
650
664
        out, err = self.run_bzr('info tree/checkout --verbose')
651
665
        self.assertEqualDiff(
652
 
"""Checkout (format: unnamed)
 
666
"""Checkout (format: dirstate)
653
667
Location:
654
668
       checkout root: tree/checkout
655
669
  checkout of branch: repo/branch
656
670
 
657
671
Format:
658
672
       control: Meta directory format 1
659
 
  working tree: Working tree format 6
 
673
  working tree: Working tree format 4
660
674
        branch: %s
661
675
    repository: %s
662
676
 
672
686
 
673
687
Branch history:
674
688
         1 revision
 
689
         1 committer
675
690
         0 days old
676
691
   first revision: %s
677
692
  latest revision: %s
678
693
 
679
694
Repository:
680
695
         1 revision
 
696
         %d KiB
681
697
""" % (format.get_branch_format().get_format_description(),
682
698
       format.repository_format.get_format_description(),
683
699
       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,
684
703
       ), out)
685
704
        self.assertEqual('', err)
686
705
        tree3.commit('commit two')
687
706
 
688
707
        # Out of date lightweight checkout
689
708
        rev = repo.get_revision(branch1.revision_history()[-1])
690
 
        datestring_last = osutils.format_date(rev.timestamp, rev.timezone)
 
709
        datestring_last = format_date(rev.timestamp, rev.timezone)
691
710
        out, err = self.run_bzr('info tree/lightcheckout --verbose')
692
711
        self.assertEqualDiff(
693
 
"""Lightweight checkout (format: %s)
 
712
"""Lightweight checkout (format: dirstate or dirstate-tags)
694
713
Location:
695
714
  light checkout root: tree/lightcheckout
696
715
   checkout of branch: repo/branch
698
717
 
699
718
Format:
700
719
       control: Meta directory format 1
701
 
  working tree: Working tree format 6
 
720
  working tree: Working tree format 4
702
721
        branch: %s
703
722
    repository: %s
704
723
 
716
735
 
717
736
Branch history:
718
737
         2 revisions
 
738
         1 committer
719
739
         0 days old
720
740
   first revision: %s
721
741
  latest revision: %s
722
742
 
723
743
Repository:
724
744
         2 revisions
725
 
""" % (self._repo_strings, format.get_branch_format().get_format_description(),
 
745
         %d KiB
 
746
""" % (format.get_branch_format().get_format_description(),
726
747
       format.repository_format.get_format_description(),
727
748
       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,
728
752
       ), out)
729
753
        self.assertEqual('', err)
730
754
 
743
767
 
744
768
Branch history:
745
769
         2 revisions
 
770
         1 committer
746
771
         0 days old
747
772
   first revision: %s
748
773
  latest revision: %s
749
774
 
750
775
Repository:
751
776
         2 revisions
 
777
         %d KiB
752
778
""" % (format.get_branch_format().get_format_description(),
753
779
       format.repository_format.get_format_description(),
754
780
       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,
755
784
       ), out)
756
785
        self.assertEqual('', err)
757
786
 
768
797
 
769
798
Repository:
770
799
         2 revisions
 
800
         %d KiB
771
801
""" % (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,
772
805
       ), out)
773
806
        self.assertEqual('', err)
774
807
 
793
826
 
794
827
Repository:
795
828
         0 revisions
 
829
         0 KiB
796
830
""" % (format.repository_format.get_format_description(),
797
831
       ), out)
798
832
        self.assertEqual('', err)
829
863
 
830
864
Branch history:
831
865
         0 revisions
 
866
         0 committers
832
867
 
833
868
Repository:
834
869
         0 revisions
 
870
         0 KiB
835
871
""" % (format.get_branch_format().get_format_description(),
836
872
       format.repository_format.get_format_description(),
837
873
       ), out)
843
879
        tree1.add('a')
844
880
        tree1.commit('commit one')
845
881
        rev = repo.get_revision(branch1.revision_history()[0])
846
 
        datestring_first = osutils.format_date(rev.timestamp, rev.timezone)
 
882
        datestring_first = format_date(rev.timestamp, rev.timezone)
847
883
        out, err = self.run_bzr('info -v repo/branch1')
848
884
        self.assertEqualDiff(
849
885
"""Repository tree (format: knit)
869
905
 
870
906
Branch history:
871
907
         1 revision
 
908
         1 committer
872
909
         0 days old
873
910
   first revision: %s
874
911
  latest revision: %s
875
912
 
876
913
Repository:
877
914
         1 revision
 
915
         %d KiB
878
916
""" % (format.get_branch_format().get_format_description(),
879
917
       format.repository_format.get_format_description(),
880
918
       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,
881
922
       ), out)
882
923
        self.assertEqual('', err)
883
924
 
910
951
 
911
952
Branch history:
912
953
         0 revisions
 
954
         0 committers
913
955
 
914
956
Repository:
915
957
         1 revision
 
958
         %d KiB
916
959
""" % (format.get_branch_format().get_format_description(),
917
960
       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,
918
964
       ), out)
919
965
        self.assertEqual('', err)
920
966
 
949
995
 
950
996
Branch history:
951
997
         1 revision
 
998
         1 committer
952
999
         0 days old
953
1000
   first revision: %s
954
1001
  latest revision: %s
955
1002
 
956
1003
Repository:
957
1004
         1 revision
 
1005
         %d KiB
958
1006
""" % (format.get_branch_format().get_format_description(),
959
1007
       format.repository_format.get_format_description(),
960
1008
       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,
961
1012
       ), out)
962
1013
        self.assertEqual('', err)
963
1014
 
976
1027
 
977
1028
Repository:
978
1029
         1 revision
 
1030
         %d KiB
979
1031
""" % (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,
980
1035
       ),
981
1036
       out)
982
1037
        self.assertEqual('', err)
983
 
 
 
1038
    
984
1039
    def test_info_shared_repository_with_tree_in_root(self):
985
1040
        format = bzrdir.format_registry.make_bzrdir('knit')
986
1041
        transport = self.get_transport()
1002
1057
 
1003
1058
Repository:
1004
1059
         0 revisions
 
1060
         0 KiB
1005
1061
""" % (format.repository_format.get_format_description(),
1006
1062
       ), out)
1007
1063
        self.assertEqual('', err)
1035
1091
 
1036
1092
Branch history:
1037
1093
         0 revisions
 
1094
         0 committers
1038
1095
 
1039
1096
Repository:
1040
1097
         0 revisions
 
1098
         0 KiB
1041
1099
""" % (format.get_branch_format().get_format_description(),
1042
1100
       format.repository_format.get_format_description(),
1043
1101
       ), out)
1044
1102
        self.assertEqual('', err)
1045
1103
 
1046
 
    def test_info_repository_hook(self):
1047
 
        format = bzrdir.format_registry.make_bzrdir('knit')
1048
 
        def repo_info(repo, stats, outf):
1049
 
            outf.write("more info\n")
1050
 
        info.hooks.install_named_hook('repository', repo_info, None)
1051
 
        # Create shared repository with working trees
1052
 
        repo = self.make_repository('repo', shared=True, format=format)
1053
 
        out, err = self.run_bzr('info -v repo')
1054
 
        self.assertEqualDiff(
1055
 
"""Shared repository with trees (format: dirstate or dirstate-tags or knit)
1056
 
Location:
1057
 
  shared repository: repo
1058
 
 
1059
 
Format:
1060
 
       control: Meta directory format 1
1061
 
    repository: %s
1062
 
 
1063
 
Create working tree for new branches inside the repository.
1064
 
 
1065
 
Repository:
1066
 
         0 revisions
1067
 
more info
1068
 
""" % (format.repository_format.get_format_description(),
1069
 
       ), out)
1070
 
        self.assertEqual('', err)
1071
 
 
1072
 
    def assertCheckoutStatusOutput(self,
 
1104
    def assertCheckoutStatusOutput(self, 
1073
1105
        command_string, lco_tree, shared_repo=None,
1074
1106
        repo_branch=None,
1075
1107
        tree_locked=False,
1084
1116
        allow us, the test writers, to document what *should* be present in
1085
1117
        the output. Removing this separation would remove the value of the
1086
1118
        tests.
1087
 
 
 
1119
        
1088
1120
        :param path: the path to the light checkout.
1089
1121
        :param lco_tree: the tree object for the light checkout.
1090
1122
        :param shared_repo: A shared repository is in use, expect that in
1094
1126
        :param tree_locked: If true, expect the tree to be locked.
1095
1127
        :param branch_locked: If true, expect the branch to be locked.
1096
1128
        :param repo_locked: If true, expect the repository to be locked.
1097
 
            Note that the lco_tree.branch.repository is inspected, and if is not
1098
 
            actually locked then this parameter is overridden. This is because
1099
 
            pack repositories do not have any public API for obtaining an
1100
 
            exclusive repository wide lock.
1101
 
        :param verbose: verbosity level: 2 or higher to show committers
 
1129
        :param verbose: If true, expect verbose output
1102
1130
        """
1103
1131
        def friendly_location(url):
1104
1132
            path = urlutils.unescape_for_display(url, 'ascii')
1105
1133
            try:
1106
 
                return osutils.relpath(osutils.getcwd(), path)
 
1134
                return osutils.relpath(os.getcwd(), path)
1107
1135
            except errors.PathNotChild:
1108
1136
                return path
1109
1137
 
1110
 
        if tree_locked:
1111
 
            # We expect this to fail because of locking errors.
1112
 
            # (A write-locked file cannot be read-locked
1113
 
            # in the different process -- either on win32 or on linux).
 
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).
1114
1141
            # This should be removed when the locking errors are fixed.
1115
 
            self.expectFailure('OS locks are exclusive '
1116
 
                'for different processes (Bug #174055)',
1117
 
                self.run_bzr_subprocess,
1118
 
                'info ' + command_string)
 
1142
            args = command_string.split(' ')
 
1143
            self.run_bzr_error([], 'info', *args)
 
1144
            return
1119
1145
        out, err = self.run_bzr('info %s' % command_string)
1120
1146
        description = {
1121
1147
            (True, True): 'Lightweight checkout',
1123
1149
            (False, True): 'Lightweight checkout',
1124
1150
            (False, False): 'Checkout',
1125
1151
            }[(shared_repo is not None, light_checkout)]
1126
 
        format = {True: self._repo_strings,
1127
 
                  False: 'unnamed'}[light_checkout]
1128
 
        if repo_locked:
1129
 
            repo_locked = lco_tree.branch.repository.get_physical_lock_status()
 
1152
        format = {True: 'dirstate or dirstate-tags',
 
1153
                  False: 'dirstate'}[light_checkout]
1130
1154
        if repo_locked or branch_locked or tree_locked:
1131
1155
            def locked_message(a_bool):
1132
1156
                if a_bool:
1167
1191
        else:
1168
1192
            branch_data = ("   checkout of branch: %s\n" %
1169
1193
                lco_tree.branch.bzrdir.root_transport.base)
1170
 
 
1171
 
        if verbose >= 2:
 
1194
        
 
1195
        if verbose:
1172
1196
            verbose_info = '         0 committers\n'
1173
1197
        else:
1174
1198
            verbose_info = ''
1175
 
 
 
1199
            
1176
1200
        self.assertEqualDiff(
1177
1201
"""%s (format: %s)
1178
1202
Location:
1198
1222
%s
1199
1223
Repository:
1200
1224
         0 revisions
 
1225
         0 KiB
1201
1226
""" %  (description,
1202
1227
        format,
1203
1228
        tree_data,
1214
1239
        transport = self.get_transport()
1215
1240
        # Create shared repository with a branch
1216
1241
        repo = self.make_repository('repo', shared=True,
1217
 
                                    format=bzrdir.BzrDirMetaFormat1())
 
1242
                                    format=bzrlib.bzrdir.BzrDirMetaFormat1())
1218
1243
        repo.set_make_working_trees(False)
1219
1244
        repo.bzrdir.root_transport.mkdir('branch')
1220
1245
        repo_branch = repo.bzrdir.create_branch_convenience('repo/branch',
1221
 
                                    format=bzrdir.BzrDirMetaFormat1())
 
1246
                                    format=bzrlib.bzrdir.BzrDirMetaFormat1())
1222
1247
        # Do a heavy checkout
1223
1248
        transport.mkdir('tree')
1224
1249
        transport.mkdir('tree/checkout')
1225
 
        co_branch = bzrdir.BzrDir.create_branch_convenience('tree/checkout',
1226
 
            format=bzrdir.BzrDirMetaFormat1())
 
1250
        co_branch = bzrlib.bzrdir.BzrDir.create_branch_convenience('tree/checkout',
 
1251
            format=bzrlib.bzrdir.BzrDirMetaFormat1())
1227
1252
        co_branch.bind(repo_branch)
1228
1253
        # Do a light checkout of the heavy one
1229
1254
        transport.mkdir('tree/lightcheckout')
1230
 
        lco_dir = bzrdir.BzrDirMetaFormat1().initialize('tree/lightcheckout')
1231
 
        branch.BranchReferenceFormat().initialize(lco_dir,
1232
 
            target_branch=co_branch)
 
1255
        lco_dir = bzrlib.bzrdir.BzrDirMetaFormat1().initialize('tree/lightcheckout')
 
1256
        bzrlib.branch.BranchReferenceFormat().initialize(lco_dir, co_branch)
1233
1257
        lco_dir.create_workingtree()
1234
1258
        lco_tree = lco_dir.open_workingtree()
1235
1259
 
1325
1349
 
1326
1350
    def test_info_locking_oslocks(self):
1327
1351
        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
1332
 
        # call here.
1333
 
        self.thisFailsStrictLockCheck()
 
1352
            raise TestSkipped("don't use oslocks on win32 in unix manner")
1334
1353
 
1335
1354
        tree = self.make_branch_and_tree('branch',
1336
 
                                         format=bzrdir.BzrDirFormat6())
 
1355
                                         format=bzrlib.bzrdir.BzrDirFormat6())
1337
1356
 
1338
1357
        # Test all permutations of locking the working tree, branch and repository
1339
1358
        # XXX: Well not yet, as we can't query oslocks yet. Currently, it's
1366
1385
 
1367
1386
Branch history:
1368
1387
         0 revisions
 
1388
         0 committers
1369
1389
 
1370
1390
Repository:
1371
1391
         0 revisions
 
1392
         0 KiB
1372
1393
""" % ('branch', tree.branch.repository._format.get_format_description(),
1373
1394
       ), out)
1374
1395
        self.assertEqual('', err)
1398
1419
 
1399
1420
Branch history:
1400
1421
         0 revisions
 
1422
         0 committers
1401
1423
 
1402
1424
Repository:
1403
1425
         0 revisions
 
1426
         0 KiB
1404
1427
""" % ('branch', tree.branch.repository._format.get_format_description(),
1405
1428
       ), out)
1406
1429
        self.assertEqual('', err)
1407
1430
        tree.unlock()
1408
 
 
1409
 
    def test_info_stacked(self):
1410
 
        # We have a mainline
1411
 
        trunk_tree = self.make_branch_and_tree('mainline',
1412
 
            format='1.6')
1413
 
        trunk_tree.commit('mainline')
1414
 
        # and a branch from it which is stacked
1415
 
        new_dir = trunk_tree.bzrdir.sprout('newbranch', stacked=True)
1416
 
        out, err = self.run_bzr('info newbranch')
1417
 
        self.assertEqual(
1418
 
"""Standalone tree (format: 1.6)
1419
 
Location:
1420
 
  branch root: newbranch
1421
 
 
1422
 
Related branches:
1423
 
  parent branch: mainline
1424
 
     stacked on: mainline
1425
 
""", out)
1426
 
        self.assertEqual("", err)