~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Andrew Bennetts
  • Date: 2011-03-23 05:15:48 UTC
  • mfrom: (5609.24.5 2.3)
  • mto: This revision was merged to the branch mainline in revision 5732.
  • Revision ID: andrew.bennetts@canonical.com-20110323051548-rit3h3i274gszs2n
Merge lp:bzr/2.3, including fixes for #465517 and #733350.

Show diffs side-by-side

added added

removed removed

Lines of Context:
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