~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Daniel Watkins
  • Date: 2009-02-08 14:26:35 UTC
  • mto: (3989.1.1 bzr.ab.integration)
  • mto: This revision was merged to the branch mainline in revision 3990.
  • Revision ID: daniel@daniel-watkins.co.uk-20090208142635-zyzycxxz7i6p3dih
RevertedĀ someĀ irrelevantĀ changes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
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."""
25
25
    errors,
26
26
    info,
27
27
    osutils,
28
 
    tests,
29
28
    upgrade,
30
29
    urlutils,
31
30
    )
32
 
from bzrlib.transport import memory
33
 
 
34
 
class TestInfo(tests.TestCaseWithTransport):
35
 
 
36
 
    def setUp(self):
37
 
        super(TestInfo, self).setUp()
38
 
        self._repo_strings = "2a"
 
31
from bzrlib.osutils import format_date
 
32
from bzrlib.tests import TestSkipped
 
33
from bzrlib.tests.blackbox import ExternalBase
 
34
 
 
35
 
 
36
class TestInfo(ExternalBase):
39
37
 
40
38
    def test_info_non_existing(self):
41
 
        self.vfs_transport_factory = memory.MemoryServer
42
 
        location = self.get_url()
 
39
        if sys.platform == "win32":
 
40
            location = "C:/i/do/not/exist/"
 
41
        else:
 
42
            location = "/i/do/not/exist/"
43
43
        out, err = self.run_bzr('info '+location, retcode=3)
44
44
        self.assertEqual(out, '')
45
45
        self.assertEqual(err, 'bzr: ERROR: Not a branch: "%s".\n' % location)
61
61
""", out)
62
62
        self.assertEqual('', err)
63
63
 
64
 
        # Standalone branch - verbose mode
65
64
        out, err = self.run_bzr('info standalone -v')
66
65
        self.assertEqualDiff(
67
66
"""Standalone tree (format: weave)
86
85
 
87
86
Branch history:
88
87
         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
120
88
         0 committers
121
89
 
122
90
Repository:
125
93
        self.assertEqual('', err)
126
94
        tree1.commit('commit one')
127
95
        rev = branch1.repository.get_revision(branch1.revision_history()[0])
128
 
        datestring_first = osutils.format_date(rev.timestamp, rev.timezone)
 
96
        datestring_first = format_date(rev.timestamp, rev.timezone)
129
97
 
130
98
        # Branch standalone with push location
131
99
        branch2 = branch1.bzrdir.sprout('branch').open_branch()
171
139
 
172
140
Branch history:
173
141
         1 revision
 
142
         1 committer
174
143
         0 days old
175
144
   first revision: %s
176
145
  latest revision: %s
217
186
 
218
187
Branch history:
219
188
         1 revision
 
189
         1 committer
220
190
         0 days old
221
191
   first revision: %s
222
192
  latest revision: %s
260
230
 
261
231
Branch history:
262
232
         1 revision
 
233
         1 committer
263
234
         0 days old
264
235
   first revision: %s
265
236
  latest revision: %s
276
247
        branch5 = tree5.branch
277
248
        out, err = self.run_bzr('info -v lightcheckout')
278
249
        self.assertEqualDiff(
279
 
"""Lightweight checkout (format: %s)
 
250
"""Lightweight checkout (format: 1.6 or 1.6.1-rich-root \
 
251
or 1.9 or 1.9-rich-root \
 
252
or dirstate or dirstate-tags or \
 
253
pack-0.92 or rich-root or rich-root-pack)
280
254
Location:
281
255
  light checkout root: lightcheckout
282
256
   checkout of branch: standalone
283
257
 
284
258
Format:
285
259
       control: Meta directory format 1
286
 
  working tree: Working tree format 6
 
260
  working tree: Working tree format 4
287
261
        branch: Branch format 4
288
262
    repository: Weave repository format 6
289
263
 
299
273
 
300
274
Branch history:
301
275
         1 revision
 
276
         1 committer
302
277
         0 days old
303
278
   first revision: %s
304
279
  latest revision: %s
305
280
 
306
281
Repository:
307
282
         1 revision
308
 
""" % (self._repo_strings, datestring_first, datestring_first,), out)
 
