1
# Copyright (C) 2005, 2007 Canonical Ltd
1
# Copyright (C) 2005 Canonical Ltd
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
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
17
17
"""Black-box tests for bzr revert."""
46
46
self.assertEquals('modified:\n dir/file\n', self.run_bzr('status')[0])
48
48
def _prepare_rename_mod_tree(self):
49
self.build_tree(['a/', 'a/b', 'a/c', 'a/d/', 'a/d/e', 'f/', 'f/g',
49
self.build_tree(['a/', 'a/b', 'a/c', 'a/d/', 'a/d/e', 'f/', 'f/g',
51
51
self.run_bzr('init')
52
52
self.run_bzr('add')
154
154
os.readlink('symlink'))
156
156
self.log("skipping revert symlink tests")
158
158
file('hello', 'wt').write('xyz')
159
159
self.run_bzr('commit -m xyz hello')
160
160
self.run_bzr('revert -r 1 hello')
186
186
out, err = self.run_bzr('revert -r -2')
187
187
self.assertEqual('', out)
188
188
self.assertEqual('-D file\n', err)
190
def test_revert_forget_merges(self):
191
# revert --forget-merges removes any pending merges into the tree, but
192
# leaves the files unchanged
193
tree = self.make_branch_and_tree('.')
194
# forget-merges before first commit, though pointless, does not fail
195
self.run_bzr(['revert', '--forget-merges'])
196
self.build_tree(['file'])
197
first_rev_id = tree.commit('initial commit')
198
self.build_tree_contents([('file', 'new content')])
199
existing_parents = tree.get_parent_ids()
200
self.assertEquals([first_rev_id], existing_parents)
201
merged_parents = existing_parents + ['merged-in-rev']
202
tree.set_parent_ids(merged_parents)
203
self.assertEquals(merged_parents, tree.get_parent_ids())
204
self.run_bzr(['revert', '--forget-merges'])
205
self.assertEquals([first_rev_id], tree.get_parent_ids())
206
# changed files are not reverted
207
self.assertFileEqual('new content', 'file')
208
# you can give it the path of a tree
209
self.run_bzr(['revert', '--forget-merges', tree.abspath('.')])