~bzr-pqm/bzr/bzr.dev

2052.3.2 by John Arbash Meinel
Change Copyright .. by Canonical to Copyright ... Canonical
1
# Copyright (C) 2006 Canonical Ltd
1846.1.1 by Wouter van Heyst
Don't fail on 'bzr mv', extract move tests from OldTests.
2
#
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
17
"""Test for 'bzr mv'"""
18
19
import os
20
2091.3.6 by Aaron Bentley
Add symlink test guards
21
from bzrlib import (
22
    osutils,
23
    workingtree,
2158.2.1 by v.ladeuil+lp at free
Windows tests cleanup.
24
    )
2220.1.14 by Aaron Bentley
Cleanup formatting and error handling
25
2158.2.1 by v.ladeuil+lp at free
Windows tests cleanup.
26
from bzrlib.tests import (
2949.5.1 by Alexander Belchenko
selftest: use SymlinkFeature instead of TestSkipped where appropriate
27
    SymlinkFeature,
2158.2.1 by v.ladeuil+lp at free
Windows tests cleanup.
28
    TestCaseWithTransport,
29
    )
2220.1.14 by Aaron Bentley
Cleanup formatting and error handling
30
1846.1.1 by Wouter van Heyst
Don't fail on 'bzr mv', extract move tests from OldTests.
31
32
class TestMove(TestCaseWithTransport):
33
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
34
    def assertMoved(self,from_path,to_path):
35
        """Assert that to_path is existing and versioned but from_path not. """
36
        self.failIfExists(from_path)
37
        self.assertNotInWorkingTree(from_path)
38
39
        self.failUnlessExists(to_path)
40
        self.assertInWorkingTree(to_path)
41
1846.1.1 by Wouter van Heyst
Don't fail on 'bzr mv', extract move tests from OldTests.
42
    def test_mv_modes(self):
43
        """Test two modes of operation for mv"""
44
        tree = self.make_branch_and_tree('.')
45
        files = self.build_tree(['a', 'c', 'subdir/'])
46
        tree.add(['a', 'c', 'subdir'])
47
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
48
        self.run_bzr('mv a b')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
49
        self.assertMoved('a','b')
1846.1.2 by Wouter van Heyst
test mv more rigorously
50
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
51
        self.run_bzr('mv b subdir')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
52
        self.assertMoved('b','subdir/b')
1846.1.2 by Wouter van Heyst
test mv more rigorously
53
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
54
        self.run_bzr('mv subdir/b a')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
55
        self.assertMoved('subdir/b','a')
1846.1.2 by Wouter van Heyst
test mv more rigorously
56
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
57
        self.run_bzr('mv a c subdir')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
58
        self.assertMoved('a','subdir/a')
59
        self.assertMoved('c','subdir/c')
1846.1.2 by Wouter van Heyst
test mv more rigorously
60
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
61
        self.run_bzr('mv subdir/a subdir/newa')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
62
        self.assertMoved('subdir/a','subdir/newa')
1846.1.1 by Wouter van Heyst
Don't fail on 'bzr mv', extract move tests from OldTests.
63
64
    def test_mv_unversioned(self):
65
        self.build_tree(['unversioned.txt'])
66
        self.run_bzr_error(
2206.1.8 by Marius Kruger
Converted move/rename error messages to show source => target.
67
            ["^bzr: ERROR: Could not rename unversioned.txt => elsewhere."
2745.3.2 by Daniel Watkins
Updated tests to reflect new error text.
68
             " .*unversioned.txt is not versioned\.$"],
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
69
            'mv unversioned.txt elsewhere')
1846.1.1 by Wouter van Heyst
Don't fail on 'bzr mv', extract move tests from OldTests.
70
71
    def test_mv_nonexisting(self):
72
        self.run_bzr_error(
2206.1.8 by Marius Kruger
Converted move/rename error messages to show source => target.
73
            ["^bzr: ERROR: Could not rename doesnotexist => somewhereelse."
2745.3.2 by Daniel Watkins
Updated tests to reflect new error text.
74
             " .*doesnotexist is not versioned\.$"],
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
75
            'mv doesnotexist somewhereelse')
