/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/blackbox/test_merge.py

  • Committer: Jelmer Vernooij
  • Date: 2018-11-17 00:47:52 UTC
  • mfrom: (7182 work)
  • mto: This revision was merged to the branch mainline in revision 7305.
  • Revision ID: jelmer@jelmer.uk-20181117004752-6ywampe5pfywlby4
Merge trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
64
64
        """
65
65
        builder = self.make_branch_builder('branch')
66
66
        builder.build_snapshot(None,
67
 
            [('add', ('', b'root-id', 'directory', None)),
68
 
             ('add', ('fname', b'f-id', 'file', b'a\nb\nc\n'))],
69
 
            revision_id=b'rev1')
 
67
                               [('add', ('', b'root-id', 'directory', None)),
 
68
                                ('add', ('fname', b'f-id', 'file', b'a\nb\nc\n'))],
 
69
                               revision_id=b'rev1')
70
70
        builder.build_snapshot([b'rev1'],
71
 
            [('modify', ('fname', b'a\nB\nD\n'))],
72
 
            revision_id=b'rev2other')
 
71
                               [('modify', ('fname', b'a\nB\nD\n'))],
 
72
                               revision_id=b'rev2other')
73
73
        other = builder.get_branch().controldir.sprout('other').open_branch()
74
74
        builder.build_snapshot([b'rev1'],
75
 
            [('modify', ('fname', b'a\nB\nC\n'))], revision_id=b'rev2this')
 
75
                               [('modify', ('fname', b'a\nB\nC\n'))], revision_id=b'rev2this')
76
76
        tree = builder.get_branch().create_checkout('tree', lightweight=True)
77
77
        return tree, other
78
78
 
123
123
                                working_dir='a')
124
124
        self.assertTrue("Not a branch" in err)
125
125
        self.run_bzr('merge -r revno:%d:./..revno:%d:../b'
126
 
                    %(ancestor, b.revno()), working_dir='a')
 
126
                     % (ancestor, b.revno()), working_dir='a')
127
127
        self.assertEqual(a.get_parent_ids(),
128
 
                          [a.branch.last_revision(), b.last_revision()])
 
128
                         [a.branch.last_revision(), b.last_revision()])
129
129
        self.check_file_contents('a/goodbye', b'quux')
130
130
        a_tree.revert(backups=False)
131
 
        self.run_bzr('merge -r revno:%d:../b'%b.revno(), working_dir='a')
 
131
        self.run_bzr('merge -r revno:%d:../b' % b.revno(), working_dir='a')
132
132
        self.assertEqual(a.get_parent_ids(),
133
 
                          [a.branch.last_revision(), b.last_revision()])
 
133
                         [a.branch.last_revision(), b.last_revision()])
134
134
        a_tip = a.commit('merged')
135
135
        self.run_bzr('merge ../b -r last:1', working_dir='a')
136
136
        self.assertEqual([a_tip], a.get_parent_ids())
266
266
        # test merge for failure without parent set
267
267
        out = self.run_bzr('merge', retcode=3, working_dir='branch_b')
268
268
        self.assertEqual(out,
269
 
                ('', 'brz: ERROR: No location specified or remembered\n'))
 
269
                         ('', 'brz: ERROR: No location specified or remembered\n'))
270
270
 
271
271
        # test uncommitted changes
272
272
        self.build_tree(['branch_b/d'])
283
283
        # re-open branch as external run_brz modified it
284
284
        branch_b = branch_b.controldir.open_branch()
285
285
        self.assertEqual(osutils.abspath(branch_b.get_submit_branch()),
286
 
                          osutils.abspath(parent))
 
286
                         osutils.abspath(parent))
287
287
        # test implicit --remember when committing new file
288
288
        self.build_tree(['branch_b/e'])
289
289
        tree_b.add('e')
302
302
        # re-open branch as external run_brz modified it
303
303
        branch_b = branch_b.controldir.open_branch()
304
304
        self.assertEqual(osutils.abspath(branch_b.get_submit_branch()),
305
 
                          osutils.abspath(branch_c.controldir.root_transport.base))
 
305
                         osutils.abspath(branch_c.controldir.root_transport.base))
306
306
        # re-open tree as external run_brz modified it
307
307
        tree_b = branch_b.controldir.open_workingtree()
308
308
        tree_b.commit('merge branch_c')
327
327
        testament_b = Testament.from_revision(tree_b.branch.repository,
328
328
                                              tree_b.get_parent_ids()[0])
329
329
        self.assertEqualDiff(testament_a.as_text(),
330
 
                         testament_b.as_text())
 
330
                             testament_b.as_text())
331
331
        tree_a.set_conflicts(conflicts.ConflictList())
332
332
        tree_a.commit('message')
333
333
        # it is legal to attempt to merge an already-merged bundle
334
334
        err = self.run_bzr('merge ../bundle', working_dir='branch_a')[1]
335
335
        # but it does nothing
336
 
        self.assertFalse(tree_a.changes_from(tree_a.basis_tree()).has_changed())
 
336
        self.assertFalse(tree_a.changes_from(
 
337
            tree_a.basis_tree()).has_changed())
337
338
        self.assertEqual('Nothing to do.\n', err)
338
339
 
339
340
    def test_merge_uncommitted(self):
398
399
        self.pullable_branch()
399
400
        (out, err) = self.run_bzr('merge --pull --preview -d a b')
400
401
        self.assertThat(out, matchers.DocTestMatches(
401
 
"""=== modified file 'file'
 
