600
600
('conflicted-a', 'd\n'),
601
601
('conflicted-b', 'e\n'),
605
class TestMergeImplementation(object):
607
def do_merge(self, target_tree, source_tree, **kwargs):
608
merger = _mod_merge.Merger.from_revision_ids(progress.DummyProgress(),
609
target_tree, source_tree.last_revision(),
610
other_branch=source_tree.branch)
611
merger.merge_type=self.merge_type
612
for name, value in kwargs.items():
613
setattr(merger, name, value)
616
def test_merge_specific_file(self):
617
this_tree = self.make_branch_and_tree('this')
618
this_tree.lock_write()
619
self.addCleanup(this_tree.unlock)
620
self.build_tree_contents([
621
('this/file1', 'a\nb\n'),
622
('this/file2', 'a\nb\n')
624
this_tree.add(['file1', 'file2'])
625
this_tree.commit('Added files')
626
other_tree = this_tree.bzrdir.sprout('other').open_workingtree()
627
self.build_tree_contents([
628
('other/file1', 'a\nb\nc\n'),
629
('other/file2', 'a\nb\nc\n')
631
other_tree.commit('modified both')
632
self.build_tree_contents([
633
('this/file1', 'd\na\nb\n'),
634
('this/file2', 'd\na\nb\n')
636
this_tree.commit('modified both')
637
self.do_merge(this_tree, other_tree, interesting_files=['file1'])
638
self.assertFileEqual('d\na\nb\nc\n', 'this/file1')
639
self.assertFileEqual('d\na\nb\n', 'this/file2')
642
class TestMerge3Merge(TestCaseWithTransport, TestMergeImplementation):
644
merge_type = _mod_merge.Merge3Merger
647
class TestWeaveMerge(TestCaseWithTransport, TestMergeImplementation):
649
merge_type = _mod_merge.WeaveMerger
652
class TestLCAMerge(TestCaseWithTransport, TestMergeImplementation):
654
merge_type = _mod_merge.LCAMerger