1846.1.1 by Wouter van Heyst
Don't fail on 'bzr mv', extract move tests from OldTests.
76
77
    def test_mv_unqualified(self):
78
        self.run_bzr_error(['^bzr: ERROR: missing file argument$'], 'mv')
2220.1.14 by Aaron Bentley
Cleanup formatting and error handling
79
        
1846.1.1 by Wouter van Heyst
Don't fail on 'bzr mv', extract move tests from OldTests.
80
    def test_mv_invalid(self):
81
        tree = self.make_branch_and_tree('.')
82
        self.build_tree(['test.txt', 'sub1/'])
83
        tree.add(['test.txt'])
84
85
        self.run_bzr_error(
2745.3.2 by Daniel Watkins
Updated tests to reflect new error text.
86
            ["^bzr: ERROR: Could not move to sub1: sub1 is not versioned\.$"],
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
87
            'mv test.txt sub1')
2206.1.7 by Marius Kruger
* errors
88
1846.1.1 by Wouter van Heyst
Don't fail on 'bzr mv', extract move tests from OldTests.
89
        self.run_bzr_error(
2206.1.9 by Marius Kruger
* Change move/rename errors yet again
90
            ["^bzr: ERROR: Could not move test.txt => .*hello.txt: "
2745.3.2 by Daniel Watkins
Updated tests to reflect new error text.
91
             "sub1 is not versioned\.$"],
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
92
            'mv test.txt sub1/hello.txt')
2220.1.14 by Aaron Bentley
Cleanup formatting and error handling
93
        
1846.1.1 by Wouter van Heyst
Don't fail on 'bzr mv', extract move tests from OldTests.
94
    def test_mv_dirs(self):
95
        tree = self.make_branch_and_tree('.')
96
        self.build_tree(['hello.txt', 'sub1/'])
97
        tree.add(['hello.txt', 'sub1'])
98
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
99
        self.run_bzr('mv sub1 sub2')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
100
        self.assertMoved('sub1','sub2')
101
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
102
        self.run_bzr('mv hello.txt sub2')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
103
        self.assertMoved('hello.txt','sub2/hello.txt')
1846.1.1 by Wouter van Heyst
Don't fail on 'bzr mv', extract move tests from OldTests.
104
105
        self.build_tree(['sub1/'])
106
        tree.add(['sub1'])
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
107
        self.run_bzr('mv sub2/hello.txt sub1')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
108
        self.assertMoved('sub2/hello.txt','sub1/hello.txt')
109
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
110
        self.run_bzr('mv sub2 sub1')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
111
        self.assertMoved('sub2','sub1/sub2')
1846.1.1 by Wouter van Heyst
Don't fail on 'bzr mv', extract move tests from OldTests.
112
1846.1.2 by Wouter van Heyst
test mv more rigorously
113
    def test_mv_relative(self):
1846.1.1 by Wouter van Heyst
Don't fail on 'bzr mv', extract move tests from OldTests.
114
        self.build_tree(['sub1/', 'sub1/sub2/', 'sub1/hello.txt'])
115
        tree = self.make_branch_and_tree('.')
116
        tree.add(['sub1', 'sub1/sub2', 'sub1/hello.txt'])
117
118
        os.chdir('sub1/sub2')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
119
        self.run_bzr('mv ../hello.txt .')
1846.1.1 by Wouter van Heyst
Don't fail on 'bzr mv', extract move tests from OldTests.
120
        self.failUnlessExists('./hello.txt')
121
122
        os.chdir('..')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
123
        self.run_bzr('mv sub2/hello.txt .')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
124
        os.chdir('..')
125
        self.assertMoved('sub1/sub2/hello.txt','sub1/hello.txt')
1846.1.2 by Wouter van Heyst
test mv more rigorously
126
127
    def test_mv_smoke_aliases(self):
