Rev 3531: switch over test_merge to using the new BranchBuilder api. in http://bzr.arbash-meinel.com/branches/bzr/1.7-dev/merge_lca_multi

John Arbash Meinel john at arbash-meinel.com
Tue Jul 22 21:18:41 BST 2008


At http://bzr.arbash-meinel.com/branches/bzr/1.7-dev/merge_lca_multi

------------------------------------------------------------
revno: 3531
revision-id: john at arbash-meinel.com-20080722201736-47jhd8ij30jhgw7j
parent: john at arbash-meinel.com-20080722195253-ic5o3tbuc97e2uoc
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: merge_lca_multi
timestamp: Tue 2008-07-22 15:17:36 -0500
message:
  switch over test_merge to using the new BranchBuilder api.
-------------- next part --------------
=== modified file 'bzrlib/tests/test_merge.py'
--- a/bzrlib/tests/test_merge.py	2008-07-22 19:52:53 +0000
+++ b/bzrlib/tests/test_merge.py	2008-07-22 20:17:36 +0000
@@ -21,6 +21,7 @@
     conflicts,
     errors,
     knit,
+    memorytree,
     merge as _mod_merge,
     option,
     progress,
@@ -1113,19 +1114,14 @@
                 |\\
                 B C
 
-        :return: A MemoryTree which is already write-locked, and an unlock has
-            been queued up.
+        :return: A BranchBuilder
         """
-        tree = self.make_branch_and_memory_tree('tree')
-        tree.lock_write()
-        self.addCleanup(tree.unlock)
-        tree.add('.')
-        tree.commit('A', rev_id='A-id')
-        tree.commit('C', rev_id='C-id')
-        tree.set_parent_ids(['A-id'])
-        tree.branch.set_last_revision_info(1, 'A-id')
-        tree.commit('B', rev_id='B-id')
-        return tree
+        builder = self.make_branch_builder('path')
+        builder.build_snapshot('A-id', None,
+            [('add', ('', None, 'directory', None))])
+        builder.build_snapshot('C-id', ['A-id'], [])
+        builder.build_snapshot('B-id', ['A-id'], [])
+        return builder
 
     def setup_criss_cross_graph(self):
         """Create a 5-node graph with a criss-cross.
@@ -1134,30 +1130,29 @@
                 B C
                 |X|
                 D E
