Esempio n. 1
0
 def test_switch_with_local_commits(self):
     """Test switch complains about local commits unless --force given."""
     tree = self._setup_tree()
     to_branch = tree.controldir.sprout('branch-2').open_branch()
     self.build_tree(['branch-1/file-2'])
     tree.add('file-2')
     tree.remove('file-1')
     tree.commit('rev2')
     checkout = tree.branch.create_checkout('checkout')
     self.build_tree(['checkout/file-3'])
     checkout.add('file-3')
     checkout.commit(message='local only commit', local=True)
     self.build_tree(['checkout/file-4'])
     # Check the error reporting is as expected
     err = self.assertRaises(errors.BzrCommandError, switch.switch,
                             checkout.controldir, to_branch)
     self.assertContainsRe(
         str(err), 'Cannot switch as local commits found in the checkout.')
     # Check all is ok when force is given
     self.assertPathDoesNotExist('checkout/file-1')
     self.assertPathExists('checkout/file-2')
     switch.switch(checkout.controldir, to_branch, force=True)
     self.assertPathExists('checkout/file-1')
     self.assertPathDoesNotExist('checkout/file-2')
     self.assertPathDoesNotExist('checkout/file-3')
     self.assertPathExists('checkout/file-4')
     # Check that the checkout is a true mirror of the bound branch
     self.assertEqual(to_branch.last_revision_info(),
                      checkout.branch.last_revision_info())
Esempio n. 2
0
 def test_switch_after_branch_moved(self):
     """Test switch after the branch is moved."""
     tree = self._setup_tree()
     checkout = tree.branch.create_checkout('checkout',
                                            lightweight=self.lightweight)
     self.build_tree(['branch-1/file-2'])
     tree.add('file-2')
     tree.remove('file-1')
     tree.commit('rev2')
     self.build_tree(['checkout/file-3'])
     checkout.add('file-3')
     # rename the branch on disk, the checkout object is now invalid.
     os.rename('branch-1', 'branch-2')
     to_branch = branch.Branch.open('branch-2')
     # Check fails without --force
     err = self.assertRaises(
         (errors.BzrCommandError, errors.NotBranchError), switch.switch,
         checkout.controldir, to_branch)
     if isinstance(err, errors.BzrCommandError):
         self.assertContainsRe(
             str(err), 'Unable to connect to current master branch .*'
             'To switch anyway, use --force.')
     switch.switch(checkout.controldir, to_branch, force=True)
     self.assertPathDoesNotExist('checkout/file-1')
     self.assertPathExists('checkout/file-2')
     self.assertPathExists('checkout/file-3')
Esempio n. 3
0
 def test_switch_restore_uncommitted_same_revision(self):
     """Test switch updates tree and restores uncommitted changes."""
     checkout, to_branch = self._setup_uncommitted(same_revision=True)
     old_branch = self._master_if_present(checkout.branch)
     switch.switch(checkout.controldir, to_branch, store_uncommitted=True)
     checkout = workingtree.WorkingTree.open('checkout')
     switch.switch(checkout.controldir, old_branch, store_uncommitted=True)
     self.assertPathExists('checkout/file-3')
Esempio n. 4
0
 def test_switch_updates(self):
     """Test switch updates tree and keeps uncommitted changes."""
     checkout, to_branch = self._setup_uncommitted()
     self.assertPathDoesNotExist('checkout/file-1')
     self.assertPathExists('checkout/file-2')
     switch.switch(checkout.controldir, to_branch)
     self.assertPathExists('checkout/file-1')
     self.assertPathDoesNotExist('checkout/file-2')
     self.assertPathExists('checkout/file-3')
Esempio n. 5
0
 def test_switch_changing_root_id(self):
     tree = self._setup_tree()
     tree2 = self.make_branch_and_tree('tree-2')
     tree2.set_root_id(b'custom-root-id')
     self.build_tree(['tree-2/file-2'])
     tree2.add(['file-2'])
     tree2.commit('rev1b')
     checkout = tree.branch.create_checkout('checkout',
                                            lightweight=self.lightweight)
     switch.switch(checkout.controldir, tree2.branch)
     self.assertEqual(b'custom-root-id', tree2.path2id(''))
Esempio n. 6
0
    def test_switch_configurable_file_merger(self):
        class DummyMerger(_mod_merge.ConfigurableFileMerger):
            name_prefix = 'file'

        _mod_merge.Merger.hooks.install_named_hook('merge_file_content',
                                                   DummyMerger, 'test factory')
        foo = self.make_branch('foo')
        checkout = foo.create_checkout('checkout', lightweight=True)
        self.build_tree_contents([('checkout/file', b'a')])
        checkout.add('file')
        checkout.commit('a')
        bar = foo.controldir.sprout('bar').open_workingtree()
        self.build_tree_contents([('bar/file', b'b')])
        bar.commit('b')
        self.build_tree_contents([('checkout/file', b'c')])
        switch.switch(checkout.controldir, bar.branch)
Esempio n. 7
0
 def test_switch_with_revision(self):
     """Test switch when a revision is given."""
     # Create a tree with 2 revisions
     tree = self.make_branch_and_tree('branch-1')
     self.build_tree(['branch-1/file-1'])
     tree.add('file-1')
     tree.commit(rev_id=b'rev1', message='rev1')
     self.build_tree(['branch-1/file-2'])
     tree.add('file-2')
     tree.commit(rev_id=b'rev2', message='rev2')
     # Check it out and switch to revision 1
     checkout = tree.branch.create_checkout('checkout',
                                            lightweight=self.lightweight)
     switch.switch(checkout.controldir, tree.branch, revision_id=b"rev1")
     self.assertPathExists('checkout/file-1')
     self.assertPathDoesNotExist('checkout/file-2')
Esempio n. 8
0
    def test_content_filtering_applied_on_switch(self):
        # Create a source branch with two revisions
        source, path1, path2, path3, path4 = \
            self.create_cf_tree_with_two_revisions(txt_reader=None,
                                                   txt_writer=None, dir='branch-a')
        if not source.supports_content_filtering():
            return

        # Now patch in content filtering and branch from revision 1
        self.patch_in_content_filter()
        self.run_bzr('branch -r1 branch-a branch-b')

        # Now create a lightweight checkout referring to branch-b
        self.run_bzr('checkout --lightweight branch-b checkout')
        self.assertFileEqual(b"fOO tXT", 'checkout/file1.txt')

        # Switch it to branch-b and check the tree is updated
        checkout_control_dir = ControlDir.open_containing('checkout')[0]
        switch(checkout_control_dir, source.branch)
        self.assertFileEqual(b"fOO rocks!", 'checkout/file1.txt')
        self.assertFileEqual(b"hELLO wORLD", 'checkout/file4.txt')