/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/tests/test_merge.py

  • Committer: Jelmer Vernooij
  • Date: 2017-11-19 18:35:20 UTC
  • mfrom: (6809.4.27 swap-arguments)
  • Revision ID: jelmer@jelmer.uk-20171119183520-fmw89uw30e0tbhwz
Merge lp:~jelmer/brz/swap-arguments.

Show diffs side-by-side

added added

removed removed

Lines of Context:
474
474
        tt = tree_merger.make_preview_transform()
475
475
        self.addCleanup(tt.finalize)
476
476
        preview_tree = tt.get_preview_tree()
477
 
        tree_file = this_tree.get_file('file-id')
 
477
        tree_file = this_tree.get_file('file')
478
478
        try:
479
479
            self.assertEqual('1\n2a\n', tree_file.read())
480
480
        finally:
481
481
            tree_file.close()
482
 
        preview_file = preview_tree.get_file('file-id')
 
482
        preview_file = preview_tree.get_file('file')
483
483
        try:
484
484
            self.assertEqual('2b\n1\n2a\n', preview_file.read())
485
485
        finally:
502
502
        merger.merge_type = _mod_merge.Merge3Merger
503
503
        tree_merger = merger.make_merger()
504
504
        tt = tree_merger.do_merge()
505
 
        tree_file = this_tree.get_file('file-id')
 
505
        tree_file = this_tree.get_file('file')
506
506
        try:
507
507
            self.assertEqual('2b\n1\n2a\n', tree_file.read())
508
508
        finally:
2168
2168
        wt, conflicts = self.do_merge(builder, 'E-id')
2169
2169
        self.assertEqual(0, conflicts)
2170
2170
        # The merge should have simply update the contents of 'a'
2171
 
        self.assertEqual('a\nb\nc\nd\ne\nf\n', wt.get_file_text('a-id'))
 
2171
        self.assertEqual('a\nb\nc\nd\ne\nf\n', wt.get_file_text('a'))
2172
2172
 
2173
2173
    def test_conflict_without_lca(self):
2174
2174
        # This test would cause a merge conflict, unless we use the lca trees
2258
2258
        except:
2259
2259
            tt.finalize()
2260
2260
            raise
2261
 
        self.assertTrue(wt.is_executable('foo-id'))
 
2261
        self.assertTrue(wt.is_executable('foo'))
2262
2262
        wt.commit('F-id', rev_id='F-id')
2263
2263
        # Reset to D, so that we can merge F
2264
2264
        wt.set_parent_ids(['D-id'])
2265
2265
        wt.branch.set_last_revision_info(3, 'D-id')
2266
2266
        wt.revert()
2267
 
        self.assertFalse(wt.is_executable('foo-id'))
 
2267
        self.assertFalse(wt.is_executable('foo'))
2268
2268
        conflicts = wt.merge_from_branch(wt.branch, to_revision='F-id')
2269
2269
        self.assertEqual(0, conflicts)
2270
 
        self.assertTrue(wt.is_executable('foo-id'))
 
2270
        self.assertTrue(wt.is_executable('foo'))
2271
2271
 
2272
2272
    def test_create_symlink(self):
2273
2273
        self.requireFeature(features.SymlinkFeature)
2294
2294
        wt = self.get_wt_from_builder(builder)
2295
2295
        os.symlink('bar', 'path/foo')
2296
2296
        wt.add(['foo'], ['foo-id'])
2297
 
        self.assertEqual('bar', wt.get_symlink_target('foo-id'))
 
2297
        self.assertEqual('bar', wt.get_symlink_target('foo'))
2298
2298
        wt.commit('add symlink', rev_id='F-id')
2299
2299
        # Reset to D, so that we can merge F
2300
2300
        wt.set_parent_ids(['D-id'])
2304
2304
        conflicts = wt.merge_from_branch(wt.branch, to_revision='F-id')
2305
2305
        self.assertEqual(0, conflicts)
2306
2306
        self.assertEqual('foo-id', wt.path2id('foo'))
2307
 
        self.assertEqual('bar', wt.get_symlink_target('foo-id'))
 
2307
        self.assertEqual('bar', wt.get_symlink_target('foo'))
2308
2308
 
2309
2309
    def test_both_sides_revert(self):
2310
2310
        # Both sides of a criss-cross revert the text to the lca
2338
2338
                             '=======\n'
2339
2339
                             'C content\n'
2340
2340
                             '>>>>>>> MERGE-SOURCE\n',
2341
 
                             wt.get_file_text('foo-id'))
 
2341
                             wt.get_file_text('foo'))
2342
2342
 
2343
2343
    def test_modified_symlink(self):
2344
2344
        self.requireFeature(features.SymlinkFeature)
2371
2371
        wt.revert()
2372
2372
        wt.commit('C', rev_id='C-id')
