23
from bzrlib.bzrdir import BzrDir
23
from bzrlib.controldir import ControlDir
24
24
from bzrlib import (
29
29
from bzrlib.workingtree import WorkingTree
30
30
from bzrlib.tests import (
31
TestCaseWithTransport,
31
TestCaseWithTransport,
34
34
from bzrlib.tests.features import UnicodeFilenameFeature
35
35
from bzrlib.directory_service import directories
153
153
branchb_id = tree2.commit('bar')
154
154
checkout = tree1.branch.create_checkout('heavyco/a', lightweight=False)
155
155
self.run_bzr(['switch', 'branchb'], working_dir='heavyco/a')
156
self.assertEqual(branchb_id, checkout.last_revision())
157
self.assertEqual(tree2.branch.base, checkout.branch.get_bound_location())
156
# Refresh checkout as 'switch' modified it
157
checkout = checkout.bzrdir.open_workingtree()
158
self.assertEqual(branchb_id, checkout.last_revision())
159
self.assertEqual(tree2.branch.base,
160
checkout.branch.get_bound_location())
162
def test_switch_finds_relative_unicode_branch(self):
163
"""Switch will find 'foo' relative to the branch the checkout is of."""
164
self.requireFeature(UnicodeFilenameFeature)
165
self.build_tree(['repo/'])
166
tree1 = self.make_branch_and_tree('repo/brancha')
168
tree2 = self.make_branch_and_tree(u'repo/branch\xe9')
169
tree2.pull(tree1.branch)
170
branchb_id = tree2.commit('bar')
171
checkout = tree1.branch.create_checkout('checkout', lightweight=True)
172
self.run_bzr(['switch', u'branch\xe9'], working_dir='checkout')
173
self.assertEqual(branchb_id, checkout.last_revision())
174
checkout = checkout.bzrdir.open_workingtree()
175
self.assertEqual(tree2.branch.base, checkout.branch.base)
159
177
def test_switch_finds_relative_unicode_branch(self):
160
178
"""Switch will find 'foo' relative to the branch the checkout is of."""
188
206
revid2 = tree.commit('rev2')
189
207
self.run_bzr(['switch', '-b', 'anotherbranch'])
190
208
self.assertEquals(
191
['', 'anotherbranch'],
192
tree.branch.bzrdir.get_branches().keys())
209
set(['', 'anotherbranch']),
210
set(tree.branch.bzrdir.get_branches().keys()))
194
212
def test_switch_into_unrelated_colocated(self):
195
213
# Create a new colocated branch from an existing non-colocated branch.
234
252
tree.add('file-1')
235
253
revid1 = tree.commit('rev1')
236
254
self.run_bzr(['switch', '-b', 'anotherbranch'], working_dir='branch-1')
237
bzrdir = BzrDir.open("branch-1")
255
bzrdir = ControlDir.open("branch-1")
238
256
self.assertEquals(
239
257
set([b.name for b in bzrdir.list_branches()]),
240
258
set(["foo", "anotherbranch"]))
253
271
tree.add('file-1')
254
272
revid1 = tree.commit('rev1')
255
273
self.run_bzr(['switch', '-b', u'branch\xe9'], working_dir='branch-1')
256
bzrdir = BzrDir.open("branch-1")
274
bzrdir = ControlDir.open("branch-1")
257
275
self.assertEquals(
258
276
set([b.name for b in bzrdir.list_branches()]),
259
277
set(["foo", u"branch\xe9"]))
287
305
def test_switch_lightweight_after_branch_moved_relative(self):
288
306
self.prepare_lightweight_switch()
289
self.run_bzr('switch --force branch1', working_dir='tree')
307
self.run_bzr('switch --force branch1',
290
309
branch_location = WorkingTree.open('tree').branch.base
291
310
self.assertEndsWith(branch_location, 'branch1/')
472
491
# become necessary for this use case. Please do not adjust this number
473
492
# upwards without agreement from bzr's network support maintainers.
474
493
self.assertLength(24, self.hpss_calls)
475
self.assertLength(5, self.hpss_connections)
494
self.assertLength(4, self.hpss_connections)
476
495
self.assertThat(self.hpss_calls, ContainsNoVfsCalls)
498
class TestSwitchUncommitted(TestCaseWithTransport):
501
tree = self.make_branch_and_tree('orig')
503
tree.branch.bzrdir.sprout('new')
504
checkout = tree.branch.create_checkout('checkout', lightweight=True)
505
self.build_tree(['checkout/a'])
506
self.assertPathExists('checkout/a')
510
def test_store_and_restore_uncommitted(self):
511
checkout = self.prepare()
512
self.run_bzr(['switch', '--store', '-d', 'checkout', 'new'])
513
self.build_tree(['checkout/b'])
515
self.assertPathDoesNotExist('checkout/a')
516
self.assertPathExists('checkout/b')
517
self.run_bzr(['switch', '--store', '-d', 'checkout', 'orig'])
518
self.assertPathExists('checkout/a')
519
self.assertPathDoesNotExist('checkout/b')
521
def test_does_not_store(self):
523
self.run_bzr(['switch', '-d', 'checkout', 'new'])
524
self.assertPathExists('checkout/a')
526
def test_does_not_restore_changes(self):
528
self.run_bzr(['switch', '--store', '-d', 'checkout', 'new'])
529
self.assertPathDoesNotExist('checkout/a')
530
self.run_bzr(['switch', '-d', 'checkout', 'orig'])
531
self.assertPathDoesNotExist('checkout/a')