402
            """=== modified file 'file'
402
403
--- file\t...
403
404
+++ file\t...
404
405
@@ -1,1 +1,1 @@
521
522
        # make source branch
522
523
        source = self.make_branch_and_tree('source')
523
524
        for f in ('a', 'b', 'c', 'd'):
524
 
            self.build_tree(['source/'+f])
 
525
            self.build_tree(['source/' + f])
525
526
            source.add(f)
526
 
            source.commit('added '+f, rev_id=b'rev_'+f.encode('ascii'))
 
527
            source.commit('added ' + f, rev_id=b'rev_' + f.encode('ascii'))
527
528
        # target branch
528
 
        target = source.controldir.sprout('target', b'rev_a').open_workingtree()
 
529
        target = source.controldir.sprout(
 
530
            'target', b'rev_a').open_workingtree()
529
531
        self.assertDirectoryContent('target', ['.bzr', 'a'])
530
532
        # pick 1 revision
531
533
        self.run_bzr('merge -d target -r revid:rev_b..revid:rev_c source')
562
564
        self.assertContainsRe(err,
563
565
                              'Merging from remembered parent location .*a\\/')
564
566
        with tree_c.branch.lock_write():
565
 
            tree_c.branch.set_submit_branch(tree_b.controldir.root_transport.base)
 
567
            tree_c.branch.set_submit_branch(
 
568
                tree_b.controldir.root_transport.base)
566
569
        out, err = self.run_bzr(['merge', '-d', 'c'])
567
570
        self.assertContainsRe(err,
568
571
                              'Merging from remembered submit location .*b\\/')
732
735
2>brz: ERROR: Merging into empty branches not currently supported, https://bugs.launchpad.net/bzr/+bug/308562
733
736
""")
734
737
 
 
738
 
735
739
class TestMergeForce(tests.TestCaseWithTransport):
736
740
 
737
741
    def setUp(self):
750
754
        # Second merge on top of the uncommitted one
751
755
        self.run_bzr(['merge', '../a', '--force'], working_dir='b')
752
756
 
753
 
 
754
757
    def test_merge_with_uncommitted_changes(self):
755
758
        self.run_bzr_error(['Working tree .* has uncommitted changes'],
756
759
                           ['merge', '../a'], working_dir='b')