~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: John Arbash Meinel
  • Date: 2006-10-24 14:12:53 UTC
  • mto: This revision was merged to the branch mainline in revision 2095.
  • Revision ID: john@arbash-meinel.com-20061024141253-783fba812b197b70
(John Arbash Meinel) Update version information for 0.13 development

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
import os
21
21
 
22
22
from bzrlib import branch, bzrdir
23
 
from bzrlib.repofmt.knitrepo import RepositoryFormatKnit1
 
23
from bzrlib.repository import RepositoryFormatKnit1
24
24
from bzrlib.tests.blackbox import ExternalBase
25
 
from bzrlib.tests.test_sftp_transport import TestCaseWithSFTPServer
26
25
from bzrlib.workingtree import WorkingTree
27
26
 
28
27
 
29
28
class TestBranch(ExternalBase):
30
29
 
31
30
    def example_branch(test):
32
 
        test.run_bzr('init')
 
31
        test.runbzr('init')
33
32
        file('hello', 'wt').write('foo')
34
 
        test.run_bzr('add hello')
35
 
        test.run_bzr('commit -m setup hello')
 
33
        test.runbzr('add hello')
 
34
        test.runbzr('commit -m setup hello')
36
35
        file('goodbye', 'wt').write('baz')
37
 
        test.run_bzr('add goodbye')
38
 
        test.run_bzr('commit -m setup goodbye')
 
36
        test.runbzr('add goodbye')
 
37
        test.runbzr('commit -m setup goodbye')
39
38
 
40
39
    def test_branch(self):
41
40
        """Branch from one branch to another."""
43
42
        os.chdir('a')
44
43
        self.example_branch()
45
44
        os.chdir('..')
46
 
        self.run_bzr('branch a b')
 
45
        self.runbzr('branch a b')
47
46
        b = branch.Branch.open('b')
48
47
        self.assertEqual('b\n', b.control_files.get_utf8('branch-name').read())
49
 
        self.run_bzr('branch a c -r 1')
 
48
        self.runbzr('branch a c -r 1')
50
49
        os.chdir('b')
51
 
        self.run_bzr('commit -m foo --unchanged')
 
50
        self.runbzr('commit -m foo --unchanged')
52
51
        os.chdir('..')
53
52
 
 
53
    def test_branch_basis(self):
 
54
        # ensure that basis really does grab from the basis by having incomplete source
 
55
        tree = self.make_branch_and_tree('commit_tree')
 
56
        self.build_tree(['foo'], transport=tree.bzrdir.transport.clone('..'))
 
57
        tree.add('foo')
 
58
        tree.commit('revision 1', rev_id='1')
 
59
        source = self.make_branch_and_tree('source')
 
60
        # this gives us an incomplete repository
 
61
        tree.bzrdir.open_repository().copy_content_into(source.branch.repository)
 
62
        tree.commit('revision 2', rev_id='2', allow_pointless=True)
 
63
        tree.bzrdir.open_branch().copy_content_into(source.branch)
 
64
        tree.copy_content_into(source)
 
65
        self.assertFalse(source.branch.repository.has_revision('2'))
 
66
        dir = source.bzrdir
 
67
        self.runbzr('branch source target --basis commit_tree')
 
68
        target = bzrdir.BzrDir.open('target')
 
69
        self.assertEqual('2', target.open_branch().last_revision())
 
70
        self.assertEqual(['2'], target.open_workingtree().get_parent_ids())
 
71
        self.assertTrue(target.open_branch().repository.has_revision('2'))
 
72
 
54
73
    def test_branch_only_copies_history(self):
55
74
        # Knit branches should only push the history for the current revision.
56
75
        format = bzrdir.BzrDirMetaFormat1()
82
101
 
83
102
        # Now that we have a repository with shared files, make sure
84
103
        # that things aren't copied out by a 'branch'
85
 
        self.run_bzr('branch repo/b branch-b')
 
104
        self.run_bzr('branch', 'repo/b', 'branch-b')
86
105
        pushed_tree = WorkingTree.open('branch-b')
87
106
        pushed_repo = pushed_tree.branch.repository
88
107
        self.assertFalse(pushed_repo.has_revision('a-1'))
90
109
        self.assertTrue(pushed_repo.has_revision('b-1'))
91
110
 
92
111
 
93
 
class TestRemoteBranch(TestCaseWithSFTPServer):
94
 
 
95
 
    def setUp(self):
96
 
        super(TestRemoteBranch, self).setUp()
97
 
        tree = self.make_branch_and_tree('branch')
98
 
        self.build_tree_contents([('branch/file', 'file content\n')])
99
 
        tree.add('file')
100
 
        tree.commit('file created')
101
 
 
102
 
    def test_branch_local_remote(self):
103
 
        self.run_bzr(['branch', 'branch', self.get_url('remote')])
104
 
        t = self.get_transport()
105
 
        # Ensure that no working tree what created remotely
106
 
        self.assertFalse(t.has('remote/file'))
107
 
 
108
 
    def test_branch_remote_remote(self):
109
 
        # Light cheat: we access the branch remotely
110
 
        self.run_bzr(['branch', self.get_url('branch'),
111
 
                      self.get_url('remote')])
112
 
        t = self.get_transport()
113
 
        # Ensure that no working tree what created remotely
114
 
        self.assertFalse(t.has('remote/file'))
115