~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Vincent Ladeuil
  • Date: 2010-02-10 15:46:03 UTC
  • mfrom: (4985.3.21 update)
  • mto: This revision was merged to the branch mainline in revision 5021.
  • Revision ID: v.ladeuil+lp@free.fr-20100210154603-k4no1gvfuqpzrw7p
Update performs two merges in a more logical order but stop on conflicts

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