283
""" % (datestring_first, datestring_first,), out)
309
284
        self.assertEqual('', err)
310
285
 
311
286
        # Update initial standalone branch
313
288
        tree1.add('b')
314
289
        tree1.commit('commit two')
315
290
        rev = branch1.repository.get_revision(branch1.revision_history()[-1])
316
 
        datestring_last = osutils.format_date(rev.timestamp, rev.timezone)
 
291
        datestring_last = format_date(rev.timestamp, rev.timezone)
317
292
 
318
293
        # Out of date branched standalone branch will not be detected
319
294
        out, err = self.run_bzr('info -v branch')
344
319
 
345
320
Branch history:
346
321
         1 revision
 
322
         1 committer
347
323
         0 days old
348
324
   first revision: %s
349
325
  latest revision: %s
385
361
 
386
362
Branch history:
387
363
         1 revision
 
364
         1 committer
388
365
         0 days old
389
366
   first revision: %s
390
367
  latest revision: %s
424
401
 
425
402
Branch history:
426
403
         1 revision
 
404
         1 committer
427
405
         0 days old
428
406
   first revision: %s
429
407
  latest revision: %s
438
416
        # Out of date lightweight checkout
439
417
        out, err = self.run_bzr('info lightcheckout --verbose')
440
418
        self.assertEqualDiff(
441
 
"""Lightweight checkout (format: %s)
 
419
"""Lightweight checkout (format: 1.6 or 1.6.1-rich-root or \
 
420
1.9 or 1.9-rich-root or \
 
421
dirstate or dirstate-tags or \
 
422
pack-0.92 or rich-root or rich-root-pack)
442
423
Location:
443
424
  light checkout root: lightcheckout
444
425
   checkout of branch: standalone
445
426
 
446
427
Format:
447
428
       control: Meta directory format 1
448
 
  working tree: Working tree format 6
 
429
  working tree: Working tree format 4
449
430
        branch: Branch format 4
450
431
    repository: Weave repository format 6
451
432
 
463
444
 
464
445
Branch history:
465
446
         2 revisions
 
447
         1 committer
466
448
         0 days old
467
449
   first revision: %s
468
450
  latest revision: %s
469
451
 
470
452
Repository:
471
453
         2 revisions
472
 
""" % (self._repo_strings, datestring_first, datestring_last,), out)
 
454
""" % (datestring_first, datestring_last,), out)
473
455
        self.assertEqual('', err)
474
456
 
475
457
    def test_info_standalone_no_tree(self):
490
472
 
491
473
Branch history:
492
474
         0 revisions
 
475
         0 committers
493
476
 
494
477
Repository:
495
478
         0 revisions
540
523
 
541
524
Branch history:
542
525
         0 revisions
 
526
         0 committers
543
527
 
544
528
Repository:
545
529
         0 revisions
551
535
        # Create lightweight checkout
552
536
        transport.mkdir('tree')
553
537
        transport.mkdir('tree/lightcheckout')
554
 
        tree2 = branch1.create_checkout('tree/lightcheckout',
 
538
        tree2 = branch1.create_checkout('tree/lightcheckout', 
555
539
            lightweight=True)
556
540
        branch2 = tree2.branch
557
541
        self.assertCheckoutStatusOutput('-v tree/lightcheckout', tree2,
567
551
        tree2.add('a')
568
552
        tree2.commit('commit one')
569
553
        rev = repo.get_revision(branch2.revision_history()[0])
570
 
        datestring_first = osutils.format_date(rev.timestamp, rev.timezone)
 
554
        datestring_first = format_date(rev.timestamp, rev.timezone)
571
555
        out, err = self.run_bzr('info tree/lightcheckout --verbose')
572
556
        self.assertEqualDiff(
573
 
"""Lightweight checkout (format: %s)
 
