~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_merge.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2008-01-17 03:52:50 UTC
  • mfrom: (3008.1.32 transform_preview)
  • Revision ID: pqm@pqm.ubuntu.com-20080117035250-gbe1pe5e25m58t9q
Implement merge --preview, allowing previewing merges

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
    merge as _mod_merge,
25
25
    option,
26
26
    progress,
 
27
    transform,
27
28
    versionedfile,
28
29
    )
29
30
from bzrlib.branch import Branch
351
352
        merger.merge_type = _mod_merge.Merge3Merger
352
353
        merger.do_merge()
353
354
 
 
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())
 
370
 
 
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')
 
390
        try:
 
391
            self.assertEqual('1\n2a\n', tree_file.read())
 
392
        finally:
 
393
            tree_file.close()
 
394
        preview_file = preview_tree.get_file('file-id')
 
395
        try:
 
396
            self.assertEqual('2b\n1\n2a\n', preview_file.read())
 
397
        finally:
 
398
            preview_file.close()
 
399
 
 
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')
 
418
        try:
 
419
            self.assertEqual('2b\n1\n2a\n', tree_file.read())
 
420
        finally:
 
421
            tree_file.close()
 
422
 
354
423
 
355
424
class TestPlanMerge(TestCaseWithMemoryTransport):
356
425