420
420
self.addCleanup(tree.unlock)
421
421
self.build_tree(['a'])
423
tree.commit("added a")
424
first_rev = tree.branch.revision_history()[0]
423
first_rev = tree.commit("added a")
425
424
merger = _mod_merge.Merger.from_revision_ids(None, tree,
426
425
_mod_revision.NULL_REVISION,
447
446
merger.merge_type = _mod_merge.Merge3Merger
448
447
tree_merger = merger.make_merger()
449
448
self.assertIs(_mod_merge.Merge3Merger, tree_merger.__class__)
450
self.assertEqual('rev2b', tree_merger.other_tree.get_revision_id())
451
self.assertEqual('rev1', tree_merger.base_tree.get_revision_id())
449
self.assertEqual('rev2b',
450
tree_merger.other_tree.get_revision_id())
451
self.assertEqual('rev1',
452
tree_merger.base_tree.get_revision_id())
453
self.assertEqual(other_tree.branch, tree_merger.other_branch)
453
455
def test_make_preview_transform(self):
454
456
this_tree = self.make_branch_and_tree('this')
509
511
self.addCleanup(tree.unlock)
510
512
self.build_tree(['a'])
512
tree.commit("added a")
514
first_rev = tree.commit("added a")
513
515
old_root_id = tree.get_root_id()
514
first_rev = tree.branch.revision_history()[0]
515
516
merger = _mod_merge.Merger.from_revision_ids(None, tree,
516
517
_mod_revision.NULL_REVISION,
3244
3245
# The dest tree is unmodified.
3245
3246
self.assertEqual(['r1-dest'], dest_wt.get_parent_ids())
3246
3247
self.assertTreeEntriesEqual([('', 'dest-root-id')], dest_wt)
3250
class TestMergeHooks(TestCaseWithTransport):
3253
super(TestMergeHooks, self).setUp()
3254
self.tree_a = self.make_branch_and_tree('tree_a')
3255
self.build_tree_contents([('tree_a/file', 'content_1')])
3256
self.tree_a.add('file', 'file-id')
3257
self.tree_a.commit('added file')
3259
self.tree_b = self.tree_a.bzrdir.sprout('tree_b').open_workingtree()
3260
self.build_tree_contents([('tree_b/file', 'content_2')])
3261
self.tree_b.commit('modify file')
3263
def test_pre_merge_hook_inject_different_tree(self):
3264
tree_c = self.tree_b.bzrdir.sprout('tree_c').open_workingtree()
3265
self.build_tree_contents([('tree_c/file', 'content_3')])
3266
tree_c.commit("more content")
3268
def factory(merger):
3269
self.assertIsInstance(merger, _mod_merge.Merge3Merger)
3270
merger.other_tree = tree_c
3271
calls.append(merger)
3272
_mod_merge.Merger.hooks.install_named_hook('pre_merge',
3273
factory, 'test factory')
3274
self.tree_a.merge_from_branch(self.tree_b.branch)
3276
self.assertFileEqual("content_3", 'tree_a/file')
3277
self.assertLength(1, calls)
3279
def test_post_merge_hook_called(self):
3281
def factory(merger):
3282
self.assertIsInstance(merger, _mod_merge.Merge3Merger)
3283
calls.append(merger)
3284
_mod_merge.Merger.hooks.install_named_hook('post_merge',
3285
factory, 'test factory')
3287
self.tree_a.merge_from_branch(self.tree_b.branch)
3289
self.assertFileEqual("content_2", 'tree_a/file')
3290
self.assertLength(1, calls)