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
self.addCleanup(tt.finalize)
389
preview_tree = tt.get_preview_tree()
390
tree_file = this_tree.get_file('file-id')
392
self.assertEqual('1\n2a\n', tree_file.read())
395
preview_file = preview_tree.get_file('file-id')
397
self.assertEqual('2b\n1\n2a\n', preview_file.read())
401
def test_do_merge(self):
402
this_tree = self.make_branch_and_tree('this')
403
self.build_tree_contents([('this/file', '1\n')])
404
this_tree.add('file', 'file-id')
405
this_tree.commit('rev1', rev_id='rev1')
406
other_tree = this_tree.bzrdir.sprout('other').open_workingtree()
407
self.build_tree_contents([('this/file', '1\n2a\n')])
408
this_tree.commit('rev2', rev_id='rev2a')
409
self.build_tree_contents([('other/file', '2b\n1\n')])
410
other_tree.commit('rev2', rev_id='rev2b')
411
this_tree.lock_write()
412
self.addCleanup(this_tree.unlock)
413
merger = _mod_merge.Merger.from_revision_ids(progress.DummyProgress(),
414
this_tree, 'rev2b', other_branch=other_tree.branch)
415
merger.merge_type = _mod_merge.Merge3Merger
416
tree_merger = merger.make_merger()
417
tt = tree_merger.do_merge()
418
tree_file = this_tree.get_file('file-id')
420
self.assertEqual('2b\n1\n2a\n', tree_file.read())
355
425
class TestPlanMerge(TestCaseWithMemoryTransport):