~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Martin Pool
  • Date: 2008-05-08 04:12:06 UTC
  • mto: This revision was merged to the branch mainline in revision 3415.
  • Revision ID: mbp@sourcefrog.net-20080508041206-tkrr8ucmcyrlzkum
Some review cleanups for assertion removal

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2010 Canonical Ltd
 
1
# Copyright (C) 2005, 2006, 2008 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
"""Test the uncommit command."""
18
18
 
22
22
from bzrlib.bzrdir import BzrDirMetaFormat1
23
23
from bzrlib.errors import BzrError, BoundBranchOutOfDate
24
24
from bzrlib.tests import TestCaseWithTransport
25
 
from bzrlib.tests.script import ScriptRunner
26
25
 
27
26
 
28
27
class TestUncommit(TestCaseWithTransport):
33
32
        wt.add(['a', 'b', 'c'])
34
33
        wt.commit('initial commit', rev_id='a1')
35
34
 
36
 
        self.build_tree_contents([('tree/a', 'new contents of a\n')])
 
35
        open('tree/a', 'wb').write('new contents of a\n')
37
36
        wt.commit('second commit', rev_id='a2')
38
37
 
39
38
        return wt
104
103
        uncommit.uncommit(b)
105
104
        self.assertEqual(len(b.revision_history()), 2)
106
105
        self.assertEqual(len(t_a.branch.revision_history()), 2)
107
 
        # update A's tree to not have the uncommitted revision referenced.
 
106
        # update A's tree to not have the uncomitted revision referenced.
108
107
        t_a.update()
109
108
        t_a.commit('commit 3b')
110
109
        self.assertRaises(BoundBranchOutOfDate, uncommit.uncommit, b)
174
173
        wt = self.create_simple_tree()
175
174
 
176
175
        tree2 = wt.bzrdir.sprout('tree2').open_workingtree()
 
176
 
177
177
        tree2.commit('unchanged', rev_id='b3')
178
178
 
179
 
        tree3 = wt.bzrdir.sprout('tree3').open_workingtree()
180
 
        tree3.commit('unchanged', rev_id='c3')
181
 
 
182
179
        wt.merge_from_branch(tree2.branch)
183
180
        wt.commit('merge b3', rev_id='a3')
184
181
 
185
 
        wt.merge_from_branch(tree3.branch)
186
 
        wt.commit('merge c3', rev_id='a4')
 
182
        tree2.commit('unchanged', rev_id='b4')
 
183
 
 
184
        wt.merge_from_branch(tree2.branch)
 
185
        wt.commit('merge b4', rev_id='a4')
187
186
 
188
187
        self.assertEqual(['a4'], wt.get_parent_ids())
189
188
 
190
189
        os.chdir('tree')
191
190
        out, err = self.run_bzr('uncommit --force -r 2')
192
191
 
193
 
        self.assertEqual(['a2', 'b3', 'c3'], wt.get_parent_ids())
 
192
        self.assertEqual(['a2', 'b3', 'b4'], wt.get_parent_ids())
194
193
 
195
194
    def test_uncommit_merge_plus_pending(self):
196
195
        wt = self.create_simple_tree()
197
196
 
198
197
        tree2 = wt.bzrdir.sprout('tree2').open_workingtree()
 
198
 
199
199
        tree2.commit('unchanged', rev_id='b3')
200
 
        tree3 = wt.bzrdir.sprout('tree3').open_workingtree()
201
 
        tree3.commit('unchanged', rev_id='c3')
202
 
 
203
200
        wt.branch.fetch(tree2.branch)
204
201
        wt.set_pending_merges(['b3'])
205
202
        wt.commit('merge b3', rev_id='a3')
206
203
 
207
 
 
208
 
        wt.merge_from_branch(tree3.branch)
209
 
 
210
 
        self.assertEqual(['a3', 'c3'], wt.get_parent_ids())
 
204
        tree2.commit('unchanged', rev_id='b4')
 
205
        wt.branch.fetch(tree2.branch)
 
206
        wt.set_pending_merges(['b4'])
 
207
 
 
208
        self.assertEqual(['a3', 'b4'], wt.get_parent_ids())
211
209
 
212
210
        os.chdir('tree')
213
211
        out, err = self.run_bzr('uncommit --force -r 2')
214
212
 
215
 
        self.assertEqual(['a2', 'b3', 'c3'], wt.get_parent_ids())
216
 
 
217
 
    def test_uncommit_shows_log_with_revision_id(self):
218
 
        wt = self.create_simple_tree()
219
 
 
220
 
        script = ScriptRunner()
221
 
        script.run_script(self, """
222
 
$ cd tree
223
 
$ bzr uncommit --force 
224
 
    2 ...
225
 
      second commit
226
 
...
227
 
The above revision(s) will be removed.
228
 
You can restore the old tip by running:
229
 
  bzr pull . -r revid:a2
230
 
""")
 
213
        self.assertEqual(['a2', 'b3', 'b4'], wt.get_parent_ids())
231
214
 
232
215
    def test_uncommit_octopus_merge(self):
233
216
        # Check that uncommit keeps the pending merges in the same order
234
 
        # though it will also filter out ones in the ancestry
235
217
        wt = self.create_simple_tree()
236
218
 
237
219
        tree2 = wt.bzrdir.sprout('tree2').open_workingtree()
239
221
 
240
222
        tree2.commit('unchanged', rev_id='b3')
241
223
        tree3.commit('unchanged', rev_id='c3')
242
 
 
 
224
        
243
225
        wt.merge_from_branch(tree2.branch)
244
 
        wt.merge_from_branch(tree3.branch, force=True)
 
226
        wt.merge_from_branch(tree3.branch)
245
227
        wt.commit('merge b3, c3', rev_id='a3')
246
228
 
247
229
        tree2.commit('unchanged', rev_id='b4')
248
230
        tree3.commit('unchanged', rev_id='c4')
249
231
 
250
232
        wt.merge_from_branch(tree3.branch)
251
 
        wt.merge_from_branch(tree2.branch, force=True)
 
233
        wt.merge_from_branch(tree2.branch)
252
234
        wt.commit('merge b4, c4', rev_id='a4')
253
235
 
254
236
        self.assertEqual(['a4'], wt.get_parent_ids())
256
238
        os.chdir('tree')
257
239
        out, err = self.run_bzr('uncommit --force -r 2')
258
240
 
259
 
        self.assertEqual(['a2', 'c4', 'b4'], wt.get_parent_ids())
 
241
        self.assertEqual(['a2', 'b3', 'c3', 'c4', 'b4'], wt.get_parent_ids())
260
242
 
261
243
    def test_uncommit_nonascii(self):
262
244
        tree = self.make_branch_and_tree('tree')