351
352
merger.merge_type = _mod_merge.Merge3Merger
352
353
merger.do_merge()
355
def test_make_merger(self):
356
this_tree = self.make_branch_and_tree('this')
357
this_tree.commit('rev1', rev_id='rev1')
358
other_tree = this_tree.bzrdir.sprout('other').open_workingtree()
359
this_tree.commit('rev2', rev_id='rev2a')
360
other_tree.commit('rev2', rev_id='rev2b')
361
this_tree.lock_write()
362
self.addCleanup(this_tree.unlock)
363
merger = _mod_merge.Merger.from_revision_ids(progress.DummyProgress,
364
this_tree, 'rev2b', other_branch=other_tree.branch)
365
merger.merge_type = _mod_merge.Merge3Merger
366
tree_merger = merger.make_merger()
367
self.assertIs(_mod_merge.Merge3Merger, tree_merger.__class__)
368
self.assertEqual('rev2b', tree_merger.other_tree.get_revision_id())
369
self.assertEqual('rev1', tree_merger.base_tree.get_revision_id())
371
def test_make_preview_transform(self):
372
this_tree = self.make_branch_and_tree('this')
373
self.build_tree_contents([('this/file', '1\n')])
374
this_tree.add('file', 'file-id')
375
this_tree.commit('rev1', rev_id='rev1')
376
other_tree = this_tree.bzrdir.sprout('other').open_workingtree()
377
self.build_tree_contents([('this/file', '1\n2a\n')])
378
this_tree.commit('rev2', rev_id='rev2a')
379
self.build_tree_contents([('other/file', '2b\n1\n')])
380
other_tree.commit('rev2', rev_id='rev2b')
381
this_tree.lock_write()
382
self.addCleanup(this_tree.unlock)
383
merger = _mod_merge.Merger.from_revision_ids(progress.DummyProgress(),
384
this_tree, 'rev2b', other_branch=other_tree.branch)
385
merger.merge_type = _mod_merge.Merge3Merger
386
tree_merger = merger.make_merger()
387
tt = tree_merger.make_preview_transform()
388
preview_tree = tt.get_preview_tree()
389
tree_file = this_tree.get_file('file-id')
391
self.assertEqual('1\n2a\n', tree_file.read())
394
preview_file = preview_tree.get_file('file-id')
396
self.assertEqual('2b\n1\n2a\n', preview_file.read())
400
def test_do_merge(self):
401
this_tree = self.make_branch_and_tree('this')
402
self.build_tree_contents([('this/file', '1\n')])
403
this_tree.add('file', 'file-id')
404
this_tree.commit('rev1', rev_id='rev1')
405
other_tree = this_tree.bzrdir.sprout('other').open_workingtree()
406
self.build_tree_contents([('this/file', '1\n2a\n')])
407
this_tree.commit('rev2', rev_id='rev2a')
408
self.build_tree_contents([('other/file', '2b\n1\n')])
409
other_tree.commit('rev2', rev_id='rev2b')
410
this_tree.lock_write()
411
self.addCleanup(this_tree.unlock)
412
merger = _mod_merge.Merger.from_revision_ids(progress.DummyProgress(),
413
this_tree, 'rev2b', other_branch=other_tree.branch)
414
merger.merge_type = _mod_merge.Merge3Merger
415
tree_merger = merger.make_merger()
416
tt = tree_merger.do_merge()
417
tree_file = this_tree.get_file('file-id')
419
self.assertEqual('2b\n1\n2a\n', tree_file.read())
355
424
class TestPlanMerge(TestCaseWithMemoryTransport):