2373
2373
        wt.merge_from_branch(wt.branch, 'B-id')
2374
 
        self.assertEqual('baz', wt.get_symlink_target('foo-id'))
 
2374
        self.assertEqual('baz', wt.get_symlink_target('foo'))
2375
2375
        wt.commit('E merges C & B', rev_id='E-id')
2376
2376
        os.remove('path/foo')
2377
2377
        os.symlink('bing', 'path/foo')
2383
2383
        wt.commit('D merges B & C', rev_id='D-id')
2384
2384
        conflicts = wt.merge_from_branch(wt.branch, to_revision='F-id')
2385
2385
        self.assertEqual(0, conflicts)
2386
 
        self.assertEqual('bing', wt.get_symlink_target('foo-id'))
 
2386
        self.assertEqual('bing', wt.get_symlink_target('foo'))
2387
2387
 
2388
2388
    def test_renamed_symlink(self):
2389
2389
        self.requireFeature(features.SymlinkFeature)
2414
2414
        wt.commit('C', rev_id='C-id')
2415
2415
        wt.merge_from_branch(wt.branch, 'B-id')
2416
2416
        self.assertEqual('barry', wt.id2path('foo-id'))
2417
 
        self.assertEqual('bar', wt.get_symlink_target('foo-id'))
 
2417
        self.assertEqual('bar', wt.get_symlink_target('barry'))
2418
2418
        wt.commit('E merges C & B', rev_id='E-id')
2419
2419
        wt.rename_one('barry', 'blah')
2420
2420
        wt.commit('F barry => blah', rev_id='F-id')
2468
2468
        wt.revert()
2469
2469
        wt.commit('C', rev_id='C-id')
2470
2470
        wt.merge_from_branch(wt.branch, 'B-id')
2471
 
        self.assertEqual('baz', wt.get_symlink_target('foo-id'))
 
2471
        self.assertEqual('baz', wt.get_symlink_target('foo'))
2472
2472
        wt.commit('E merges C & B', rev_id='E-id')
2473
2473
        wt.set_last_revision('B-id')
2474
2474
        wt.branch.set_last_revision_info(2, 'B-id')
2488
2488
        # Now do a real merge, just to test the rest of the stack
2489
2489
        conflicts = wt.merge_from_branch(wt.branch, to_revision='E-id')
2490
2490
        self.assertEqual(0, conflicts)
2491
 
        self.assertEqual('bing', wt.get_symlink_target('foo-id'))
 
2491
        self.assertEqual('bing', wt.get_symlink_target('foo'))
2492
2492
 
2493
2493
    def test_symlink_this_changed_kind(self):
2494
2494
        self.requireFeature(features.SymlinkFeature)
2514
2514
        wt.revert()
2515
2515
        wt.commit('C', rev_id='C-id')
2516
2516
        wt.merge_from_branch(wt.branch, 'B-id')
2517
 
        self.assertEqual('bar', wt.get_symlink_target('foo-id'))
 
2517
        self.assertEqual('bar', wt.get_symlink_target('foo'))
2518
2518
        os.remove('path/foo')
2519
2519
        # We have to change the link in E, or it won't try to do a comparison
2520
2520
        os.symlink('bing', 'path/foo')
2570
2570
        wt.revert()
2571
2571
        wt.commit('C', rev_id='C-id')
2572
2572
        wt.merge_from_branch(wt.branch, 'B-id')
2573
 
        self.assertEqual('baz', wt.get_symlink_target('foo-id'))
 
2573
        self.assertEqual('baz', wt.get_symlink_target('foo'))
2574
2574
        wt.commit('E merges C & B', rev_id='E-id')
2575
2575
        os.remove('path/foo')
2576
2576
        os.symlink('bing', 'path/foo')
2651
2651
        # TODO: We need to use the per-file graph to properly select a BASE
2652
2652
        #       before this will work. Or at least use the LCA trees to find
2653
2653
        #       the appropriate content base. (which is B, not A).
2654
 
        self.assertEqual('base content\n', wt.get_file_text('foo-id'))
 
2654
        self.assertEqual('base content\n', wt.get_file_text('foo'))
2655
2655
 
2656
2656
    def test_other_modified_content(self):
2657
2657
        builder = self.get_builder()
2672
2672
        builder.build_snapshot(['B-id', 'C-id'], [], revision_id='D-id')
2673
2673
        wt, conflicts = self.do_merge(builder, 'F-id')
2674
2674
        self.assertEqual(0, conflicts)
2675
 
        self.assertEqual('F content\n', wt.get_file_text('foo-id'))
 
2675
        self.assertEqual('F content\n', wt.get_file_text('foo'))
2676
2676
 
2677
2677
    def test_all_wt(self):
2678
2678
        """Check behavior if all trees are Working Trees."""