/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
5273.1.8 by Vincent Ladeuil
Merge bzr.dev into cleanup
1
# Copyright (C) 2006-2010 Canonical Ltd
1551.6.25 by Aaron Bentley
split out blackbox test for bzr remove
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
4183.7.1 by Sabin Iacob
update FSF mailing address
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
1551.6.25 by Aaron Bentley
split out blackbox test for bzr remove
16
17
2655.2.5 by Marius Kruger
* Improve BzrRemoveChangedFilesError message.
18
import os
2804.4.1 by Alexander Belchenko
some win32-specific fixes for selftest
19
import sys
1551.6.25 by Aaron Bentley
split out blackbox test for bzr remove
20
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
21
from breezy.tests import (
5444.3.3 by Marius Kruger
* convert the touched tests to rather use ScriptRunner
22
    script,
5967.12.1 by Martin Pool
Move all test features into bzrlib.tests.features
23
    features,
5444.3.3 by Marius Kruger
* convert the touched tests to rather use ScriptRunner
24
    TestCaseWithTransport,
25
    TestSkipped,
7290.18.6 by Jelmer Vernooij
Fix some more tests.
26
    TestNotApplicable,
5444.3.3 by Marius Kruger
* convert the touched tests to rather use ScriptRunner
27
    )
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
28
from breezy.workingtree import WorkingTree
29
from breezy import osutils
2292.1.1 by Marius Kruger
"bzr remove" and "bzr rm" will now remove the working file.
30
7143.15.2 by Jelmer Vernooij
Run autopep8.
31
_id = b'-id'
32
a = 'a'
33
b = 'b/'
34
c = 'b/c'
35
d = 'd/'
36
files = (a, b, c, d)
2292.1.1 by Marius Kruger
"bzr remove" and "bzr rm" will now remove the working file.
37
38
5283.4.5 by Martin Pool
Update remaining subclasses of ExternalBase
39
class TestRemove(TestCaseWithTransport):
2292.1.1 by Marius Kruger
"bzr remove" and "bzr rm" will now remove the working file.
40
3619.5.3 by Robert Collins
Review feedback.
41
    def _make_tree_and_add(self, paths):
2292.1.1 by Marius Kruger
"bzr remove" and "bzr rm" will now remove the working file.
42
        tree = self.make_branch_and_tree('.')
3619.5.1 by Robert Collins
* ``bzr rm`` will now scan for files that are missing and remove just
43
        tree.lock_write()
44
        try:
45
            self.build_tree(paths)
46
            for path in paths:
7143.15.2 by Jelmer Vernooij
Run autopep8.
47
                file_id = path.replace('/', '_').encode('utf-8') + _id
3619.5.1 by Robert Collins
* ``bzr rm`` will now scan for files that are missing and remove just
48
                tree.add(path, file_id)
49
        finally:
50
            tree.unlock()
2292.1.1 by Marius Kruger
"bzr remove" and "bzr rm" will now remove the working file.
51
        return tree
52
2292.1.32 by Marius Kruger
* tests/__init__.run_bzr
53
    def assertFilesDeleted(self, files):
2292.1.1 by Marius Kruger
"bzr remove" and "bzr rm" will now remove the working file.
54
        for f in files:
7143.15.2 by Jelmer Vernooij
Run autopep8.
55
            id = f.encode('utf-8') + _id
2292.1.1 by Marius Kruger
"bzr remove" and "bzr rm" will now remove the working file.
56
            self.assertNotInWorkingTree(f)
5784.1.3 by Martin Pool
Switch away from using failUnlessExists and failIfExists
57
            self.assertPathDoesNotExist(f)
2292.1.1 by Marius Kruger
"bzr remove" and "bzr rm" will now remove the working file.
58
2292.1.32 by Marius Kruger
* tests/__init__.run_bzr
59
    def assertFilesUnversioned(self, files):
2292.1.13 by Marius Kruger
* merge the unversion command back into the remove command,
60
        for f in files:
61
            self.assertNotInWorkingTree(f)
5784.1.3 by Martin Pool
Switch away from using failUnlessExists and failIfExists
62
            self.assertPathExists(f)
2292.1.13 by Marius Kruger
* merge the unversion command back into the remove command,
63
2292.1.32 by Marius Kruger
* tests/__init__.run_bzr
64
    def changeFile(self, file_name):
