~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/per_branch/test_branch.py

  • Committer: Jelmer Vernooij
  • Date: 2011-05-10 07:46:15 UTC
  • mfrom: (5844 +trunk)
  • mto: This revision was merged to the branch mainline in revision 5845.
  • Revision ID: jelmer@samba.org-20110510074615-eptod049ndjxc4i7
Merge bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
    gpg,
26
26
    merge,
27
27
    urlutils,
28
 
    transactions,
29
28
    transport,
30
29
    remote,
31
30
    repository,
32
31
    revision,
 
32
    symbol_versioning,
33
33
    tests,
34
34
    )
35
 
from bzrlib.symbol_versioning import deprecated_in
36
35
from bzrlib.tests import (
37
 
    http_server,
38
36
    per_branch,
39
37
    )
40
38
from bzrlib.tests.http_server import HttpServer
77
75
 
78
76
        br = self.get_branch()
79
77
        br.fetch(wt.branch)
80
 
        br.set_revision_history(['rev1', 'rev2', 'rev3'])
 
78
        br.generate_revision_history('rev3')
81
79
        rh = br.revision_history()
82
80
        self.assertEqual(['rev1', 'rev2', 'rev3'], rh)
83
81
        for revision_id in rh:
330
328
        # config file in the branch.
331
329
        branch.nick = "Aaron's branch"
332
330
        if not isinstance(branch, remote.RemoteBranch):
333
 
            self.failUnless(branch._transport.has("branch.conf"))
 
331
            self.assertTrue(branch._transport.has("branch.conf"))
334
332
        # Because the nick has been set explicitly, the nick is now always
335
333
        # "Aaron's branch", regardless of directory name.
336
334
        self.assertEqual(branch.nick, "Aaron's branch")
389
387
    def test_format_description(self):
390
388
        tree = self.make_branch_and_tree('tree')
391
389
        text = tree.branch._format.get_format_description()
392
 
        self.failUnless(len(text))
 
390
        self.assertTrue(len(text))
393
391
 
394
392
    def test_get_commit_builder(self):
395
393
        branch = self.make_branch(".")
462
460
        tree = self.make_branch_and_tree('a')
463
461
        tree.commit('a commit', rev_id='rev1')
464
462
        br = tree.branch
465
 
        br.set_revision_history(["rev1"])
 
463
        self.applyDeprecated(symbol_versioning.deprecated_in((2, 4, 0)),
 
464
            br.set_revision_history, ["rev1"])
466
465
        self.assertEquals(br.revision_history(), ["rev1"])
467
 
        br.set_revision_history([])
 
466
        self.applyDeprecated(symbol_versioning.deprecated_in((2, 4, 0)),
 
467
            br.set_revision_history, [])
468
468
        self.assertEquals(br.revision_history(), [])
469
469
 
470
470
    def test_heads_to_fetch(self):
675
675
        t = self.get_transport()
676
676
        readonly_t = transport.get_transport(self.get_readonly_url())
677
677
        made_branch = self.make_branch('.')
678
 
        self.failUnless(isinstance(made_branch, _mod_branch.Branch))
 
678
        self.assertIsInstance(made_branch, _mod_branch.Branch)
679
679
 
680
680
        # find it via bzrdir opening:
681
681
        opened_control = bzrdir.BzrDir.open(readonly_t.base)
682
682
        direct_opened_branch = opened_control.open_branch()
683
683
        self.assertEqual(direct_opened_branch.__class__, made_branch.__class__)
684
684
        self.assertEqual(opened_control, direct_opened_branch.bzrdir)
685
 
        self.failUnless(isinstance(direct_opened_branch._format,
686
 
                        self.branch_format.__class__))
 
685
        self.assertIsInstance(direct_opened_branch._format,
 
686
            self.branch_format.__class__)
687
687
 
688
688
        # find it via Branch.open
689
689
        opened_branch = _mod_branch.Branch.open(readonly_t.base)
690
 
        self.failUnless(isinstance(opened_branch, made_branch.__class__))
 
690
        self.assertIsInstance(opened_branch, made_branch.__class__)
691
691
        self.assertEqual(made_branch._format.__class__,
692
692
                         opened_branch._format.__class__)
693
693
        # if it has a unique id string, can we probe for it ?
736
736
        except errors.UpgradeRequired:
737
737
            raise tests.TestNotApplicable('Format does not support binding')
738
738
 
 
739
    def test_unbind_clears_cached_master_branch(self):
 
740
        """b.unbind clears any cached value of b.get_master_branch."""
 
741
        master = self.make_branch('master')
 
742
        branch = self.make_branch('branch')
 
743
        try:
 
744
            branch.bind(master)
 
745
        except errors.UpgradeRequired:
 
746
            raise tests.TestNotApplicable('Format does not support binding')
 
747
        self.addCleanup(branch.lock_write().unlock)
 
748
        self.assertNotEqual(None, branch.get_master_branch())
 
749
        branch.unbind()
 
750
        self.assertEqual(None, branch.get_master_branch())
 
751
 
 
752
    def test_unlocked_does_not_cache_master_branch(self):
 
753
        """Unlocked branches do not cache the result of get_master_branch."""
 
754
        master = self.make_branch('master')
 
755
        branch1 = self.make_branch('branch')
 
756
        try:
 
757
            branch1.bind(master)
 
758
        except errors.UpgradeRequired:
 
759
            raise tests.TestNotApplicable('Format does not support binding')
 
760
        # Open branch1 again
 
761
        branch2 = branch1.bzrdir.open_branch()
 
762
        self.assertNotEqual(None, branch1.get_master_branch())
 
763
        # Unbind the branch via branch2.  branch1 isn't locked so will
 
764
        # immediately return the new value for get_master_branch.
 
765
        branch2.unbind()
 
766
        self.assertEqual(None, branch1.get_master_branch())
 
767
 
 
768
    def test_bind_clears_cached_master_branch(self):
 
769
        """b.bind clears any cached value of b.get_master_branch."""
 
770
        master1 = self.make_branch('master1')
 
771
        master2 = self.make_branch('master2')
 
772
        branch = self.make_branch('branch')
 
773
        try:
 
774
            branch.bind(master1)
 
775
        except errors.UpgradeRequired:
 
776
            raise tests.TestNotApplicable('Format does not support binding')
 
777
        self.addCleanup(branch.lock_write().unlock)
 
778
        self.assertNotEqual(None, branch.get_master_branch())
 
779
        branch.bind(master2)
 
780
        self.assertEqual('.', urlutils.relative_url(self.get_url('master2'),
 
781
                branch.get_master_branch().base))
 
782
 
 
783
    def test_set_bound_location_clears_cached_master_branch(self):
 
784
        """b.set_bound_location clears any cached value of b.get_master_branch.
 
785
        """
 
786
        master1 = self.make_branch('master1')
 
787
        master2 = self.make_branch('master2')
 
788
        branch = self.make_branch('branch')
 
789
        try:
 
790
            branch.bind(master1)
 
791
        except errors.UpgradeRequired:
 
792
            raise tests.TestNotApplicable('Format does not support binding')
 
793
        self.addCleanup(branch.lock_write().unlock)
 
794
        self.assertNotEqual(None, branch.get_master_branch())
 
795
        branch.set_bound_location(self.get_url('master2'))
 
796
        self.assertEqual('.', urlutils.relative_url(self.get_url('master2'),
 
797
                branch.get_master_branch().base))
 
798
 
739
799
 
740
800
class TestStrict(per_branch.TestCaseWithBranch):
741
801