128
        # just test that aliases for mv exist, if their behaviour is changed in
129
        # the future, then extend the tests.
130
        self.build_tree(['a'])
131
        tree = self.make_branch_and_tree('.')
132
        tree.add(['a'])
133
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
134
        self.run_bzr('move a b')
135
        self.run_bzr('rename b a')
2091.3.2 by Aaron Bentley
Traverse non-terminal symlinks for mv et al
136
137
    def test_mv_through_symlinks(self):
2949.5.1 by Alexander Belchenko
selftest: use SymlinkFeature instead of TestSkipped where appropriate
138
        self.requireFeature(SymlinkFeature)
2091.3.2 by Aaron Bentley
Traverse non-terminal symlinks for mv et al
139
        tree = self.make_branch_and_tree('.')
140
        self.build_tree(['a/', 'a/b'])
141
        os.symlink('a', 'c')
142
        os.symlink('.', 'd')
143
        tree.add(['a', 'a/b', 'c'], ['a-id', 'b-id', 'c-id'])
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
144
        self.run_bzr('mv c/b b')
2091.3.2 by Aaron Bentley
Traverse non-terminal symlinks for mv et al
145
        tree = workingtree.WorkingTree.open('.')
146
        self.assertEqual('b-id', tree.path2id('b'))
2123.3.4 by Steffen Eichenberg
a few new blackbox test for mv
147
2123.3.7 by Steffen Eichenberg
split tests so that each new method contains one test only
148
    def test_mv_already_moved_file(self):
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
149
        """Test bzr mv original_file to moved_file.
150
151
        Tests if a file which has allready been moved by an external tool,
152
        is handled correctly by bzr mv.
153
        Setup: a is in the working tree, b does not exist.
154
        User does: mv a b; bzr mv a b
155
        """
156
        self.build_tree(['a'])
2123.3.4 by Steffen Eichenberg
a few new blackbox test for mv
157
        tree = self.make_branch_and_tree('.')
2123.3.7 by Steffen Eichenberg
split tests so that each new method contains one test only
158
        tree.add(['a'])
2123.3.4 by Steffen Eichenberg
a few new blackbox test for mv
159
2309.2.3 by Alexander Belchenko
blackbox.test_mv: using safe osutils.rename instead of os.rename
160
        osutils.rename('a', 'b')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
161
        self.run_bzr('mv a b')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
162
        self.assertMoved('a','b')
2123.3.4 by Steffen Eichenberg
a few new blackbox test for mv
163
2123.3.7 by Steffen Eichenberg
split tests so that each new method contains one test only
164
    def test_mv_already_moved_file_to_versioned_target(self):
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
165
        """Test bzr mv existing_file to versioned_file.
166
167
        Tests if an attempt to move an existing versioned file
168
        to another versiond file will fail.
169
        Setup: a and b are in the working tree.
170
        User does: rm b; mv a b; bzr mv a b
171
        """
2123.3.7 by Steffen Eichenberg
split tests so that each new method contains one test only
172
        self.build_tree(['a', 'b'])
173
        tree = self.make_branch_and_tree('.')
174
        tree.add(['a', 'b'])
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
175
176
        os.remove('b')
2309.2.3 by Alexander Belchenko
blackbox.test_mv: using safe osutils.rename instead of os.rename
177
        osutils.rename('a', 'b')
2123.3.4 by Steffen Eichenberg
a few new blackbox test for mv
178
        self.run_bzr_error(
2745.3.2 by Daniel Watkins
Updated tests to reflect new error text.
179
            ["^bzr: ERROR: Could not move a => b. b is already versioned\.$"],
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
180
            'mv a b')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
181
        #check that nothing changed
2123.3.7 by Steffen Eichenberg
split tests so that each new method contains one test only
182
        self.failIfExists('a')
183
        self.failUnlessExists('b')
184
185
    def test_mv_already_moved_file_into_subdir(self):
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
186
        """Test bzr mv original_file to versioned_directory/file.
187
188
        Tests if a file which has already been moved into a versioned
189
        directory by an external tool, is handled correctly by bzr mv.
190
        Setup: a and sub/ are in the working tree.
191
        User does: mv a sub/a; bzr mv a sub/a
192
        """