6973.7.5 by Jelmer Vernooij
s/file/open.
65
        with open(file_name, 'ab') as f:
66
            f.write(b"\nsome other new content!")
2292.1.32 by Marius Kruger
* tests/__init__.run_bzr
67
5340.8.2 by Marius Kruger
* update the blackbox tests too (unsave removals are just backed up, and don't complain)
68
    def run_bzr_remove_changed_files(self, files_to_remove, working_dir=None):
69
        self.run_bzr(['remove'] + list(files_to_remove),
7143.15.2 by Jelmer Vernooij
Run autopep8.
70
                     working_dir=working_dir)
2292.1.26 by Marius Kruger
* tests/__init__
71
3619.5.3 by Robert Collins
Review feedback.
72
    def test_remove_new_no_files_specified(self):
73
        tree = self.make_branch_and_tree('.')
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
74
        self.run_bzr_error(["brz: ERROR: No matching files."], 'remove --new')
7143.15.2 by Jelmer Vernooij
Run autopep8.
75
        self.run_bzr_error(
76
            ["brz: ERROR: No matching files."], 'remove --new .')
3619.5.3 by Robert Collins
Review feedback.
77
2292.1.13 by Marius Kruger
* merge the unversion command back into the remove command,
78
    def test_remove_no_files_specified(self):
3619.5.3 by Robert Collins
Review feedback.
79
        tree = self._make_tree_and_add(['foo'])
3619.5.1 by Robert Collins
* ``bzr rm`` will now scan for files that are missing and remove just
80
        out, err = self.run_bzr(['rm'])
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
81
        self.assertEqual('', err)
82
        self.assertEqual('', out)
3619.5.1 by Robert Collins
* ``bzr rm`` will now scan for files that are missing and remove just
83
        self.assertInWorkingTree('foo', tree=tree)
5784.1.3 by Martin Pool
Switch away from using failUnlessExists and failIfExists
84
        self.assertPathExists('foo')
3619.5.1 by Robert Collins
* ``bzr rm`` will now scan for files that are missing and remove just
85
86
    def test_remove_no_files_specified_missing_dir_and_contents(self):
3619.5.3 by Robert Collins
Review feedback.
87
        tree = self._make_tree_and_add(
3619.5.1 by Robert Collins
* ``bzr rm`` will now scan for files that are missing and remove just
88
            ['foo', 'dir/', 'dir/missing/', 'dir/missing/child'])
89
        self.get_transport('.').delete_tree('dir/missing')
90
        out, err = self.run_bzr(['rm'])
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
91
        self.assertEqual('', out)
3619.5.1 by Robert Collins
* ``bzr rm`` will now scan for files that are missing and remove just
92
        self.assertEqual(
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
93
            'removed dir/missing/child\n'
94
            'removed dir/missing\n',
3619.5.1 by Robert Collins
* ``bzr rm`` will now scan for files that are missing and remove just
95
            err)
96
        # non-missing paths not touched:
97
        self.assertInWorkingTree('foo', tree=tree)
5784.1.3 by Martin Pool
Switch away from using failUnlessExists and failIfExists
98
        self.assertPathExists('foo')
3619.5.1 by Robert Collins
* ``bzr rm`` will now scan for files that are missing and remove just
99
        self.assertInWorkingTree('dir', tree=tree)
5784.1.3 by Martin Pool
Switch away from using failUnlessExists and failIfExists
100
        self.assertPathExists('dir')
3619.5.1 by Robert Collins
* ``bzr rm`` will now scan for files that are missing and remove just
101
        # missing files unversioned
102
        self.assertNotInWorkingTree('dir/missing', tree=tree)
103
        self.assertNotInWorkingTree('dir/missing/child', tree=tree)
104
3619.5.3 by Robert Collins
Review feedback.
105
    def test_remove_no_files_specified_already_deleted(self):
106
        tree = self._make_tree_and_add(['foo', 'bar'])
107
        tree.commit('save foo and bar')
108
        os.unlink('bar')
109
        self.run_bzr(['rm'])
6852.3.1 by Jelmer Vernooij
add Tree.is_versioned.
110
        self.assertFalse(tree.is_versioned('bar'))
3619.5.3 by Robert Collins
Review feedback.
111
        # Running rm with a deleted file does not error.
112
        out, err = self.run_bzr(['rm'])
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
113
        self.assertEqual('', out)
114
        self.assertEqual('', err)
3619.5.3 by Robert Collins
Review feedback.
115
3619.5.1 by Robert Collins
* ``bzr rm`` will now scan for files that are missing and remove just
116
    def test_remove_no_files_specified_missing_file(self):
3619.5.3 by Robert Collins
Review feedback.
117
        tree = self._make_tree_and_add(['foo', 'bar'])
3619.5.1 by Robert Collins
* ``bzr rm`` will now scan for files that are missing and remove just
118
        os.unlink('bar')
119
        out, err = self.run_bzr(['rm'])
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
120
        self.assertEqual('', out)
121
        self.assertEqual('removed bar\n', err)
3619.5.1 by Robert Collins
* ``bzr rm`` will now scan for files that are missing and remove just
122
        # non-missing files not touched:
123
        self.assertInWorkingTree('foo', tree=tree)
5784.1.3 by Martin Pool
Switch away from using failUnlessExists and failIfExists
124
        self.assertPathExists('foo')
3619.5.1 by Robert Collins
* ``bzr rm`` will now scan for files that are missing and remove just
125
        # missing files unversioned
126
        self.assertNotInWorkingTree('bar', tree=tree)
127
128
    def test_remove_no_files_specified_missing_link(self):
5967.12.1 by Martin Pool
Move all test features into bzrlib.tests.features
129
        self.requireFeature(features.SymlinkFeature)
3619.5.3 by Robert Collins
Review feedback.
130
        tree = self._make_tree_and_add(['foo'])
3619.5.1 by Robert Collins
* ``bzr rm`` will now scan for files that are missing and remove just
131
        os.symlink('foo', 'linkname')
132
        tree.add(['linkname'])
133
        os.unlink('linkname')
134
        out, err = self.run_bzr(['rm'])
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
135
        self.assertEqual('', out)
136
        self.assertEqual('removed linkname\n', err)
3619.5.1 by Robert Collins
* ``bzr rm`` will now scan for files that are missing and remove just
137
        # non-missing files not touched:
138
        self.assertInWorkingTree('foo', tree=tree)
5784.1.3 by Martin Pool
Switch away from using failUnlessExists and failIfExists
139
        self.assertPathExists('foo')
3619.5.1 by Robert Collins
* ``bzr rm`` will now scan for files that are missing and remove just
140
        # missing files unversioned
141
        self.assertNotInWorkingTree('linkname', tree=tree)
2292.1.1 by Marius Kruger
"bzr remove" and "bzr rm" will now remove the working file.
142
2292.1.32 by Marius Kruger
* tests/__init__.run_bzr
143
    def test_rm_one_file(self):
3619.5.3 by Robert Collins
Review feedback.
144
        tree = self._make_tree_and_add([a])
2292.1.32 by Marius Kruger
* tests/__init__.run_bzr
145
        self.run_bzr("commit -m 'added a'")
146
        self.run_bzr('rm a', error_regexes=["deleted a"])
147
        self.assertFilesDeleted([a])
148
149
    def test_remove_one_file(self):
3619.5.3 by Robert Collins
Review feedback.
150
        tree = self._make_tree_and_add([a])
2292.1.32 by Marius Kruger
* tests/__init__.run_bzr
151
        self.run_bzr("commit -m 'added a'")
152
        self.run_bzr('remove a', error_regexes=["deleted a"])
153
        self.assertFilesDeleted([a])
154
155
    def test_remove_keep_one_file(self):
3619.5.3 by Robert Collins
Review feedback.
156
        tree = self._make_tree_and_add([a])
2292.1.32 by Marius Kruger
* tests/__init__.run_bzr
157
        self.run_bzr('remove --keep a', error_regexes=["removed a"])
158
        self.assertFilesUnversioned([a])
159
160
    def test_remove_one_deleted_file(self):
3619.5.3 by Robert Collins
Review feedback.
161
        tree = self._make_tree_and_add([a])
2292.1.32 by Marius Kruger
* tests/__init__.run_bzr
162
        self.run_bzr("commit -m 'added a'")
163
        os.unlink(a)
164
        self.assertInWorkingTree(a)
165
        self.run_bzr('remove a')
166
        self.assertNotInWorkingTree(a)
167
2292.1.13 by Marius Kruger
* merge the unversion command back into the remove command,
168
    def test_remove_invalid_files(self):
2292.1.32 by Marius Kruger
* tests/__init__.run_bzr
169
        self.build_tree(files)
2292.1.1 by Marius Kruger
"bzr remove" and "bzr rm" will now remove the working file.
170
        tree = self.make_branch_and_tree('.')
2605.1.1 by Martin Pool
Merge fix for rm renamed files
171
        self.run_bzr(['remove', '.', 'xyz', 'abc/def'])
2292.1.1 by Marius Kruger
"bzr remove" and "bzr rm" will now remove the working file.
172
2292.1.13 by Marius Kruger
* merge the unversion command back into the remove command,
173
    def test_remove_unversioned_files(self):
2292.1.32 by Marius Kruger
* tests/__init__.run_bzr
174
        self.build_tree(files)
2292.1.13 by Marius Kruger
* merge the unversion command back into the remove command,
175
        tree = self.make_branch_and_tree('.')
5340.8.2 by Marius Kruger
* update the blackbox tests too (unsave removals are just backed up, and don't complain)
176
        self.run_bzr_remove_changed_files(files)
2292.1.32 by Marius Kruger
* tests/__init__.run_bzr
177
178
    def test_remove_changed_files(self):
3619.5.3 by Robert Collins
Review feedback.
179
        tree = self._make_tree_and_add(files)
2292.1.32 by Marius Kruger
* tests/__init__.run_bzr
180
        self.run_bzr("commit -m 'added files'")
181
        self.changeFile(a)
182
        self.changeFile(c)
5340.8.2 by Marius Kruger
* update the blackbox tests too (unsave removals are just backed up, and don't complain)
183
        self.run_bzr_remove_changed_files(files)
2292.1.32 by Marius Kruger
* tests/__init__.run_bzr
184
3042.2.1 by Lukáš Lalinský
Fix ``bzr rm`` to not delete modified and ignored files.
185
    def test_remove_changed_ignored_files(self):
3619.5.3 by Robert Collins
Review feedback.
186
        tree = self._make_tree_and_add(['a'])
3042.2.1 by Lukáš Lalinský
Fix ``bzr rm`` to not delete modified and ignored files.
187
        self.run_bzr(['ignore', 'a'])
5340.8.2 by Marius Kruger
* update the blackbox tests too (unsave removals are just backed up, and don't complain)
188
        self.run_bzr_remove_changed_files(['a'])
3042.2.1 by Lukáš Lalinský
Fix ``bzr rm`` to not delete modified and ignored files.
189
2292.1.32 by Marius Kruger
* tests/__init__.run_bzr
190
    def test_remove_changed_files_from_child_dir(self):
2804.4.1 by Alexander Belchenko
some win32-specific fixes for selftest
191
        if sys.platform == 'win32':
192
            raise TestSkipped("Windows unable to remove '.' directory")
3619.5.3 by Robert Collins
Review feedback.
193
        tree = self._make_tree_and_add(files)
2292.1.32 by Marius Kruger
* tests/__init__.run_bzr
194
        self.run_bzr("commit -m 'added files'")
195
        self.changeFile(a)
196
        self.changeFile(c)
4676.2.3 by Vincent Ladeuil
FreeBSD is more strict than other OSes about deleting the working dir.
197
        self.run_bzr_remove_changed_files(
198
            ['../a', 'c', '.', '../d'], working_dir='b')
2292.1.32 by Marius Kruger
* tests/__init__.run_bzr
199
        self.assertNotInWorkingTree(files)
5784.1.3 by Martin Pool
Switch away from using failUnlessExists and failIfExists
200
        self.assertPathDoesNotExist(files)
2292.1.13 by Marius Kruger
* merge the unversion command back into the remove command,
201
202
    def test_remove_keep_unversioned_files(self):
2292.1.32 by Marius Kruger
* tests/__init__.run_bzr
203
        self.build_tree(files)
2292.1.13 by Marius Kruger
* merge the unversion command back into the remove command,
204
        tree = self.make_branch_and_tree('.')
2292.1.27 by Marius Kruger
* tests/__init__.TestCase.run_bzr_captured
205
        self.run_bzr('remove --keep a', error_regexes=["a is not versioned."])
2292.1.32 by Marius Kruger
* tests/__init__.run_bzr
206
        self.assertFilesUnversioned(files)
2292.1.13 by Marius Kruger
* merge the unversion command back into the remove command,
207
5444.3.1 by Marius Kruger
add 'bzr rm --no-backup' and deprecate the --force opting to be consitent with revert
208
    def test_remove_no_backup_unversioned_files(self):
209
        self.build_tree(files)
210
        tree = self.make_branch_and_tree('.')
5444.3.3 by Marius Kruger
* convert the touched tests to rather use ScriptRunner
211
        script.ScriptRunner().run_script(self, '''
6622.1.29 by Jelmer Vernooij
Fix some more tests.
212
        $ brz remove --no-backup a b/ b/c d/
5444.3.3 by Marius Kruger
* convert the touched tests to rather use ScriptRunner
213
        2>deleted d
214
        2>removed b/c (but kept a copy: b/c.~1~)
215
        2>deleted b
216
        2>deleted a
217
        ''')
5444.3.1 by Marius Kruger
add 'bzr rm --no-backup' and deprecate the --force opting to be consitent with revert
218
        self.assertFilesDeleted(files)
219
2292.1.32 by Marius Kruger
* tests/__init__.run_bzr
220
    def test_remove_deleted_files(self):
3619.5.3 by Robert Collins
Review feedback.
221
        tree = self._make_tree_and_add(files)
2292.1.32 by Marius Kruger
* tests/__init__.run_bzr
222
        self.run_bzr("commit -m 'added files'")
7143.15.2 by Jelmer Vernooij
Run autopep8.
223
        my_files = [f for f in files]
2292.1.32 by Marius Kruger
* tests/__init__.run_bzr
224
        my_files.sort(reverse=True)
225
        for f in my_files:
226
            osutils.delete_any(f)
227
        self.assertInWorkingTree(files)
5784.1.3 by Martin Pool
Switch away from using failUnlessExists and failIfExists
228
        self.assertPathDoesNotExist(files)
2292.1.32 by Marius Kruger
* tests/__init__.run_bzr
229
        self.run_bzr('remove ' + ' '.join(files))
230
        self.assertNotInWorkingTree(a)
5784.1.3 by Martin Pool
Switch away from using failUnlessExists and failIfExists
231
        self.assertPathDoesNotExist(files)
2292.1.13 by Marius Kruger
* merge the unversion command back into the remove command,
232
233
    def test_remove_non_existing_files(self):
3619.5.3 by Robert Collins
Review feedback.
234
        tree = self._make_tree_and_add([])
2605.1.1 by Martin Pool
Merge fix for rm renamed files
235
        self.run_bzr(['remove', 'b'])
2292.1.13 by Marius Kruger
* merge the unversion command back into the remove command,
236
237
    def test_remove_keep_non_existing_files(self):
3619.5.3 by Robert Collins
Review feedback.
238
        tree = self._make_tree_and_add([])
2292.1.27 by Marius Kruger
* tests/__init__.TestCase.run_bzr_captured
239
        self.run_bzr('remove --keep b', error_regexes=["b is not versioned."])
2292.1.1 by Marius Kruger
"bzr remove" and "bzr rm" will now remove the working file.
240
2292.1.23 by Marius Kruger
Revert test_too_much.py and just do the minimum te get the tests to pass.
241
    def test_remove_files(self):
3619.5.3 by Robert Collins
Review feedback.
242
        tree = self._make_tree_and_add(files)
2292.1.27 by Marius Kruger
* tests/__init__.TestCase.run_bzr_captured
243
        self.run_bzr("commit -m 'added files'")
2292.1.30 by Marius Kruger
* Minor text fixes.
244
        self.run_bzr('remove a b b/c d',
245
                     error_regexes=["deleted a", "deleted b", "deleted b/c",
7143.15.2 by Jelmer Vernooij
Run autopep8.
246
                                    "deleted d"])
2292.1.23 by Marius Kruger
Revert test_too_much.py and just do the minimum te get the tests to pass.
247
        self.assertFilesDeleted(files)
248
249
    def test_remove_keep_files(self):
3619.5.3 by Robert Collins
Review feedback.
250
        tree = self._make_tree_and_add(files)
2292.1.27 by Marius Kruger
* tests/__init__.TestCase.run_bzr_captured
251
        self.run_bzr("commit -m 'added files'")
2292.1.30 by Marius Kruger
* Minor text fixes.
252
        self.run_bzr('remove --keep a b b/c d',
253
                     error_regexes=["removed a", "removed b", "removed b/c",
7143.15.2 by Jelmer Vernooij
Run autopep8.
254
                                    "removed d"])
2292.1.23 by Marius Kruger
Revert test_too_much.py and just do the minimum te get the tests to pass.
255
        self.assertFilesUnversioned(files)
256
2292.1.27 by Marius Kruger
* tests/__init__.TestCase.run_bzr_captured
257
    def test_remove_with_new(self):
3619.5.3 by Robert Collins
Review feedback.
258
        tree = self._make_tree_and_add(files)
2292.1.27 by Marius Kruger
* tests/__init__.TestCase.run_bzr_captured
259
        self.run_bzr('remove --new --keep',
260
                     error_regexes=["removed a", "removed b", "removed b/c"])
2292.1.14 by Marius Kruger
* blackbox/test_remove
261
        self.assertFilesUnversioned(files)
2292.1.1 by Marius Kruger
"bzr remove" and "bzr rm" will now remove the working file.
262
2292.1.27 by Marius Kruger
* tests/__init__.TestCase.run_bzr_captured
263
    def test_remove_with_new_in_dir1(self):
3619.5.3 by Robert Collins
Review feedback.
264
        tree = self._make_tree_and_add(files)
2292.1.27 by Marius Kruger
* tests/__init__.TestCase.run_bzr_captured
265
        self.run_bzr('remove --new --keep b b/c',
266
                     error_regexes=["removed b", "removed b/c"])
2292.1.1 by Marius Kruger
"bzr remove" and "bzr rm" will now remove the working file.
267
        tree = WorkingTree.open('.')
268
        self.assertInWorkingTree(a)
7045.1.1 by Jelmer Vernooij
Fix another 300 tests.
269
        self.assertEqual(tree.path2id(a), a.encode('utf-8') + _id)
6809.1.1 by Martin
Apply 2to3 ws_comma fixer
270
        self.assertFilesUnversioned([b, c])
2292.1.1 by Marius Kruger
"bzr remove" and "bzr rm" will now remove the working file.
271
2292.1.27 by Marius Kruger
* tests/__init__.TestCase.run_bzr_captured
272
    def test_remove_with_new_in_dir2(self):
3619.5.3 by Robert Collins
Review feedback.
273
        tree = self._make_tree_and_add(files)
2292.1.27 by Marius Kruger
* tests/__init__.TestCase.run_bzr_captured
274
        self.run_bzr('remove --new --keep .',
275
                     error_regexes=["removed a", "removed b", "removed b/c"])
2292.1.1 by Marius Kruger
"bzr remove" and "bzr rm" will now remove the working file.
276
        tree = WorkingTree.open('.')
2292.1.32 by Marius Kruger
* tests/__init__.run_bzr
277
        self.assertFilesUnversioned(files)
7121.2.1 by Jelmer Vernooij
Support adding/removing files with a name that consists of just
278
279
    def test_remove_backslash(self):
280
        # pad.lv/176263
281
        if os.path.sep == '\\':
7290.18.6 by Jelmer Vernooij
Fix some more tests.
282
            raise TestNotApplicable(
7121.2.1 by Jelmer Vernooij
Support adding/removing files with a name that consists of just
283
                'unable to add filenames with backslashes where '
284
                ' it is the path separator')
285
        tree = self.make_branch_and_tree('.')
286
        self.build_tree(['\\'])
287
        self.assertEqual('adding \\\n', self.run_bzr('add \\\\')[0])
288
        self.assertEqual('\\\n', self.run_bzr('ls --versioned')[0])
289
        self.assertEqual('', self.run_bzr('rm \\\\')[0])
290
        self.assertEqual('', self.run_bzr('ls --versioned')[0])