23
from bzrlib import osutils
24
23
from bzrlib.workingtree import WorkingTree
25
from bzrlib.tests import TestCaseWithTransport
24
from bzrlib.tests.blackbox import ExternalBase
26
25
from bzrlib.directory_service import directories
29
class TestSwitch(TestCaseWithTransport):
28
class TestSwitch(ExternalBase):
31
30
def _create_sample_tree(self):
32
31
tree = self.make_branch_and_tree('branch-1')
168
167
def prepare_lightweight_switch(self):
169
168
branch = self.make_branch('branch')
170
169
branch.create_checkout('tree', lightweight=True)
171
osutils.rename('branch', 'branch1')
170
os.rename('branch', 'branch1')
173
172
def test_switch_lightweight_after_branch_moved(self):
174
173
self.prepare_lightweight_switch()
226
225
self.run_bzr('switch -b foo:branch2', working_dir='tree')
227
226
tree = WorkingTree.open('tree')
228
227
self.assertEndsWith(tree.branch.base, 'foo-branch2/')
230
def test_switch_with_post_switch_hook(self):
231
from bzrlib import branch as _mod_branch
233
_mod_branch.Branch.hooks.install_named_hook('post_switch',
235
self.make_branch_and_tree('branch')
236
self.run_bzr('branch branch branch2')
237
self.run_bzr('checkout branch checkout')
239
self.assertLength(0, calls)
240
out, err = self.run_bzr('switch ../branch2')
241
self.assertLength(1, calls)
243
def test_switch_lightweight_co_with_post_switch_hook(self):
244
from bzrlib import branch as _mod_branch
246
_mod_branch.Branch.hooks.install_named_hook('post_switch',
248
self.make_branch_and_tree('branch')
249
self.run_bzr('branch branch branch2')
250
self.run_bzr('checkout --lightweight branch checkout')
252
self.assertLength(0, calls)
253
out, err = self.run_bzr('switch ../branch2')
254
self.assertLength(1, calls)
256
def test_switch_lightweight_directory(self):
257
"""Test --directory option"""
259
# create a source branch
260
a_tree = self.make_branch_and_tree('a')
261
self.build_tree_contents([('a/a', 'initial\n')])
263
a_tree.commit(message='initial')
265
# clone and add a differing revision
266
b_tree = a_tree.bzrdir.sprout('b').open_workingtree()
267
self.build_tree_contents([('b/a', 'initial\nmore\n')])
268
b_tree.commit(message='more')
270
self.run_bzr('checkout --lightweight a checkout')
271
self.run_bzr('switch --directory checkout b')
272
self.assertFileEqual('initial\nmore\n', 'checkout/a')