193
        self.build_tree(['a', 'sub/'])
2123.3.7 by Steffen Eichenberg
split tests so that each new method contains one test only
194
        tree = self.make_branch_and_tree('.')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
195
        tree.add(['a', 'sub'])
196
2309.2.3 by Alexander Belchenko
blackbox.test_mv: using safe osutils.rename instead of os.rename
197
        osutils.rename('a', 'sub/a')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
198
        self.run_bzr('mv a sub/a')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
199
        self.assertMoved('a','sub/a')
2123.3.7 by Steffen Eichenberg
split tests so that each new method contains one test only
200
201
    def test_mv_already_moved_file_into_unversioned_subdir(self):
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
202
        """Test bzr mv original_file to unversioned_directory/file.
203
204
        Tests if an attempt to move an existing versioned file
205
        into an unversioned directory will fail.
206
        Setup: a is in the working tree, sub/ is not.
207
        User does: mv a sub/a; bzr mv a sub/a
208
        """
209
        self.build_tree(['a', 'sub/'])
2123.3.7 by Steffen Eichenberg
split tests so that each new method contains one test only
210
        tree = self.make_branch_and_tree('.')
211
        tree.add(['a'])
212
2309.2.3 by Alexander Belchenko
blackbox.test_mv: using safe osutils.rename instead of os.rename
213
        osutils.rename('a', 'sub/a')
2123.3.4 by Steffen Eichenberg
a few new blackbox test for mv
214
        self.run_bzr_error(
2745.3.2 by Daniel Watkins
Updated tests to reflect new error text.
215
            ["^bzr: ERROR: Could not move a => a: sub is not versioned\.$"],
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
216
            'mv a sub/a')
2123.3.7 by Steffen Eichenberg
split tests so that each new method contains one test only
217
        self.failIfExists('a')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
218
        self.failUnlessExists('sub/a')
2123.3.7 by Steffen Eichenberg
split tests so that each new method contains one test only
219
220
    def test_mv_already_moved_files_into_subdir(self):
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
221
        """Test bzr mv original_files to versioned_directory.
222
223
        Tests if files which has already been moved into a versioned
224
        directory by an external tool, is handled correctly by bzr mv.
225
        Setup: a1, a2, sub are in the working tree.
226
        User does: mv a1 sub/.; bzr mv a1 a2 sub
227
        """
228
        self.build_tree(['a1', 'a2', 'sub/'])
2123.3.4 by Steffen Eichenberg
a few new blackbox test for mv
229
        tree = self.make_branch_and_tree('.')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
230
        tree.add(['a1', 'a2', 'sub'])
231
2309.2.3 by Alexander Belchenko
blackbox.test_mv: using safe osutils.rename instead of os.rename
232
        osutils.rename('a1', 'sub/a1')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
233
        self.run_bzr('mv a1 a2 sub')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
234
        self.assertMoved('a1','sub/a1')
235
        self.assertMoved('a2','sub/a2')
236
2123.3.7 by Steffen Eichenberg
split tests so that each new method contains one test only
237
    def test_mv_already_moved_files_into_unversioned_subdir(self):
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
238
        """Test bzr mv original_file to unversioned_directory.
239
240
        Tests if an attempt to move existing versioned file
241
        into an unversioned directory will fail.
242
        Setup: a1, a2 are in the working tree, sub is not.
243
        User does: mv a1 sub/.; bzr mv a1 a2 sub
244
        """
245
        self.build_tree(['a1', 'a2', 'sub/'])
2123.3.7 by Steffen Eichenberg
split tests so that each new method contains one test only
246
        tree = self.make_branch_and_tree('.')
247
        tree.add(['a1', 'a2'])
248
2309.2.3 by Alexander Belchenko
blackbox.test_mv: using safe osutils.rename instead of os.rename
249
        osutils.rename('a1', 'sub/a1')