557
"""Lightweight checkout (format: 1.6 or 1.6.1-rich-root or \
 
558
1.9 or 1.9-rich-root or \
 
559
dirstate or dirstate-tags or \
 
560
pack-0.92 or rich-root or rich-root-pack)
574
561
Location:
575
562
  light checkout root: tree/lightcheckout
576
563
   checkout of branch: repo/branch
578
565
 
579
566
Format:
580
567
       control: Meta directory format 1
581
 
  working tree: Working tree format 6
 
568
  working tree: Working tree format 4
582
569
        branch: %s
583
570
    repository: %s
584
571
 
594
581
 
595
582
Branch history:
596
583
         1 revision
 
584
         1 committer
597
585
         0 days old
598
586
   first revision: %s
599
587
  latest revision: %s
600
588
 
601
589
Repository:
602
590
         1 revision
603
 
""" % (self._repo_strings, format.get_branch_format().get_format_description(),
 
591
""" % (format.get_branch_format().get_format_description(),
604
592
       format.repository_format.get_format_description(),
605
593
       datestring_first, datestring_first,
606
594
       ), out)
609
597
        # Out of date checkout
610
598
        out, err = self.run_bzr('info -v tree/checkout')
611
599
        self.assertEqualDiff(
612
 
"""Checkout (format: unnamed)
 
600
"""Checkout (format: dirstate)
613
601
Location:
614
602
       checkout root: tree/checkout
615
603
  checkout of branch: repo/branch
616
604
 
617
605
Format:
618
606
       control: Meta directory format 1
619
 
  working tree: Working tree format 6
 
607
  working tree: Working tree format 4
620
608
        branch: %s
621
609
    repository: %s
622
610
 
634
622
 
635
623
Branch history:
636
624
         0 revisions
 
625
         0 committers
637
626
 
638
627
Repository:
639
628
         0 revisions
648
637
        tree3.add('b')
649
638
        out, err = self.run_bzr('info tree/checkout --verbose')
650
639
        self.assertEqualDiff(
651
 
"""Checkout (format: unnamed)
 
640
"""Checkout (format: dirstate)
652
641
Location:
653
642
       checkout root: tree/checkout
654
643
  checkout of branch: repo/branch
655
644
 
656
645
Format:
657
646
       control: Meta directory format 1
658
 
  working tree: Working tree format 6
 
647
  working tree: Working tree format 4
659
648
        branch: %s
660
649
    repository: %s
661
650
 
671
660
 
672
661
Branch history:
673
662
         1 revision
 
663
         1 committer
674
664
         0 days old
675
665
   first revision: %s
676
666
  latest revision: %s
686
676
 
687
677
        # Out of date lightweight checkout
688
678
        rev = repo.get_revision(branch1.revision_history()[-1])
689
 
        datestring_last = osutils.format_date(rev.timestamp, rev.timezone)
 
679
        datestring_last = format_date(rev.timestamp, rev.timezone)
690
680
        out, err = self.run_bzr('info tree/lightcheckout --verbose')
691
681
        self.assertEqualDiff(
692
 
"""Lightweight checkout (format: %s)
 
682
"""Lightweight checkout (format: 1.6 or 1.6.1-rich-root or \
 
683
1.9 or 1.9-rich-root or \
 
684
dirstate or dirstate-tags or \
 
685
pack-0.92 or rich-root or rich-root-pack)
693
686
Location:
694
687
  light checkout root: tree/lightcheckout
695
688
   checkout of branch: repo/branch
697
690
 
698
691
Format:
699
692
       control: Meta directory format 1
700
 
  working tree: Working tree format 6
 
693
  working tree: Working tree format 4
701
694
        branch: %s
702
695
    repository: %s
703
696
 
715
708
 
716
709
Branch history:
717
710
         2 revisions
 
711
         1 committer
718
712
         0 days old
719
713
   first revision: %s
720
714
  latest revision: %s
721
715
 
722
716
Repository:
723
717
         2 revisions
724
 
""" % (self._repo_strings, format.get_branch_format().get_format_description(),
 
718
""" % (format.get_branch_format().get_format_description(),
725
719
       format.repository_format.get_format_description(),
726
720
       datestring_first, datestring_last,
727
721
       ), out)
742
736
 
743
737
Branch history:
744
738
         2 revisions
 
739
         1 committer
745
740
         0 days old
746
741
   first revision: %s
747
742
  latest revision: %s
828
823
 
829
824
Branch history:
830
825
         0 revisions
 
826
         0 committers
831
827
 
832
828
Repository:
833
829
         0 revisions
842
838
        tree1.add('a')
843
839
        tree1.commit('commit one')
844
840
        rev = repo.get_revision(branch1.revision_history()[0])
845
 
        datestring_first = osutils.format_date(rev.timestamp, rev.timezone)
 
841
        datestring_first = format_date(rev.timestamp, rev.timezone)
846
842
        out, err = self.run_bzr('info -v repo/branch1')
847
843
        self.assertEqualDiff(
848
844
"""Repository tree (format: knit)
868
864
 
869
865
Branch history:
870
866
         1 revision
 
867
         1 committer
871
868
         0 days old
872
869
   first revision: %s
873
870
  latest revision: %s
909
906
 
910
907
Branch history:
911
908
         0 revisions
 
909
         0 committers
912
910
 
913
911
Repository:
914
912
         1 revision
948
946
 
949
947
Branch history:
950
948
         1 revision
 
949
         1 committer
951
950
         0 days old
952
951
   first revision: %s
953
952
  latest revision: %s
979
978
       ),
980
979
       out)
981
980
        self.assertEqual('', err)
982
 
 
 
981
    
983
982
    def test_info_shared_repository_with_tree_in_root(self):
984
983
        format = bzrdir.format_registry.make_bzrdir('knit')
985
984
        transport = self.get_transport()
1034
1033
 
1035
1034
Branch history:
1036
1035
         0 revisions
 
1036
         0 committers
1037
1037
 
