/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 brzlib/tests/blackbox/test_uncommit.py

  • Committer: Jelmer Vernooij
  • Date: 2017-05-21 12:41:27 UTC
  • mto: This revision was merged to the branch mainline in revision 6623.
  • Revision ID: jelmer@jelmer.uk-20170521124127-iv8etg0vwymyai6y
s/bzr/brz/ in apport config.

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
 
19
19
import os
20
20
 
21
 
from breezy import uncommit
22
 
from breezy.bzr.bzrdir import BzrDirMetaFormat1
23
 
from breezy.errors import BoundBranchOutOfDate
24
 
from breezy.tests import TestCaseWithTransport
25
 
from breezy.tests.matchers import ContainsNoVfsCalls
26
 
from breezy.tests.script import (
 
21
from brzlib import uncommit
 
22
from brzlib.bzrdir import BzrDirMetaFormat1
 
23
from brzlib.errors import BoundBranchOutOfDate
 
24
from brzlib.tests import TestCaseWithTransport
 
25
from brzlib.tests.matchers import ContainsNoVfsCalls
 
26
from brzlib.tests.script import (
27
27
    run_script,
28
28
    ScriptRunner,
29
29
    )
35
35
        wt = self.make_branch_and_tree('tree')
36
36
        self.build_tree(['tree/a', 'tree/b', 'tree/c'])
37
37
        wt.add(['a', 'b', 'c'])
38
 
        wt.commit('initial commit', rev_id=b'a1')
 
38
        wt.commit('initial commit', rev_id='a1')
39
39
 
40
 
        self.build_tree_contents([('tree/a', b'new contents of a\n')])
41
 
        wt.commit('second commit', rev_id=b'a2')
 
40
        self.build_tree_contents([('tree/a', 'new contents of a\n')])
 
41
        wt.commit('second commit', rev_id='a2')
42
42
 
43
43
        return wt
44
44
 
53
53
        self.assertContainsRe(out, 'second commit')
54
54
 
55
55
        # Nothing has changed
56
 
        self.assertEqual([b'a2'], wt.get_parent_ids())
 
56
        self.assertEqual(['a2'], wt.get_parent_ids())
57
57
 
58
58
        # Uncommit, don't prompt
59
59
        out, err = self.run_bzr('uncommit --force')
61
61
        self.assertContainsRe(out, 'second commit')
62
62
 
63
63
        # This should look like we are back in revno 1
64
 
        self.assertEqual([b'a1'], wt.get_parent_ids())
 
64
        self.assertEqual(['a1'], wt.get_parent_ids())
65
65
        out, err = self.run_bzr('status')
66
66
        self.assertEqual(out, 'modified:\n  a\n')
67
67
 
69
69
        """Uncommit seeks confirmation, and doesn't proceed without it."""
70
70
        wt = self.create_simple_tree()
71
71
        os.chdir('tree')
72
 
        run_script(self, """
73
 
        $ brz uncommit
 
72
        run_script(self, """    
 
73
        $ bzr uncommit
74
74
        ...
75
75
        The above revision(s) will be removed.
76
76
        2>Uncommit these revisions? ([y]es, [n]o): no
77
77
        <n
78
78
        Canceled
79
79
        """)
80
 
        self.assertEqual([b'a2'], wt.get_parent_ids())
 
80
        self.assertEqual(['a2'], wt.get_parent_ids())
81
81
 
82
82
    def test_uncommit_no_history(self):
83
83
        wt = self.make_branch_and_tree('tree')
89
89
        wt = self.create_simple_tree()
90
90
        checkout_tree = wt.branch.create_checkout('checkout')
91
91
 
92
 
        self.assertEqual([b'a2'], checkout_tree.get_parent_ids())
 
92
        self.assertEqual(['a2'], checkout_tree.get_parent_ids())
93
93
 
94
94
        os.chdir('checkout')
95
95
        out, err = self.run_bzr('uncommit --dry-run --force')
97
97
        self.assertNotContainsRe(out, 'initial commit')
98
98
        self.assertContainsRe(out, 'second commit')
99
99
 
100
 
        self.assertEqual([b'a2'], checkout_tree.get_parent_ids())
 
100
        self.assertEqual(['a2'], checkout_tree.get_parent_ids())
101
101
 
102
102
        out, err = self.run_bzr('uncommit --force')
103
103
        self.assertNotContainsRe(out, 'initial commit')
105
105
 
106
106
        # uncommit in a checkout should uncommit the parent branch
107
107
        # (but doesn't effect the other working tree)
108
 
        self.assertEqual([b'a1'], checkout_tree.get_parent_ids())
109
 
        self.assertEqual(b'a1', wt.branch.last_revision())
110
 
        self.assertEqual([b'a2'], wt.get_parent_ids())
 
108
        self.assertEqual(['a1'], checkout_tree.get_parent_ids())
 
109
        self.assertEqual('a1', wt.branch.last_revision())
 
110
        self.assertEqual(['a2'], wt.get_parent_ids())
111
111
 
112
112
    def test_uncommit_bound(self):
113
113
        os.mkdir('a')
149
149
 
150
150
        self.assertNotContainsRe(out, 'initial commit')
151
151
        self.assertContainsRe(out, 'second commit')
152
 
        self.assertEqual([b'a1'], wt.get_parent_ids())
153
 
        self.assertEqual(b'a1', wt.branch.last_revision())
 
152
        self.assertEqual(['a1'], wt.get_parent_ids())
 
153
        self.assertEqual('a1', wt.branch.last_revision())
154
154
 
155
155
    def test_uncommit_neg_1(self):
156
156
        wt = self.create_simple_tree()
161
161
    def test_uncommit_merges(self):
162
162
        wt = self.create_simple_tree()
163
163
 
164
 
        tree2 = wt.controldir.sprout('tree2').open_workingtree()
 
164
        tree2 = wt.bzrdir.sprout('tree2').open_workingtree()
165
165
 
166
 
        tree2.commit('unchanged', rev_id=b'b3')
167
 
        tree2.commit('unchanged', rev_id=b'b4')
 
166
        tree2.commit('unchanged', rev_id='b3')
 
167
        tree2.commit('unchanged', rev_id='b4')
168
168
 
169
169
        wt.merge_from_branch(tree2.branch)
170
 
        wt.commit('merge b4', rev_id=b'a3')
 
170
        wt.commit('merge b4', rev_id='a3')
171
171
 
172
 
        self.assertEqual([b'a3'], wt.get_parent_ids())
 
172
        self.assertEqual(['a3'], wt.get_parent_ids())
173
173
 
174
174
        os.chdir('tree')
175
175
        out, err = self.run_bzr('uncommit --force')
176
176
 
177
 
        self.assertEqual([b'a2', b'b4'], wt.get_parent_ids())
 
177
        self.assertEqual(['a2', 'b4'], wt.get_parent_ids())
178
178
 
179
179
    def test_uncommit_pending_merge(self):
180
180
        wt = self.create_simple_tree()
181
 
        tree2 = wt.controldir.sprout('tree2').open_workingtree()
182
 
        tree2.commit('unchanged', rev_id=b'b3')
 
181
        tree2 = wt.bzrdir.sprout('tree2').open_workingtree()
 
182
        tree2.commit('unchanged', rev_id='b3')
183
183
 
184
184
        wt.branch.fetch(tree2.branch)
185
 
        wt.set_pending_merges([b'b3'])
 
185
        wt.set_pending_merges(['b3'])
186
186
 
187
187
        os.chdir('tree')
188
188
        out, err = self.run_bzr('uncommit --force')
189
 
        self.assertEqual([b'a1', b'b3'], wt.get_parent_ids())
 
189
        self.assertEqual(['a1', 'b3'], wt.get_parent_ids())
190
190
 
191
191
    def test_uncommit_multiple_merge(self):
192
192
        wt = self.create_simple_tree()
193
193
 
194
 
        tree2 = wt.controldir.sprout('tree2').open_workingtree()
195
 
        tree2.commit('unchanged', rev_id=b'b3')
 
194
        tree2 = wt.bzrdir.sprout('tree2').open_workingtree()
 
195
        tree2.commit('unchanged', rev_id='b3')
196
196
 
197
 
        tree3 = wt.controldir.sprout('tree3').open_workingtree()
198
 
        tree3.commit('unchanged', rev_id=b'c3')
 
197
        tree3 = wt.bzrdir.sprout('tree3').open_workingtree()
 
198
        tree3.commit('unchanged', rev_id='c3')
199
199
 
200
200
        wt.merge_from_branch(tree2.branch)
201
 
        wt.commit('merge b3', rev_id=b'a3')
 
201
        wt.commit('merge b3', rev_id='a3')
202
202
 
203
203
        wt.merge_from_branch(tree3.branch)
204
 
        wt.commit('merge c3', rev_id=b'a4')
 
204
        wt.commit('merge c3', rev_id='a4')
205
205
 
206
 
        self.assertEqual([b'a4'], wt.get_parent_ids())
 
206
        self.assertEqual(['a4'], wt.get_parent_ids())
207
207
 
208
208
        os.chdir('tree')
209
209
        out, err = self.run_bzr('uncommit --force -r 2')
210
210
 
211
 
        self.assertEqual([b'a2', b'b3', b'c3'], wt.get_parent_ids())
 
211
        self.assertEqual(['a2', 'b3', 'c3'], wt.get_parent_ids())
212
212
 
213
213
    def test_uncommit_merge_plus_pending(self):
214
214
        wt = self.create_simple_tree()
215
215
 
216
 
        tree2 = wt.controldir.sprout('tree2').open_workingtree()
217
 
        tree2.commit('unchanged', rev_id=b'b3')
218
 
        tree3 = wt.controldir.sprout('tree3').open_workingtree()
219
 
        tree3.commit('unchanged', rev_id=b'c3')
 
216
        tree2 = wt.bzrdir.sprout('tree2').open_workingtree()
 
217
        tree2.commit('unchanged', rev_id='b3')
 
218
        tree3 = wt.bzrdir.sprout('tree3').open_workingtree()
 
219
        tree3.commit('unchanged', rev_id='c3')
220
220
 
221
221
        wt.branch.fetch(tree2.branch)
222
 
        wt.set_pending_merges([b'b3'])
223
 
        wt.commit('merge b3', rev_id=b'a3')
 
222
        wt.set_pending_merges(['b3'])
 
223
        wt.commit('merge b3', rev_id='a3')
 
224
 
224
225
 
225
226
        wt.merge_from_branch(tree3.branch)
226
227
 
227
 
        self.assertEqual([b'a3', b'c3'], wt.get_parent_ids())
 
228
        self.assertEqual(['a3', 'c3'], wt.get_parent_ids())
228
229
 
229
230
        os.chdir('tree')
230
231
        out, err = self.run_bzr('uncommit --force -r 2')
231
232
 
232
 
        self.assertEqual([b'a2', b'b3', b'c3'], wt.get_parent_ids())
 
233
        self.assertEqual(['a2', 'b3', 'c3'], wt.get_parent_ids())
233
234
 
234
235
    def test_uncommit_shows_log_with_revision_id(self):
235
236
        wt = self.create_simple_tree()
237
238
        script = ScriptRunner()
238
239
        script.run_script(self, """
239
240
$ cd tree
240
 
$ brz uncommit --force
241
 
    2 ...
242
 
      second commit
243
 
...
244
 
The above revision(s) will be removed.
245
 
You can restore the old tip by running:
246
 
  brz pull . -r revid:a2
247
 
""")
248
 
 
249
 
    def test_uncommit_shows_pull_with_location(self):
250
 
        wt = self.create_simple_tree()
251
 
 
252
 
        script = ScriptRunner()
253
 
        script.run_script(self, """
254
 
$ brz uncommit --force tree
255
 
    2 ...
256
 
      second commit
257
 
...
258
 
The above revision(s) will be removed.
259
 
You can restore the old tip by running:
260
 
  brz pull -d tree tree -r revid:a2
 
241
$ bzr uncommit --force 
 
242
    2 ...
 
243
      second commit
 
244
...
 
245
The above revision(s) will be removed.
 
246
You can restore the old tip by running:
 
247
  bzr pull . -r revid:a2
261
248
""")
262
249
 
263
250
    def test_uncommit_octopus_merge(self):
265
252
        # though it will also filter out ones in the ancestry
266
253
        wt = self.create_simple_tree()
267
254
 
268
 
        tree2 = wt.controldir.sprout('tree2').open_workingtree()
269
 
        tree3 = wt.controldir.sprout('tree3').open_workingtree()
 
255
        tree2 = wt.bzrdir.sprout('tree2').open_workingtree()
 
256
        tree3 = wt.bzrdir.sprout('tree3').open_workingtree()
270
257
 
271
 
        tree2.commit('unchanged', rev_id=b'b3')
272
 
        tree3.commit('unchanged', rev_id=b'c3')
 
258
        tree2.commit('unchanged', rev_id='b3')
 
259
        tree3.commit('unchanged', rev_id='c3')
273
260
 
274
261
        wt.merge_from_branch(tree2.branch)
275
262
        wt.merge_from_branch(tree3.branch, force=True)
276
 
        wt.commit('merge b3, c3', rev_id=b'a3')
 
263
        wt.commit('merge b3, c3', rev_id='a3')
277
264
 
278
 
        tree2.commit('unchanged', rev_id=b'b4')
279
 
        tree3.commit('unchanged', rev_id=b'c4')
 
265
        tree2.commit('unchanged', rev_id='b4')
 
266
        tree3.commit('unchanged', rev_id='c4')
280
267
 
281
268
        wt.merge_from_branch(tree3.branch)
282
269
        wt.merge_from_branch(tree2.branch, force=True)
283
 
        wt.commit('merge b4, c4', rev_id=b'a4')
 
270
        wt.commit('merge b4, c4', rev_id='a4')
284
271
 
285
 
        self.assertEqual([b'a4'], wt.get_parent_ids())
 
272
        self.assertEqual(['a4'], wt.get_parent_ids())
286
273
 
287
274
        os.chdir('tree')
288
275
        out, err = self.run_bzr('uncommit --force -r 2')
289
276
 
290
 
        self.assertEqual([b'a2', b'c4', b'b4'], wt.get_parent_ids())
 
277
        self.assertEqual(['a2', 'c4', 'b4'], wt.get_parent_ids())
291
278
 
292
279
    def test_uncommit_nonascii(self):
293
280
        tree = self.make_branch_and_tree('tree')
332
319
class TestInconsistentDelta(TestCaseWithTransport):
333
320
    # See https://bugs.launchpad.net/bzr/+bug/855155
334
321
    # See https://bugs.launchpad.net/bzr/+bug/1100385
335
 
    # brz uncommit may result in error
 
322
    # bzr uncommit may result in error
336
323
    # 'An inconsistent delta was supplied involving'
337
324
 
338
325
    def test_inconsistent_delta(self):
340
327
        wt = self.make_branch_and_tree('test')
341
328
        self.build_tree(['test/a/', 'test/a/b', 'test/a/c'])
342
329
        wt.add(['a', 'a/b', 'a/c'])
343
 
        wt.commit('initial commit', rev_id=b'a1')
 
330
        wt.commit('initial commit', rev_id='a1')
344
331
        wt.remove(['a/b', 'a/c'])
345
 
        wt.commit('remove b and c', rev_id=b'a2')
 
332
        wt.commit('remove b and c', rev_id='a2')
346
333
        self.run_bzr("uncommit --force test")