~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/blackbox/test_merge.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2008-06-05 04:05:05 UTC
  • mfrom: (3473.1.1 ianc-integration)
  • Revision ID: pqm@pqm.ubuntu.com-20080605040505-i9kqxg2fps2qjdi0
Add the 'alias' command (Tim Penhey)

Show diffs side-by-side

added added

removed removed

Lines of Context:
44
44
        tree.commit(message='setup')
45
45
        return tree
46
46
 
47
 
    def create_conflicting_branches(self):
48
 
        """Create two branches which have overlapping modifications.
49
 
 
50
 
        :return: (tree, other_branch) Where merging other_branch causes a file
51
 
            conflict.
52
 
        """
53
 
        builder = self.make_branch_builder('branch')
54
 
        builder.build_snapshot('rev1', None,
55
 
            [('add', ('', 'root-id', 'directory', None)),
56
 
             ('add', ('fname', 'f-id', 'file', 'a\nb\nc\n'))])
57
 
        builder.build_snapshot('rev2other', ['rev1'],
58
 
            [('modify', ('f-id', 'a\nB\nD\n'))])
59
 
        other = builder.get_branch().bzrdir.sprout('other').open_branch()
60
 
        builder.build_snapshot('rev2this', ['rev1'],
61
 
            [('modify', ('f-id', 'a\nB\nC\n'))])
62
 
        tree = builder.get_branch().create_checkout('tree', lightweight=True)
63
 
        return tree, other
64
 
 
65
47
    def test_merge_reprocess(self):
66
48
        d = BzrDir.create_standalone_workingtree('.')
67
49
        d.commit('h')
119
101
        self.run_bzr('merge ../b -r last:1')
120
102
        self.assertEqual([a_tip], a.get_parent_ids())
121
103
 
122
 
    def test_merge_defaults_to_reprocess(self):
123
 
        tree, other = self.create_conflicting_branches()
124
 
        # The default merge algorithm should enable 'reprocess' because
125
 
        # 'show-base' is not set
126
 
        self.run_bzr('merge ../other', working_dir='tree',
127
 
                     retcode=1)
128
 
        self.assertEqualDiff('a\n'
129
 
                             'B\n'
130
 
                             '<<<<<<< TREE\n'
131
 
                             'C\n'
132
 
                             '=======\n'
133
 
                             'D\n'
134
 
                             '>>>>>>> MERGE-SOURCE\n',
135
 
                             tree.get_file_text('f-id'))
136
 
 
137
 
    def test_merge_explicit_reprocess_show_base(self):
138
 
        tree, other = self.create_conflicting_branches()
139
 
        # Explicitly setting --reprocess, and --show-base is an error
140
 
        self.run_bzr_error(['Cannot do conflict reduction and show base'],
141
 
                           'merge ../other --reprocess --show-base',
142
 
                           working_dir='tree')
143
 
 
144
 
    def test_merge_override_reprocess(self):
145
 
        tree, other = self.create_conflicting_branches()
146
 
        # Explicitly disable reprocess
147
 
        self.run_bzr('merge ../other --no-reprocess', working_dir='tree',
148
 
                     retcode=1)
149
 
        self.assertEqualDiff('a\n'
150
 
                             '<<<<<<< TREE\n'
151
 
                             'B\n'
152
 
                             'C\n'
153
 
                             '=======\n'
154
 
                             'B\n'
155
 
                             'D\n'
156
 
                             '>>>>>>> MERGE-SOURCE\n',
157
 
                             tree.get_file_text('f-id'))
158
 
 
159
 
    def test_merge_override_show_base(self):
160
 
        tree, other = self.create_conflicting_branches()
161
 
        # Setting '--show-base' will auto-disable '--reprocess'
162
 
        self.run_bzr('merge ../other --show-base', working_dir='tree',
163
 
                     retcode=1)
164
 
        self.assertEqualDiff('a\n'
165
 
                             '<<<<<<< TREE\n'
166
 
                             'B\n'
167
 
                             'C\n'
168
 
                             '||||||| BASE-REVISION\n'
169
 
                             'b\n'
170
 
                             'c\n'
171
 
                             '=======\n'
172
 
                             'B\n'
173
 
                             'D\n'
174
 
                             '>>>>>>> MERGE-SOURCE\n',
175
 
                             tree.get_file_text('f-id'))
176
 
 
177
104
    def test_merge_with_missing_file(self):
178
105
        """Merge handles missing file conflicts"""
179
106
        self.build_tree_contents([
249
176
        
250
177
        base = urlutils.local_path_from_url(branch_a.base)
251
178
        self.assertStartsWith(err,
252
 
                          'Merging from remembered submit location %s\n' % (base,))
 
179
                          'Merging from remembered location %s\n' % (base,))
253
180
        self.assertEndsWith(err, '+N  b\nAll changes applied successfully.\n')
254
181
        self.assertEquals(abspath(branch_b.get_submit_branch()),
255
182
                          abspath(parent))
491
418
        tree_b = tree_a.bzrdir.sprout('b').open_workingtree()
492
419
        tree_c = tree_a.bzrdir.sprout('c').open_workingtree()
493
420
        out, err = self.run_bzr(['merge', '-d', 'c'])
494
 
        self.assertContainsRe(err, 'Merging from remembered parent location .*a\/')
 
421
        self.assertContainsRe(err, 'Merging from remembered location .*a\/')
495
422
        tree_c.branch.set_submit_branch(tree_b.bzrdir.root_transport.base)
496
423
        out, err = self.run_bzr(['merge', '-d', 'c'])
497
 
        self.assertContainsRe(err, 'Merging from remembered submit location .*b\/')
 
424
        self.assertContainsRe(err, 'Merging from remembered location .*b\/')
498
425
 
499
426
    def test_remember_sets_submit(self):
500
427
        tree_a = self.make_branch_and_tree('a')