~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: John Arbash Meinel
  • Date: 2009-03-27 22:29:55 UTC
  • mto: (3735.39.2 clean)
  • mto: This revision was merged to the branch mainline in revision 4280.
  • Revision ID: john@arbash-meinel.com-20090327222955-utifmfm888zerixt
Implement apply_delta_to_source which doesn't have to malloc another string.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006-2010 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
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
 
 
35
 
class TestInfo(tests.TestCaseWithTransport):
36
 
 
37
 
    def setUp(self):
38
 
        super(TestInfo, self).setUp()
39
 
        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):
40
37
 
41
38
    def test_info_non_existing(self):
42
 
        self.vfs_transport_factory = memory.MemoryServer
43
 
        location = self.get_url()
 
39
        if sys.platform == "win32":
 
40
            location = "C:/i/do/not/exist/"
 
41
        else:
 
42
            location = "/i/do/not/exist/"
44
43
        out, err = self.run_bzr('info '+location, retcode=3)
45
44
        self.assertEqual(out, '')
46
45
        self.assertEqual(err, 'bzr: ERROR: Not a branch: "%s".\n' % location)
126
125
        self.assertEqual('', err)
127
126
        tree1.commit('commit one')
128
127
        rev = branch1.repository.get_revision(branch1.revision_history()[0])
129
 
        datestring_first = osutils.format_date(rev.timestamp, rev.timezone)
 
128
        datestring_first = format_date(rev.timestamp, rev.timezone)
130
129
 
131
130
        # Branch standalone with push location
132
131
        branch2 = branch1.bzrdir.sprout('branch').open_branch()
212
211
         0 added
213
212
         0 removed
214
213
         0 renamed
215
 
         0 unknown
216
 
         1 ignored
 
214
         1 unknown
 
215
         0 ignored
217
216
         0 versioned subdirectories
218
217
 
219
218
Branch history:
277
276
        branch5 = tree5.branch
278
277
        out, err = self.run_bzr('info -v lightcheckout')
279
278
        self.assertEqualDiff(
280
 
"""Lightweight checkout (format: %s)
 
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)
281
283
Location:
282
284
  light checkout root: lightcheckout
283
285
   checkout of branch: standalone
284
286
 
285
287
Format:
286
288
       control: Meta directory format 1
287
 
  working tree: Working tree format 6
 
289
  working tree: Working tree format 4
288
290
        branch: Branch format 4
289
291
    repository: Weave repository format 6
290
292
 
306
308
 
307
309
Repository:
308
310
         1 revision
309
 
""" % (self._repo_strings, datestring_first, datestring_first,), out)
 
311
""" % (datestring_first, datestring_first,), out)
310
312
        self.assertEqual('', err)
311
313
 
312
314
        # Update initial standalone branch
314
316
        tree1.add('b')
315
317
        tree1.commit('commit two')
316
318
        rev = branch1.repository.get_revision(branch1.revision_history()[-1])
317
 
        datestring_last = osutils.format_date(rev.timestamp, rev.timezone)
 
319
        datestring_last = format_date(rev.timestamp, rev.timezone)
318
320
 
319
321
        # Out of date branched standalone branch will not be detected
320
322
        out, err = self.run_bzr('info -v branch')
380
382
         0 added
381
383
         0 removed
382
384
         0 renamed
383
 
         0 unknown
384
 
         1 ignored
 
385
         1 unknown
 
386
         0 ignored
385
387
         0 versioned subdirectories
386
388
 
387
389
Branch history:
439
441
        # Out of date lightweight checkout
440
442
        out, err = self.run_bzr('info lightcheckout --verbose')
441
443
        self.assertEqualDiff(
442
 
"""Lightweight checkout (format: %s)
 
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)
443
448
Location:
444
449
  light checkout root: lightcheckout
445
450
   checkout of branch: standalone
446
451
 
447
452
Format:
448
453
       control: Meta directory format 1
449
 
  working tree: Working tree format 6
 
454
  working tree: Working tree format 4
450
455
        branch: Branch format 4
451
456
    repository: Weave repository format 6
452
457
 
470
475
 
471
476
Repository:
472
477
         2 revisions
473
 
""" % (self._repo_strings, datestring_first, datestring_last,), out)
 
478
""" % (datestring_first, datestring_last,), out)
474
479
        self.assertEqual('', err)
475
480
 
476
481
    def test_info_standalone_no_tree(self):
568
573
        tree2.add('a')
569
574
        tree2.commit('commit one')
570
575
        rev = repo.get_revision(branch2.revision_history()[0])
571
 
        datestring_first = osutils.format_date(rev.timestamp, rev.timezone)
 
576
        datestring_first = format_date(rev.timestamp, rev.timezone)
572
577
        out, err = self.run_bzr('info tree/lightcheckout --verbose')
