29
29
from bzrlib.branch import Branch
30
30
from bzrlib.directory_service import directories
31
31
from bzrlib.osutils import pathjoin
32
from bzrlib.tests.blackbox import ExternalBase
32
from bzrlib.tests import TestCaseWithTransport
33
33
from bzrlib.uncommit import uncommit
34
34
from bzrlib.workingtree import WorkingTree
37
class TestPull(ExternalBase):
37
class TestPull(TestCaseWithTransport):
39
39
def example_branch(self, path='.'):
40
40
tree = self.make_branch_and_tree(path)
343
343
def look_up(self, name, url):
345
345
directories.register('foo:', FooService, 'Testing directory service')
346
self.addCleanup(lambda: directories.remove('foo:'))
346
self.addCleanup(directories.remove, 'foo:')
347
347
self.run_bzr('pull foo:bar -d target')
348
348
self.assertEqual(source_last, target.last_revision())
433
433
from_tree.branch.bzrdir.root_transport.base])
434
434
self.assertContainsRe(err,
435
435
"(?m)Doing on-the-fly conversion")
437
def test_pull_to_experimental_format_warning(self):
438
"""You get a warning for pulling into experimental formats.
440
from_tree = self.make_branch_and_tree('from', format='development-subtree')
441
to_tree = self.make_branch_and_tree('to', format='development-subtree')
442
from_tree.commit(message='first commit')
443
out, err = self.run_bzr(['pull', '-d', 'to', 'from'])
444
self.assertContainsRe(err,
445
"(?m)Fetching into experimental format")
447
def test_pull_cross_to_experimental_format_warning(self):
448
"""You get a warning for pulling into experimental formats.
450
from_tree = self.make_branch_and_tree('from', format='2a')
451
to_tree = self.make_branch_and_tree('to', format='development-subtree')
452
from_tree.commit(message='first commit')
453
out, err = self.run_bzr(['pull', '-d', 'to', 'from'])
454
self.assertContainsRe(err,
455
"(?m)Fetching into experimental format")
457
def test_pull_show_base(self):
458
"""bzr pull supports --show-base
460
see https://bugs.launchpad.net/bzr/+bug/202374"""
461
# create two trees with conflicts, setup conflict, check that
462
# conflicted file looks correct
463
a_tree = self.example_branch('a')
464
b_tree = a_tree.bzrdir.sprout('b').open_workingtree()
466
f = open(pathjoin('a', 'hello'),'wt')
471
f = open(pathjoin('b', 'hello'),'wt')
475
out,err=self.run_bzr(['pull','-d','b','a','--show-base'])
477
# check for message here
478
self.assertEqual(err,
479
' M hello\nText conflict in hello\n1 conflicts encountered.\n')
481
self.assertEqualDiff('<<<<<<< TREE\n'
482
'fie||||||| BASE-REVISION\n'
484
'fee>>>>>>> MERGE-SOURCE\n',
485
open(pathjoin('b', 'hello')).read())
487
def test_pull_show_base_working_tree_only(self):
488
"""--show-base only allowed if there's a working tree
490
see https://bugs.launchpad.net/bzr/+bug/202374"""
491
# create a branch, see that --show-base fails
492
self.make_branch('from')
493
self.make_branch('to')
494
out=self.run_bzr(['pull','-d','to','from','--show-base'],retcode=3)
495
self.assertEqual(out,
496
('','bzr: ERROR: Need working tree for --show-base.\n'))