/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 bzrlib/tests/blackbox/test_unversion.py

  • Committer: Marius Kruger
  • Date: 2007-02-16 06:16:11 UTC
  • mto: This revision was merged to the branch mainline in revision 2455.
  • Revision ID: amanic@gmail.com-20070216061611-sjscmgi4v5rozq6h
"bzr remove" and "bzr rm" will now remove the working file.
This has been done for consistency with svn and the unix rm command.

The old remove behaviour has been retained in the new command
"bzr unversion", which will just stop versioning the file,
but not delete it.
(Addressing Bug #82602)

Exisitng tests have been reworked and new tests were added to test these
changes properly.

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
 
20
20
from bzrlib.tests.blackbox import ExternalBase
21
21
from bzrlib.workingtree import WorkingTree
22
 
 
23
 
 
24
 
class TestRemove(ExternalBase):
25
 
 
26
 
    def test_remove_deleted(self):
 
22
from bzrlib import osutils
 
23
 
 
24
_id='-id'
 
25
a='a'
 
26
b='b/'
 
27
c='b/c'
 
28
files=(a,b,c)
 
29
 
 
30
 
 
31
class TestUnversion(ExternalBase):
 
32
 
 
33
    def __init__(self, methodName='runTest'):
 
34
        super(TestUnversion, self).__init__(methodName)
 
35
        self.cmd = 'unversion'
 
36
        self.shape = None
 
37
 
 
38
    def _make_tree(self,files):
 
39
        tree = self.make_branch_and_tree('.')
 
40
        self.build_tree(files)
 
41
        for f in files:
 
42
            id=f+_id
 
43
            tree.add(f, id)
 
44
            self.assertEqual(tree.path2id(f), id)
 
45
            self.failUnlessExists(f)
 
46
            self.assertInWorkingTree(f)
 
47
        return tree
 
48
 
 
49
    def assertCommandPerformedOnFiles(self,files):
 
50
        for f in files:
 
51
            id=f+_id
 
52
            self.failUnlessExists(f)
 
53
            self.assertNotInWorkingTree(f)
 
54
 
 
55
    def test_command_no_files_specified(self):
 
56
        self.build_tree([])
 
57
        tree = self.make_branch_and_tree('.')
 
58
 
 
59
        (out,err) = self.runbzr(self.cmd, retcode=3)
 
60
        self.assertEquals(err.strip(),
 
61
            "bzr: ERROR: Specify one or more files to unversion, or use --new."
 
62
            )
 
63
 
 
64
        (out,err) = self.runbzr(self.cmd+' --new', retcode=3)
 
65
        self.assertEquals(err.strip(),"bzr: ERROR: No matching files.")
 
66
        (out,err) = self.runbzr(self.cmd+' --new .', retcode=3)
 
67
        self.assertEquals(err.strip(),"bzr: ERROR: No matching files.")
 
68
 
 
69
    def test_command_on_invalid_files(self):
 
70
        self.build_tree([a])
 
71
        tree = self.make_branch_and_tree('.')
 
72
 
 
73
        (out,err) = self.runbzr(self.cmd + ' .')
 
74
        self.assertEquals(out.strip(), "")
 
75
        self.assertEquals(err.strip(), "")
 
76
 
 
77
        (out,err) = self.runbzr(self.cmd + ' a')
 
78
        #print "out =",out.strip()
 
79
        #print "err =",err.strip()
 
80
        self.assertEquals(out.strip(), "")
 
81
        self.assertEquals(err.strip(), "a is not versioned.")
 
82
 
 
83
        (out,err) = self.runbzr(self.cmd + ' b')
 
84
        #print "out =",out.strip()
 
85
        #print "err =",err.strip()
 
86
        self.assertEquals(out.strip(), "")
 
87
        self.assertEquals(err.strip(), "b is not versioned.")
 
88
 
 
89
    def test_command_one_file(self):
 
90
        self.build_tree([a])
 
91
        tree = self.make_branch_and_tree('.')
 
92
        tree.add(a)
 
93
        self.assertInWorkingTree(a)
 
94
        self.runbzr([self.cmd, a])
 
95
        self.assertCommandPerformedOnFiles([a])
 
96
 
 
97
    def test_command_on_deleted(self):
27
98
        self.runbzr("init")
28
 
        self.build_tree(['a'])
29
 
        self.runbzr(['add', 'a'])
 
99
        self.build_tree([a])
 
100
        self.runbzr(['add', a])
30
101
        self.runbzr(['commit', '-m', 'added a'])
31
 
        os.unlink('a')
32
 
        self.runbzr(['remove', 'a'])
33
 
 
34
 
    def test_remove_new(self):
35
 
        self.build_tree(['filefile',
36
 
                         'dir/',
37
 
                         'dir/filefilefile'])
38
 
        wt = self.make_branch_and_tree('.')
39
 
        wt.add(['filefile', 'dir', 'dir/filefilefile'], 
40
 
               ['filefile-id', 'dir-id', 'filefilefile-id'])
41
 
        self.assertEqual(wt.path2id('filefile'), 'filefile-id')
42
 
        self.assertEqual(wt.path2id('dir/filefilefile'), 'filefilefile-id')
43
 
        self.assertEqual(wt.path2id('dir'), 'dir-id')
44
 
        self.runbzr('remove --new')
45
 
        wt = WorkingTree.open('.')
46
 
        self.assertIs(wt.path2id('filefile'), None)
47
 
        self.assertIs(wt.path2id('dir/filefilefile'), None)
48
 
        self.assertIs(wt.path2id('dir'), None)
49
 
        wt.add(['filefile', 'dir', 'dir/filefilefile'], 
50
 
               ['filefile-id', 'dir-id', 'filefilefile-id'])
51
 
        self.assertEqual(wt.path2id('filefile'), 'filefile-id')
52
 
        self.assertEqual(wt.path2id('dir/filefilefile'), 'filefilefile-id')
53
 
        self.assertEqual(wt.path2id('dir'), 'dir-id')
54
 
        self.runbzr('remove --new dir')
55
 
        wt = WorkingTree.open('.')
56
 
        self.assertEqual(wt.path2id('filefile'), 'filefile-id')
57
 
        self.assertIs(wt.path2id('dir/filefilefile'), None)
58
 
        self.assertIs(wt.path2id('dir'), None)
59
 
        self.runbzr('remove --new .')
60
 
        wt = WorkingTree.open('.')
61
 
        self.assertIs(wt.path2id('filefile'), None)
62
 
        self.runbzr('remove --new .', retcode=3)
 
102
        os.unlink(a)
 
103
        self.assertInWorkingTree(a)
 
104
        self.runbzr([self.cmd, a])
 
105
        self.assertNotInWorkingTree(a)
 
106
 
 
107
    def test_command_with_new(self):
 
108
        tree = self._make_tree(files)
 
109
 
 
110
        self.runbzr(self.cmd+' --new')
 
111
        self.assertCommandPerformedOnFiles(files)
 
112
 
 
113
    def test_command_with_new_in_dir1(self):
 
114
        tree = self._make_tree(files)
 
115
        self.runbzr(self.cmd+' --new '+b)
 
116
        tree = WorkingTree.open('.')
 
117
        self.assertInWorkingTree(a)
 
118
        self.assertEqual(tree.path2id(a), a+_id)
 
119
        self.assertCommandPerformedOnFiles([b,c])
 
120
 
 
121
    def test_command_with_new_in_dir2(self):
 
122
        tree = self._make_tree(files)
 
123
        self.runbzr(self.cmd+' --new .')
 
124
        tree = WorkingTree.open('.')
 
125
        self.assertCommandPerformedOnFiles([a])
 
 
b'\\ No newline at end of file'