~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_merge.py

  • Committer: John Arbash Meinel
  • Date: 2008-03-14 10:55:37 UTC
  • mfrom: (3275 +trunk)
  • mto: This revision was merged to the branch mainline in revision 3281.
  • Revision ID: john@arbash-meinel.com-20080314105537-v9h2ue0uxvs1dyn6
[merge] bzr.dev 3275

Show diffs side-by-side

added added

removed removed

Lines of Context:
591
591
        self.add_version('REV2', ['ROOT'], 'abce')
592
592
        # both sides merge, discarding others' changes
593
593
        self.add_version('LCA1', ['REV1', 'REV2'], 'abcd')
594
 
        self.add_version('LCA2', ['REV1', 'REV2'], 'abce')
 
594
        self.add_version('LCA2', ['REV1', 'REV2'], 'fabce')
595
595
        plan = self.plan_merge_vf.plan_lca_merge('LCA1', 'LCA2')
596
 
        self.assertEqual([('unchanged', 'a\n'),
 
596
        self.assertEqual([('new-b', 'f\n'),
 
597
                          ('unchanged', 'a\n'),
597
598
                          ('unchanged', 'b\n'),
598
599
                          ('unchanged', 'c\n'),
599
600
                          ('conflicted-a', 'd\n'),
600
601
                          ('conflicted-b', 'e\n'),
601
602
                         ], list(plan))
 
603
 
 
604
 
 
605
class TestMergeImplementation(object):
 
606
 
 
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)
 
614
        merger.do_merge()
 
615
 
 
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')
 
623
        ])
 
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')
 
630
        ])
 
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')
 
635
        ])
 
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')
 
640
 
 
641
 
 
642
class TestMerge3Merge(TestCaseWithTransport, TestMergeImplementation):
 
643
 
 
644
    merge_type = _mod_merge.Merge3Merger
 
645
 
 
646
 
 
647
class TestWeaveMerge(TestCaseWithTransport, TestMergeImplementation):
 
648
 
 
649
    merge_type = _mod_merge.WeaveMerger
 
650
 
 
651
 
 
652
class TestLCAMerge(TestCaseWithTransport, TestMergeImplementation):
 
653
 
 
654
    merge_type = _mod_merge.LCAMerger