2206.1.8 by Marius Kruger
Converted move/rename error messages to show source => target.
250
        self.run_bzr_error(
2745.3.2 by Daniel Watkins
Updated tests to reflect new error text.
251
            ["^bzr: ERROR: Could not move to sub. sub is not versioned\.$"],
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
252
            'mv a1 a2 sub')
2123.3.7 by Steffen Eichenberg
split tests so that each new method contains one test only
253
        self.failIfExists('a1')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
254
        self.failUnlessExists('sub/a1')
2123.3.7 by Steffen Eichenberg
split tests so that each new method contains one test only
255
        self.failUnlessExists('a2')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
256
        self.failIfExists('sub/a2')
2123.3.4 by Steffen Eichenberg
a few new blackbox test for mv
257
2123.3.7 by Steffen Eichenberg
split tests so that each new method contains one test only
258
    def test_mv_already_moved_file_forcing_after(self):
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
259
        """Test bzr mv versioned_file to unversioned_file.
260
261
        Tests if an attempt to move an existing versioned file to an existing
262
        unversioned file will fail, informing the user to use the --after
263
        option to force this.
264
        Setup: a is in the working tree, b not versioned.
265
        User does: mv a b; touch a; bzr mv a b
266
        """
2123.3.4 by Steffen Eichenberg
a few new blackbox test for mv
267
        self.build_tree(['a', 'b'])
268
        tree = self.make_branch_and_tree('.')
269
        tree.add(['a'])
270
2309.2.3 by Alexander Belchenko
blackbox.test_mv: using safe osutils.rename instead of os.rename
271
        osutils.rename('a', 'b')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
272
        self.build_tree(['a']) #touch a
2123.3.4 by Steffen Eichenberg
a few new blackbox test for mv
273
        self.run_bzr_error(
2220.1.12 by Marius Kruger
* Fix errors.py import order
274
            ["^bzr: ERROR: Could not rename a => b because both files exist."
2967.3.2 by Daniel Watkins
Modified tests to reflect modified error messages.
275
             " \(Use --after to tell bzr about a rename that has already"
276
             " happened\)$"],
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
277
            'mv a b')
2123.3.4 by Steffen Eichenberg
a few new blackbox test for mv
278
        self.failUnlessExists('a')
279
        self.failUnlessExists('b')
280
2123.3.7 by Steffen Eichenberg
split tests so that each new method contains one test only
281
    def test_mv_already_moved_file_using_after(self):
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
282
        """Test bzr mv --after versioned_file to unversioned_file.
283
284
        Tests if an existing versioned file can be forced to move to an
285
        existing unversioned file using the --after option. With the result
286
        that bazaar considers the unversioned_file to be moved from
287
        versioned_file and versioned_file will become unversioned.
288
        Setup: a is in the working tree and b exists.
289
        User does: mv a b; touch a; bzr mv a b --after
290
        Resulting in a => b and a is unknown.
291
        """
2123.3.7 by Steffen Eichenberg
split tests so that each new method contains one test only
292
        self.build_tree(['a', 'b'])
293
        tree = self.make_branch_and_tree('.')
294
        tree.add(['a'])
2309.2.3 by Alexander Belchenko
blackbox.test_mv: using safe osutils.rename instead of os.rename
295
        osutils.rename('a', 'b')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
296
        self.build_tree(['a']) #touch a
2123.3.7 by Steffen Eichenberg
split tests so that each new method contains one test only
297
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
298
        self.run_bzr('mv a b --after')
2123.3.4 by Steffen Eichenberg
a few new blackbox test for mv
299
        self.failUnlessExists('a')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
300
        self.assertNotInWorkingTree('a')#a should be unknown now.
2123.3.4 by Steffen Eichenberg
a few new blackbox test for mv
301
        self.failUnlessExists('b')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
302
        self.assertInWorkingTree('b')