1038
1038
Repository:
1039
1039
         0 revisions
1042
1042
       ), out)
1043
1043
        self.assertEqual('', err)
1044
1044
 
1045
 
    def test_info_repository_hook(self):
1046
 
        format = bzrdir.format_registry.make_bzrdir('knit')
1047
 
        def repo_info(repo, stats, outf):
1048
 
            outf.write("more info\n")
1049
 
        info.hooks.install_named_hook('repository', repo_info, None)
1050
 
        # Create shared repository with working trees
1051
 
        repo = self.make_repository('repo', shared=True, format=format)
1052
 
        out, err = self.run_bzr('info -v repo')
1053
 
        self.assertEqualDiff(
1054
 
"""Shared repository with trees (format: dirstate or dirstate-tags or knit)
1055
 
Location:
1056
 
  shared repository: repo
1057
 
 
1058
 
Format:
1059
 
       control: Meta directory format 1
1060
 
    repository: %s
1061
 
 
1062
 
Create working tree for new branches inside the repository.
1063
 
 
1064
 
Repository:
1065
 
         0 revisions
1066
 
more info
1067
 
""" % (format.repository_format.get_format_description(),
1068
 
       ), out)
1069
 
        self.assertEqual('', err)
1070
 
 
1071
1045
    def assertCheckoutStatusOutput(self,
1072
1046
        command_string, lco_tree, shared_repo=None,
1073
1047
        repo_branch=None,
1083
1057
        allow us, the test writers, to document what *should* be present in
1084
1058
        the output. Removing this separation would remove the value of the
1085
1059
        tests.
1086
 
 
 
1060
        
1087
1061
        :param path: the path to the light checkout.
1088
1062
        :param lco_tree: the tree object for the light checkout.
1089
1063
        :param shared_repo: A shared repository is in use, expect that in
1097
1071
            actually locked then this parameter is overridden. This is because
1098
1072
            pack repositories do not have any public API for obtaining an
1099
1073
            exclusive repository wide lock.
1100
 
        :param verbose: verbosity level: 2 or higher to show committers
 
1074
        :param verbose: If true, expect verbose output
1101
1075
        """
1102
1076
        def friendly_location(url):
1103
1077
            path = urlutils.unescape_for_display(url, 'ascii')
1122
1096
            (False, True): 'Lightweight checkout',
1123
1097
            (False, False): 'Checkout',
1124
1098
            }[(shared_repo is not None, light_checkout)]
1125
 
        format = {True: self._repo_strings,
1126
 
                  False: 'unnamed'}[light_checkout]
 
1099
        format = {True: '1.6 or 1.6.1-rich-root'
 
1100
                        ' or 1.9 or 1.9-rich-root'
 
1101
                        ' or dirstate or dirstate-tags or pack-0.92'
 
1102
                        ' or rich-root or rich-root-pack',
 
1103
                  False: 'dirstate'}[light_checkout]
1127
1104
        if repo_locked:
1128
1105
            repo_locked = lco_tree.branch.repository.get_physical_lock_status()
1129
1106
        if repo_locked or branch_locked or tree_locked:
1166
1143
        else:
1167
1144
            branch_data = ("   checkout of branch: %s\n" %
1168
1145
                lco_tree.branch.bzrdir.root_transport.base)
1169
 
 
1170
 
        if verbose >= 2:
 
1146
        
 
1147
        if verbose:
1171
1148
            verbose_info = '         0 committers\n'
1172
1149
        else:
1173
1150
            verbose_info = ''
1174
 
 
 
1151
            
1175
1152
        self.assertEqualDiff(
1176
1153
"""%s (format: %s)
1177
1154
Location:
1324
1301
    def test_info_locking_oslocks(self):
1325
1302
        if sys.platform == "win32":
1326
1303
            raise TestSkipped("don't use oslocks on win32 in unix manner")
1327
 
        # This test tests old (all-in-one, OS lock using) behaviour which
1328
 
        # simply cannot work on windows (and is indeed why we changed our
1329
 
        # design. As such, don't try to remove the thisFailsStrictLockCheck
1330
 
        # call here.
1331
 
        self.thisFailsStrictLockCheck()
1332
1304
 
1333
1305
        tree = self.make_branch_and_tree('branch',
1334
1306
                                         format=bzrdir.BzrDirFormat6())
1364
1336
 
1365
1337
Branch history:
1366
1338
         0 revisions
 
1339
         0 committers
1367
1340
 
1368
1341
Repository:
1369
1342
         0 revisions
1396
1369
 
1397
1370
Branch history:
1398
1371
         0 revisions
 
1372
         0 committers
1399
1373
 
1400
1374
Repository:
1401
1375
         0 revisions