573
578
        self.assertEqualDiff(
574
 
"""Lightweight checkout (format: %s)
 
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)
575
583
Location:
576
584
  light checkout root: tree/lightcheckout
577
585
   checkout of branch: repo/branch
579
587
 
580
588
Format:
581
589
       control: Meta directory format 1
582
 
  working tree: Working tree format 6
 
590
  working tree: Working tree format 4
583
591
        branch: %s
584
592
    repository: %s
585
593
 
601
609
 
602
610
Repository:
603
611
         1 revision
604
 
""" % (self._repo_strings, format.get_branch_format().get_format_description(),
 
612
""" % (format.get_branch_format().get_format_description(),
605
613
       format.repository_format.get_format_description(),
606
614
       datestring_first, datestring_first,
607
615
       ), out)
610
618
        # Out of date checkout
611
619
        out, err = self.run_bzr('info -v tree/checkout')
612
620
        self.assertEqualDiff(
613
 
"""Checkout (format: unnamed)
 
621
"""Checkout (format: dirstate)
614
622
Location:
615
623
       checkout root: tree/checkout
616
624
  checkout of branch: repo/branch
617
625
 
618
626
Format:
619
627
       control: Meta directory format 1
620
 
  working tree: Working tree format 6
 
628
  working tree: Working tree format 4
621
629
        branch: %s
622
630
    repository: %s
623
631
 
649
657
        tree3.add('b')
650
658
        out, err = self.run_bzr('info tree/checkout --verbose')
651
659
        self.assertEqualDiff(
652
 
"""Checkout (format: unnamed)
 
660
"""Checkout (format: dirstate)
653
661
Location:
654
662
       checkout root: tree/checkout
655
663
  checkout of branch: repo/branch
656
664
 
657
665
Format:
658
666
       control: Meta directory format 1
659
 
  working tree: Working tree format 6
 
667
  working tree: Working tree format 4
660
668
        branch: %s
661
669
    repository: %s
662
670
 
687
695
 
688
696
        # Out of date lightweight checkout
689
697
        rev = repo.get_revision(branch1.revision_history()[-1])
690
 
        datestring_last = osutils.format_date(rev.timestamp, rev.timezone)
 
698
        datestring_last = format_date(rev.timestamp, rev.timezone)
691
699
        out, err = self.run_bzr('info tree/lightcheckout --verbose')
692
700
        self.assertEqualDiff(
693
 
"""Lightweight checkout (format: %s)
 
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)
694
705
Location:
695
706
  light checkout root: tree/lightcheckout
696
707
   checkout of branch: repo/branch
698
709
 
699
710
Format:
700
711
       control: Meta directory format 1
701
 
  working tree: Working tree format 6
 
712
  working tree: Working tree format 4
702
713
        branch: %s
703
714
    repository: %s
704
715
 
722
733
 
723
734
Repository:
724
735
         2 revisions
725
 
""" % (self._repo_strings, format.get_branch_format().get_format_description(),
 
736
""" % (format.get_branch_format().get_format_description(),
726
737
       format.repository_format.get_format_description(),
727
738
       datestring_first, datestring_last,
728
739
       ), out)
843
854
        tree1.add('a')
844
855
        tree1.commit('commit one')
845
856
        rev = repo.get_revision(branch1.revision_history()[0])
846
 
        datestring_first = osutils.format_date(rev.timestamp, rev.timezone)
 
857
        datestring_first = format_date(rev.timestamp, rev.timezone)
847
858
        out, err = self.run_bzr('info -v repo/branch1')
848
859
        self.assertEqualDiff(
849
860
"""Repository tree (format: knit)
1043
1054
       ), out)
1044
1055
        self.assertEqual('', err)
1045
1056
 
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
1057
    def assertCheckoutStatusOutput(self,
1073
1058
        command_string, lco_tree, shared_repo=None,
1074
1059
        repo_branch=None,
1123
1108
            (False, True): 'Lightweight checkout',
1124
1109
            (False, False): 'Checkout',
1125
1110
            }[(shared_repo is not None, light_checkout)]
1126
 
        format = {True: self._repo_strings,
1127
 
                  False: 'unnamed'}[light_checkout]
 
1111
        format = {True: '1.6 or 1.6.1-rich-root'
 
1112
                        ' or 1.9 or 1.9-rich-root'
 
1113
                        ' or dirstate or dirstate-tags or pack-0.92'
 
1114
                        ' or rich-root or rich-root-pack',
 
1115
                  False: 'dirstate'}[light_checkout]
1128
1116
        if repo_locked:
1129
1117
            repo_locked = lco_tree.branch.repository.get_physical_lock_status()
1130
1118
        if repo_locked or branch_locked or tree_locked:
1228
1216
        # Do a light checkout of the heavy one
1229
1217
        transport.mkdir('tree/lightcheckout')
1230
1218
        lco_dir = bzrdir.BzrDirMetaFormat1().initialize('tree/lightcheckout')
1231
 
        branch.BranchReferenceFormat().initialize(lco_dir,
1232
 
            target_branch=co_branch)
 
1219
        branch.BranchReferenceFormat().initialize(lco_dir, co_branch)
1233
1220
        lco_dir.create_workingtree()
1234
1221
        lco_tree = lco_dir.open_workingtree()
1235
1222
 
1325
1312
 
1326
1313
    def test_info_locking_oslocks(self):
1327
1314
        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()
 
1315
            raise TestSkipped("don't use oslocks on win32 in unix manner")
1334
1316
 
1335
1317
        tree = self.make_branch_and_tree('branch',
1336
1318
                                         format=bzrdir.BzrDirFormat6())