2123.3.4 by Steffen Eichenberg
a few new blackbox test for mv
303
2123.3.7 by Steffen Eichenberg
split tests so that each new method contains one test only
304
    def test_mv_already_moved_files_forcing_after(self):
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
305
        """Test bzr mv versioned_files to directory/unversioned_file.
306
307
        Tests if an attempt to move an existing versioned file to an existing
308
        unversioned file in some other directory will fail, informing the user
309
        to use the --after option to force this.
310
311
        Setup: a1, a2, sub are versioned and in the working tree,
312
               sub/a1, sub/a2 are in working tree.
313
        User does: mv a* sub; touch a1; touch a2; bzr mv a1 a2 sub
314
        """
315
        self.build_tree(['a1', 'a2', 'sub/', 'sub/a1', 'sub/a2'])
2123.3.4 by Steffen Eichenberg
a few new blackbox test for mv
316
        tree = self.make_branch_and_tree('.')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
317
        tree.add(['a1', 'a2', 'sub'])
2309.2.3 by Alexander Belchenko
blackbox.test_mv: using safe osutils.rename instead of os.rename
318
        osutils.rename('a1', 'sub/a1')
319
        osutils.rename('a2', 'sub/a2')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
320
        self.build_tree(['a1']) #touch a1
321
        self.build_tree(['a2']) #touch a2
2123.3.4 by Steffen Eichenberg
a few new blackbox test for mv
322
323
        self.run_bzr_error(
2967.3.2 by Daniel Watkins
Modified tests to reflect modified error messages.
324
            ["^bzr: ERROR: Could not rename a1 => sub/a1 because both files"
325
             " exist. \(Use --after to tell bzr about a rename that has already"
326
             " happened\)$"],
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
327
            'mv a1 a2 sub')
2123.3.4 by Steffen Eichenberg
a few new blackbox test for mv
328
        self.failUnlessExists('a1')
329
        self.failUnlessExists('a2')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
330
        self.failUnlessExists('sub/a1')
331
        self.failUnlessExists('sub/a2')
332
2123.3.7 by Steffen Eichenberg
split tests so that each new method contains one test only
333
    def test_mv_already_moved_files_using_after(self):
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
334
        """Test bzr mv --after versioned_file to directory/unversioned_file.
335
336
        Tests if an existing versioned file can be forced to move to an
337
        existing unversioned file in some other directory using the --after
338
        option. With the result that bazaar considers
339
        directory/unversioned_file to be moved from versioned_file and
340
        versioned_file will become unversioned.
341
342
        Setup: a1, a2, sub are versioned and in the working tree,
343
               sub/a1, sub/a2 are in working tree.
344
        User does: mv a* sub; touch a1; touch a2; bzr mv a1 a2 sub --after
345
        """
346
        self.build_tree(['a1', 'a2', 'sub/', 'sub/a1', 'sub/a2'])
2123.3.7 by Steffen Eichenberg
split tests so that each new method contains one test only
347
        tree = self.make_branch_and_tree('.')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
348
        tree.add(['a1', 'a2', 'sub'])
2309.2.3 by Alexander Belchenko
blackbox.test_mv: using safe osutils.rename instead of os.rename
349
        osutils.rename('a1', 'sub/a1')
350
        osutils.rename('a2', 'sub/a2')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
351
        self.build_tree(['a1']) #touch a1
352
        self.build_tree(['a2']) #touch a2
2123.3.7 by Steffen Eichenberg
split tests so that each new method contains one test only
353
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
354
        self.run_bzr('mv a1 a2 sub --after')
2123.3.4 by Steffen Eichenberg
a few new blackbox test for mv
355
        self.failUnlessExists('a1')
356
        self.failUnlessExists('a2')
2220.1.5 by Marius Kruger
* bzrlib/tests/blackbox/test_mv.py
357
        self.failUnlessExists('sub/a1')
358
        self.failUnlessExists('sub/a2')
359
        self.assertInWorkingTree('sub/a1')
2220.1.14 by Aaron Bentley
Cleanup formatting and error handling
360
        self.assertInWorkingTree('sub/a2')