~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-07-13 04:06:16 UTC
  • mto: This revision was merged to the branch mainline in revision 3543.
  • Revision ID: john@arbash-meinel.com-20080713040616-fl43f8inkw19qj2l
Bring in the code to collapse linear portions of the graph.
Also, start handling when we get NULL_REVISION instead of a tuple key
from various apis.
We could probably handle it at a different level if we really wanted.

Show diffs side-by-side

added added

removed removed

Lines of Context:
643
643
                          ('unchanged', 'F\n')],
644
644
                         list(plan))
645
645
 
 
646
    def test_plan_merge_2_tail_triple_ancestors(self):
 
647
        # The graph looks like this:
 
648
        #     A   B     # 2 tails going back to NULL
 
649
        #     |\ /|
 
650
        #     D E F     # D, is unique to G, F to H
 
651
        #     |/|\|     # E is the LCA for G & H, and the unique LCA for
 
652
        #     G Q H     # I, J
 
653
        #     |\ /|     # Q is just an extra node which is merged into both
 
654
        #     | X |     # I and J
 
655
        #     |/ \|
 
656
        #     I   J     # criss-cross merge of G, H (and Q)
 
657
        #
 
658
 
 
659
        # This is meant to test after hitting a 3-way LCA, and multiple tail
 
660
        # ancestors (only have NULL_REVISION in common)
 
661
 
 
662
        self.add_rev('root', 'A', [], 'abc')
 
663
        self.add_rev('root', 'B', [], 'def')
 
664
        self.add_rev('root', 'D', ['A'], 'Dabc')
 
665
        self.add_rev('root', 'E', ['A', 'B'], 'abcdef')
 
666
        self.add_rev('root', 'F', ['B'], 'defF')
 
667
        self.add_rev('root', 'G', ['D', 'E'], 'Dabcdef')
 
668
        self.add_rev('root', 'H', ['F', 'E'], 'abcdefF')
 
669
        self.add_rev('root', 'Q', ['E'], 'abcdef')
 
670
        self.add_rev('root', 'I', ['G', 'Q', 'H'], 'DabcdefF')
 
671
        # Merge G & H but supersede an old line in B
 
672
        self.add_rev('root', 'J', ['H', 'Q', 'G'], 'DabcdJfF')
 
673
        plan = self.plan_merge_vf.plan_merge('I', 'J')
 
674
        self.assertEqual([
 
675
                          ('unchanged', 'D\n'),
 
676
                          ('unchanged', 'a\n'),
 
677
                          ('unchanged', 'b\n'),
 
678
                          ('unchanged', 'c\n'),
 
679
                          ('unchanged', 'd\n'),
 
680
                          ('killed-b', 'e\n'),
 
681
                          ('new-b', 'J\n'),
 
682
                          ('unchanged', 'f\n'),
 
683
                          ('unchanged', 'F\n')],
 
684
                         list(plan))
 
685
 
646
686
    def test_plan_merge_uncommitted_files(self):
647
687
        self.setup_plan_merge_uncommitted()
648
688
        plan = self.plan_merge_vf.plan_merge('B:', 'C:')