22
22
from bzrlib import branch, bzrdir
23
23
from bzrlib.repofmt.knitrepo import RepositoryFormatKnit1
24
24
from bzrlib.tests.blackbox import ExternalBase
25
from bzrlib.tests.test_sftp_transport import TestCaseWithSFTPServer
25
26
from bzrlib.workingtree import WorkingTree
28
29
class TestBranch(ExternalBase):
30
def example_branch(test):
32
file('hello', 'wt').write('foo')
33
test.run_bzr('add hello')
34
test.run_bzr('commit -m setup hello')
35
file('goodbye', 'wt').write('baz')
36
test.run_bzr('add goodbye')
37
test.run_bzr('commit -m setup goodbye')
31
def example_branch(self, path='.'):
32
tree = self.make_branch_and_tree(path)
33
self.build_tree_contents([(path + '/hello', 'foo')])
35
tree.commit(message='setup')
36
self.build_tree_contents([(path + '/goodbye', 'baz')])
38
tree.commit(message='setup')
39
40
def test_branch(self):
40
41
"""Branch from one branch to another."""
42
self.example_branch('a')
45
43
self.run_bzr('branch a b')
46
44
b = branch.Branch.open('b')
47
45
self.assertEqual('b\n', b.control_files.get_utf8('branch-name').read())
48
46
self.run_bzr('branch a c -r 1')
50
self.run_bzr('commit -m foo --unchanged')
47
b.bzrdir.open_workingtree().commit(message='foo', allow_pointless=True)
53
49
def test_branch_only_copies_history(self):
54
50
# Knit branches should only push the history for the current revision.
89
85
self.assertTrue(pushed_repo.has_revision('b-1'))
88
class TestRemoteBranch(TestCaseWithSFTPServer):
91
super(TestRemoteBranch, self).setUp()
92
tree = self.make_branch_and_tree('branch')
93
self.build_tree_contents([('branch/file', 'file content\n')])
95
tree.commit('file created')
97
def test_branch_local_remote(self):
98
self.run_bzr(['branch', 'branch', self.get_url('remote')])
99
t = self.get_transport()
100
# Ensure that no working tree what created remotely
101
self.assertFalse(t.has('remote/file'))
103
def test_branch_remote_remote(self):
104
# Light cheat: we access the branch remotely
105
self.run_bzr(['branch', self.get_url('branch'),
106
self.get_url('remote')])
107
t = self.get_transport()
108
# Ensure that no working tree what created remotely
109
self.assertFalse(t.has('remote/file'))