-        :return: A write locked Memory Tree
+        :return: A BranchBuilder
         """
-        tree = self.setup_simple_graph()
-        tree.branch.set_last_revision_info(2, 'C-id')
-        tree.set_parent_ids(['C-id', 'B-id'])
-        tree.commit('E', rev_id='E-id')
-        tree.set_parent_ids(['B-id', 'C-id'])
-        tree.branch.set_last_revision_info(2, 'B-id')
-        tree.commit('D', rev_id='D-id')
-        return tree
+        builder = self.setup_simple_graph()
+        builder.build_snapshot('E-id', ['C-id', 'B-id'], [])
+        builder.build_snapshot('D-id', ['B-id', 'C-id'], [])
+        return builder
+
+    def make_merger(self, builder, other_revision_id):
+        """Make a Merger object from a branch builder"""
+        mem_tree = memorytree.MemoryTree.create_on_branch(builder.get_branch())
+        mem_tree.lock_write()
+        self.addCleanup(mem_tree.unlock)
+        return _mod_merge.Merger.from_revision_ids(progress.DummyProgress(),
+            mem_tree, other_revision_id)
 
     def test_find_base(self):
-        tree = self.setup_simple_graph()
-        merger = _mod_merge.Merger.from_revision_ids(progress.DummyProgress(),
-            tree, 'C-id')
+        merger = self.make_merger(self.setup_simple_graph(), 'C-id')
         self.assertEqual('A-id', merger.base_rev_id)
         self.assertFalse(merger._is_criss_cross)
         self.assertIs(None, merger._lca_trees)
 
-
     def test_find_base_criss_cross(self):
-        tree = self.setup_criss_cross_graph()
-        merger = _mod_merge.Merger.from_revision_ids(progress.DummyProgress(),
-            tree, 'E-id')
+        merger = self.make_merger(self.setup_criss_cross_graph(), 'E-id')
         self.assertEqual('A-id', merger.base_rev_id)
         self.assertTrue(merger._is_criss_cross)
         self.assertEqual(['B-id', 'C-id'], sorted(merger._lca_trees.keys()))
@@ -1166,18 +1161,14 @@
         class LCATreesMerger(LoggingMerger):
             supports_lca_trees = True
 
-        tree = self.setup_simple_graph()
-        merger = _mod_merge.Merger.from_revision_ids(progress.DummyProgress(),
-            tree, 'C-id')
+        merger = self.make_merger(self.setup_simple_graph(), 'C-id')
         merger.merge_type = LCATreesMerger
         merge_obj = merger.make_merger()
         self.assertIsInstance(merge_obj, LCATreesMerger)
         self.assertFalse('lca_trees' in merge_obj.kwargs)
 
     def test_criss_cross_passed_to_merge_type(self):
-        tree = self.setup_criss_cross_graph()
-        merger = _mod_merge.Merger.from_revision_ids(progress.DummyProgress(),
-            tree, 'E-id')
+        merger = self.make_merger(self.setup_criss_cross_graph(), 'E-id')
         merger.merge_type = _mod_merge.Merge3Merger
         merge_obj = merger.make_merger()
         self.assertEqual(['B-id', 'C-id'], sorted(merge_obj._lca_trees.keys()))
@@ -1187,9 +1178,7 @@
             # We intentionally do not define supports_lca_trees
             pass
 
-        tree = self.setup_criss_cross_graph()
-        merger = _mod_merge.Merger.from_revision_ids(progress.DummyProgress(),
-            tree, 'E-id')
+        merger = self.make_merger(self.setup_criss_cross_graph(), 'E-id')
         merger.merge_type = NoLCATreesMerger
         merge_obj = merger.make_merger()
         self.assertIsInstance(merge_obj, NoLCATreesMerger)
@@ -1199,49 +1188,35 @@
         class UnsupportedLCATreesMerger(LoggingMerger):
             supports_lca_trees = False
 
-        tree = self.setup_criss_cross_graph()
-        merger = _mod_merge.Merger.from_revision_ids(progress.DummyProgress(),
-            tree, 'E-id')
+        merger = self.make_merger(self.setup_criss_cross_graph(), 'E-id')
         merger.merge_type = UnsupportedLCATreesMerger
         merge_obj = merger.make_merger()
         self.assertIsInstance(merge_obj, UnsupportedLCATreesMerger)
         self.assertFalse('lca_trees' in merge_obj.kwargs)
 
     def test__entries_lca_simple(self):
-        tree = self.make_branch_and_memory_tree('tree')
-        tree.lock_write()
-        self.addCleanup(tree.unlock)
-        tree.add('.')
-        tree.add(['a'], ['a-id'], ['file'])
-        tree.put_file_bytes_non_atomic('a-id', 'a\nb\nc\n')
-        tree.commit('A', rev_id='A-id')
-        tree.put_file_bytes_non_atomic('a-id', 'a\nb\nC\nc\n')
-        tree.commit('C', rev_id='C-id')
-        tree.branch.set_last_revision_info(1, 'A-id')
-        tree.set_parent_ids(['A-id'])
-        tree.put_file_bytes_non_atomic('a-id', 'a\nB\nb\nc\n')
-        tree.commit('B', rev_id='B-id')
-        tree.set_parent_ids(['B-id', 'C-id'])
-        tree.put_file_bytes_non_atomic('a-id', 'a\nB\nb\nC\nc\n')
-        tree.commit('D', rev_id='D-id')
-        tree.branch.set_last_revision_info(2, 'C-id')
-        tree.set_parent_ids(['C-id', 'B-id'])
-        tree.put_file_bytes_non_atomic('a-id', 'a\nB\nb\nC\nc\nE\n')
-        tree.commit('E', rev_id='E-id')
-        tree.branch.set_last_revision_info(2, 'D-id')
-        tree.set_parent_ids(['D-id'])
-
-        merger = _mod_merge.Merger.from_revision_ids(progress.DummyProgress(),
-            tree, 'E-id')
+        builder = self.make_branch_builder('tree')
+        builder.build_snapshot('A-id', None,
+            [('add', (u'', 'a-root-id', 'directory', None)),
+             ('add', (u'a', 'a-id', 'file', 'a\nb\nc\n'))])
+        builder.build_snapshot('C-id', ['A-id'],
+            [('modify', ('a-id', 'a\nb\nC\nc\n'))])
+        builder.build_snapshot('B-id', ['A-id'],
+            [('modify', ('a-id', 'a\nB\nb\nc\n'))])
+        builder.build_snapshot('E-id', ['C-id', 'B-id'],
+            [('modify', ('a-id', 'a\nB\nb\nC\nc\nE\n'))])
+        builder.build_snapshot('D-id', ['B-id', 'C-id'],
+            [('modify', ('a-id', 'a\nB\nb\nC\nc\n'))])
+        merger = self.make_merger(builder, 'E-id')
         merger.merge_type = _mod_merge.Merge3Merger
         merge_obj = merger.make_merger()
 
         entries = list(merge_obj._entries_lca())
-        root_id = tree.path2id('')
         self.assertEqual(['B-id', 'C-id'], sorted(merge_obj._lca_trees.keys()))
 
         # (file_id, changed, parents, names, executable)
         # BASE, lca1, lca2, OTHER, THIS
+        root_id = 'a-root-id'
         self.assertEqual([(root_id, True,
                            ((None, [None, None]), None, None),
                            ((u'', [u'', u'']), u'', u''),



More information about the bazaar-commits mailing list