/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 breezy/tests/blackbox/test_remove.py

  • Committer: Jelmer Vernooij
  • Date: 2020-05-06 02:13:25 UTC
  • mfrom: (7490.7.21 work)
  • mto: This revision was merged to the branch mainline in revision 7501.
  • Revision ID: jelmer@jelmer.uk-20200506021325-awbmmqu1zyorz7sj
Merge 3.1 branch.

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
    features,
24
24
    TestCaseWithTransport,
25
25
    TestSkipped,
 
26
    TestNotApplicable,
26
27
    )
27
28
from breezy.workingtree import WorkingTree
28
29
from breezy import osutils
29
30
 
30
 
_id='-id'
31
 
a='a'
32
 
b='b/'
33
 
c='b/c'
34
 
d='d/'
35
 
files=(a, b, c, d)
 
31
_id = b'-id'
 
32
a = 'a'
 
33
b = 'b/'
 
34
c = 'b/c'
 
35
d = 'd/'
 
36
files = (a, b, c, d)
36
37
 
37
38
 
38
39
class TestRemove(TestCaseWithTransport):
39
40
 
40
41
    def _make_tree_and_add(self, paths):
41
42
        tree = self.make_branch_and_tree('.')
42
 
        tree.lock_write()
43
 
        try:
 
43
        with tree.lock_write():
44
44
            self.build_tree(paths)
45
45
            for path in paths:
46
 
                file_id=str(path).replace('/', '_') + _id
 
46
                file_id = path.replace('/', '_').encode('utf-8') + _id
47
47
                tree.add(path, file_id)
48
 
        finally:
49
 
            tree.unlock()
50
48
        return tree
51
49
 
52
50
    def assertFilesDeleted(self, files):
53
51
        for f in files:
54
 
            id=f+_id
 
52
            id = f.encode('utf-8') + _id
55
53
            self.assertNotInWorkingTree(f)
56
54
            self.assertPathDoesNotExist(f)
57
55
 
61
59
            self.assertPathExists(f)
62
60
 
63
61
    def changeFile(self, file_name):
64
 
        f = file(file_name, 'ab')
65
 
        f.write("\nsome other new content!")
66
 
        f.close()
 
62
        with open(file_name, 'ab') as f:
 
63
            f.write(b"\nsome other new content!")
67
64
 
68
65
    def run_bzr_remove_changed_files(self, files_to_remove, working_dir=None):
69
66
        self.run_bzr(['remove'] + list(files_to_remove),
70
 
           working_dir=working_dir)
 
67
                     working_dir=working_dir)
71
68
 
72
69
    def test_remove_new_no_files_specified(self):
73
70
        tree = self.make_branch_and_tree('.')
74
71
        self.run_bzr_error(["brz: ERROR: No matching files."], 'remove --new')
75
 
        self.run_bzr_error(["brz: ERROR: No matching files."], 'remove --new .')
 
72
        self.run_bzr_error(
 
73
            ["brz: ERROR: No matching files."], 'remove --new .')
76
74
 
77
75
    def test_remove_no_files_specified(self):
78
76
        tree = self._make_tree_and_add(['foo'])
219
217
    def test_remove_deleted_files(self):
220
218
        tree = self._make_tree_and_add(files)
221
219
        self.run_bzr("commit -m 'added files'")
222
 
        my_files=[f for f in files]
 
220
        my_files = [f for f in files]
223
221
        my_files.sort(reverse=True)
224
222
        for f in my_files:
225
223
            osutils.delete_any(f)
242
240
        self.run_bzr("commit -m 'added files'")
243
241
        self.run_bzr('remove a b b/c d',
244
242
                     error_regexes=["deleted a", "deleted b", "deleted b/c",
245
 
                     "deleted d"])
 
243
                                    "deleted d"])
246
244
        self.assertFilesDeleted(files)
247
245
 
248
246
    def test_remove_keep_files(self):
250
248
        self.run_bzr("commit -m 'added files'")
251
249
        self.run_bzr('remove --keep a b b/c d',
252
250
                     error_regexes=["removed a", "removed b", "removed b/c",
253
 
                     "removed d"])
 
251
                                    "removed d"])
254
252
        self.assertFilesUnversioned(files)
255
253
 
256
254
    def test_remove_with_new(self):
265
263
                     error_regexes=["removed b", "removed b/c"])
266
264
        tree = WorkingTree.open('.')
267
265
        self.assertInWorkingTree(a)
268
 
        self.assertEqual(tree.path2id(a), a + _id)
 
266
        self.assertEqual(tree.path2id(a), a.encode('utf-8') + _id)
269
267
        self.assertFilesUnversioned([b, c])
270
268
 
271
269
    def test_remove_with_new_in_dir2(self):
274
272
                     error_regexes=["removed a", "removed b", "removed b/c"])
275
273
        tree = WorkingTree.open('.')
276
274
        self.assertFilesUnversioned(files)
 
275
 
 
276
    def test_remove_backslash(self):
 
277
        # pad.lv/176263
 
278
        if os.path.sep == '\\':
 
279
            raise TestNotApplicable(
 
280
                'unable to add filenames with backslashes where '
 
281
                ' it is the path separator')
 
282
        tree = self.make_branch_and_tree('.')
 
283
        self.build_tree(['\\'])
 
284
        self.assertEqual('adding \\\n', self.run_bzr('add \\\\')[0])
 
285
        self.assertEqual('\\\n', self.run_bzr('ls --versioned')[0])
 
286
        self.assertEqual('', self.run_bzr('rm \\\\')[0])
 
287
        self.assertEqual('', self.run_bzr('ls --versioned')[0])