/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
1
# Copyright (C) 2005, 2006, 2007 Canonical Ltd
1711.1.3 by Robert Collins
Add new test_add file - should have been in last commit.
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
18
"""Tests of the 'bzr add' command."""
19
20
import os
21
22
from bzrlib.tests.blackbox import ExternalBase
2617.5.8 by Kuno Meyer
Extended tests for unicode chars outside of the iso-8859-* range
23
from bzrlib.tests.test_win32utils import NeedsGlobExpansionFeature
1711.1.3 by Robert Collins
Add new test_add file - should have been in last commit.
24
25
26
class TestAdd(ExternalBase):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
27
1711.1.3 by Robert Collins
Add new test_add file - should have been in last commit.
28
    def test_add_reports(self):
29
        """add command prints the names of added files."""
2664.3.1 by Daniel Watkins
tests.blackbox.test_add now uses internals where appropriate.
30
        tree = self.make_branch_and_tree('.')
1711.1.3 by Robert Collins
Add new test_add file - should have been in last commit.
31
        self.build_tree(['top.txt', 'dir/', 'dir/sub.txt', 'CVS'])
1765.1.1 by Robert Collins
Remove the default ignores list from bzr, lowering the minimum overhead in bzr add.
32
        self.build_tree_contents([('.bzrignore', 'CVS\n')])
2581.1.2 by Martin Pool
Remove unnecessary retcode=0 to run_bzr calls
33
        out = self.run_bzr('add')[0]
1711.1.3 by Robert Collins
Add new test_add file - should have been in last commit.
34
        # the ordering is not defined at the moment
35
        results = sorted(out.rstrip('\n').split('\n'))
36
        self.assertEquals(['If you wish to add some of these files, please'\
37
                           ' add them by name.',
3985.2.2 by Daniel Watkins
Fix typos in tests.
38
                           'add completed',
3985.2.1 by Daniel Watkins
Updated tests for new behaviour.
39
                           'adding .bzrignore',
40
                           'adding dir',
41
                           'adding dir/sub.txt',
42
                           'adding top.txt',
1987.1.1 by John Arbash Meinel
Update the test suite to put HOME in a different directory
43
                           'ignored 1 file(s).'],
1711.1.3 by Robert Collins
Add new test_add file - should have been in last commit.
44
                          results)
2581.1.2 by Martin Pool
Remove unnecessary retcode=0 to run_bzr calls
45
        out = self.run_bzr('add -v')[0]
1711.1.3 by Robert Collins
Add new test_add file - should have been in last commit.
46
        results = sorted(out.rstrip('\n').split('\n'))
47
        self.assertEquals(['If you wish to add some of these files, please'\
48
                           ' add them by name.',
49
                           'ignored CVS matching "CVS"'],
50
                          results)
51
52
    def test_add_quiet_is(self):
53
        """add -q does not print the names of added files."""
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
54
        tree = self.make_branch_and_tree('.')
1711.1.3 by Robert Collins
Add new test_add file - should have been in last commit.
55
        self.build_tree(['top.txt', 'dir/', 'dir/sub.txt'])
2581.1.2 by Martin Pool
Remove unnecessary retcode=0 to run_bzr calls
56
        out = self.run_bzr('add -q')[0]
1711.1.3 by Robert Collins
Add new test_add file - should have been in last commit.
57
        # the ordering is not defined at the moment
58
        results = sorted(out.rstrip('\n').split('\n'))
59
        self.assertEquals([''], results)
60
61
    def test_add_in_unversioned(self):
62
        """Try to add a file in an unversioned directory.
63
64
        "bzr add" should add the parent(s) as necessary.
65
        """
2664.3.1 by Daniel Watkins
tests.blackbox.test_add now uses internals where appropriate.
66
        tree = self.make_branch_and_tree('.')
1711.1.3 by Robert Collins
Add new test_add file - should have been in last commit.
67
        self.build_tree(['inertiatic/', 'inertiatic/esp'])
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
68
        self.assertEquals(self.run_bzr('unknowns')[0], 'inertiatic\n')
2530.3.3 by Martin Pool
Clean up some callers that use varargs syntax for run_bzr, but don't
69
        self.run_bzr('add inertiatic/esp')
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
70
        self.assertEquals(self.run_bzr('unknowns')[0], '')
1711.1.3 by Robert Collins
Add new test_add file - should have been in last commit.
71
72
        # Multiple unversioned parents
73
        self.build_tree(['veil/', 'veil/cerpin/', 'veil/cerpin/taxt'])
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
74
        self.assertEquals(self.run_bzr('unknowns')[0], 'veil\n')
2530.3.3 by Martin Pool
Clean up some callers that use varargs syntax for run_bzr, but don't
75
        self.run_bzr('add veil/cerpin/taxt')
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
76
        self.assertEquals(self.run_bzr('unknowns')[0], '')
1711.1.3 by Robert Collins
Add new test_add file - should have been in last commit.
77
78
        # Check whacky paths work
79
        self.build_tree(['cicatriz/', 'cicatriz/esp'])
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
80
        self.assertEquals(self.run_bzr('unknowns')[0], 'cicatriz\n')
2530.3.3 by Martin Pool
Clean up some callers that use varargs syntax for run_bzr, but don't
81
        self.run_bzr('add inertiatic/../cicatriz/esp')
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
82
        self.assertEquals(self.run_bzr('unknowns')[0], '')
1711.1.3 by Robert Collins
Add new test_add file - should have been in last commit.
83
84
    def test_add_in_versioned(self):
85
        """Try to add a file in a versioned directory.
86
87
        "bzr add" should do this happily.
88
        """
2664.3.1 by Daniel Watkins
tests.blackbox.test_add now uses internals where appropriate.
89
        tree = self.make_branch_and_tree('.')
1711.1.3 by Robert Collins
Add new test_add file - should have been in last commit.
90
        self.build_tree(['inertiatic/', 'inertiatic/esp'])
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
91
        self.assertEquals(self.run_bzr('unknowns')[0], 'inertiatic\n')
2530.3.3 by Martin Pool
Clean up some callers that use varargs syntax for run_bzr, but don't
92
        self.run_bzr('add --no-recurse inertiatic')
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
93
        self.assertEquals(self.run_bzr('unknowns')[0], 'inertiatic/esp\n')
2530.3.3 by Martin Pool
Clean up some callers that use varargs syntax for run_bzr, but don't
94
        self.run_bzr('add inertiatic/esp')
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
95
        self.assertEquals(self.run_bzr('unknowns')[0], '')
1711.1.3 by Robert Collins
Add new test_add file - should have been in last commit.
96
97
    def test_subdir_add(self):
98
        """Add in subdirectory should add only things from there down"""
99
        from bzrlib.workingtree import WorkingTree
1836.1.16 by John Arbash Meinel
Cleanup some tests which don't expect .bazaar/ to show up. Some still fail.
100
1711.1.3 by Robert Collins
Add new test_add file - should have been in last commit.
101
        eq = self.assertEqual
1836.1.16 by John Arbash Meinel
Cleanup some tests which don't expect .bazaar/ to show up. Some still fail.
102
        ass = self.assertTrue
1711.1.3 by Robert Collins
Add new test_add file - should have been in last commit.
103
        chdir = os.chdir
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
104
1711.1.3 by Robert Collins
Add new test_add file - should have been in last commit.
105
        t = self.make_branch_and_tree('.')
106
        b = t.branch
107
        self.build_tree(['src/', 'README'])
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
108
1711.1.3 by Robert Collins
Add new test_add file - should have been in last commit.
109
        eq(sorted(t.unknowns()),
110
           ['README', 'src'])
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
111
2530.3.3 by Martin Pool
Clean up some callers that use varargs syntax for run_bzr, but don't
112
        self.run_bzr('add src')
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
113
1711.1.3 by Robert Collins
Add new test_add file - should have been in last commit.
114
        self.build_tree(['src/foo.c'])
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
115
2255.2.171 by Martin Pool
Fix up blackbox test_add to avoid depending on inventory not being held in memory
116
        # add with no arguments in a subdirectory gets only files below that
117
        # subdirectory
1711.1.3 by Robert Collins
Add new test_add file - should have been in last commit.
118
        chdir('src')
119
        self.run_bzr('add')
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
120
        self.assertEquals(self.run_bzr('unknowns')[0], 'README\n')
2255.2.176 by Martin Pool
Merge dirstate and some small cleanups
121
        # reopen to see the new changes
122
        t = t.bzrdir.open_workingtree()
2255.2.171 by Martin Pool
Fix up blackbox test_add to avoid depending on inventory not being held in memory
123
        versioned = [path for path, entry in t.iter_entries_by_dir()]
124
        self.assertEquals(versioned,
125
            ['', 'src', 'src/foo.c'])
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
126
2255.2.171 by Martin Pool
Fix up blackbox test_add to avoid depending on inventory not being held in memory
127
        # add from the parent directory should pick up all file names
1711.1.3 by Robert Collins
Add new test_add file - should have been in last commit.
128
        chdir('..')
129
        self.run_bzr('add')
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
130
        self.assertEquals(self.run_bzr('unknowns')[0], '')
1711.1.3 by Robert Collins
Add new test_add file - should have been in last commit.
131
        self.run_bzr('check')
1757.2.1 by Robert Collins
Add an explicit test that adding a missing file barfs.
132
133
    def test_add_missing(self):
134
        """bzr add foo where foo is missing should error."""
135
        self.make_branch_and_tree('.')
2530.3.3 by Martin Pool
Clean up some callers that use varargs syntax for run_bzr, but don't
136
        self.run_bzr('add missing-file', retcode=3)
1911.3.2 by John Arbash Meinel
Adding the AddFromBaseAction, which tries to reuse file ids from another tree
137
138
    def test_add_from(self):
139
        base_tree = self.make_branch_and_tree('base')
140
        self.build_tree(['base/a', 'base/b/', 'base/b/c'])
141
        base_tree.add(['a', 'b', 'b/c'])
142
        base_tree.commit('foo')
143
144
        new_tree = self.make_branch_and_tree('new')
145
        self.build_tree(['new/a', 'new/b/', 'new/b/c', 'd'])
146
147
        os.chdir('new')
2530.3.3 by Martin Pool
Clean up some callers that use varargs syntax for run_bzr, but don't
148
        out, err = self.run_bzr('add --file-ids-from ../base')
1911.3.2 by John Arbash Meinel
Adding the AddFromBaseAction, which tries to reuse file ids from another tree
149
        self.assertEqual('', err)
3985.2.1 by Daniel Watkins
Updated tests for new behaviour.
150
        self.assertEqualDiff('adding a w/ file id from a\n'
151
                             'adding b w/ file id from b\n'
3985.2.2 by Daniel Watkins
Fix typos in tests.
152
                             'adding b/c w/ file id from b/c\n'
3985.2.1 by Daniel Watkins
Updated tests for new behaviour.
153
                             'add completed\n',
1911.3.2 by John Arbash Meinel
Adding the AddFromBaseAction, which tries to reuse file ids from another tree
154
                             out)
2255.2.171 by Martin Pool
Fix up blackbox test_add to avoid depending on inventory not being held in memory
155
        new_tree = new_tree.bzrdir.open_workingtree()
1911.3.2 by John Arbash Meinel
Adding the AddFromBaseAction, which tries to reuse file ids from another tree
156
        self.assertEqual(base_tree.path2id('a'), new_tree.path2id('a'))
157
        self.assertEqual(base_tree.path2id('b'), new_tree.path2id('b'))
158
        self.assertEqual(base_tree.path2id('b/c'), new_tree.path2id('b/c'))
159
160
    def test_add_from_subdir(self):
161
        base_tree = self.make_branch_and_tree('base')
162
        self.build_tree(['base/a', 'base/b/', 'base/b/c', 'base/b/d'])
163
        base_tree.add(['a', 'b', 'b/c', 'b/d'])
164
        base_tree.commit('foo')
165
166
        new_tree = self.make_branch_and_tree('new')
167
        self.build_tree(['new/c', 'new/d'])
168
169
        os.chdir('new')
2530.3.3 by Martin Pool
Clean up some callers that use varargs syntax for run_bzr, but don't
170
        out, err = self.run_bzr('add --file-ids-from ../base/b')
1911.3.2 by John Arbash Meinel
Adding the AddFromBaseAction, which tries to reuse file ids from another tree
171
        self.assertEqual('', err)
3985.2.1 by Daniel Watkins
Updated tests for new behaviour.
172
        self.assertEqualDiff('adding c w/ file id from b/c\n'
3985.2.2 by Daniel Watkins
Fix typos in tests.
173
                             'adding d w/ file id from b/d\n'
3985.2.1 by Daniel Watkins
Updated tests for new behaviour.
174
                             'add completed\n',
1911.3.2 by John Arbash Meinel
Adding the AddFromBaseAction, which tries to reuse file ids from another tree
175
                             out)
176
2255.2.171 by Martin Pool
Fix up blackbox test_add to avoid depending on inventory not being held in memory
177
        new_tree = new_tree.bzrdir.open_workingtree()
1911.3.2 by John Arbash Meinel
Adding the AddFromBaseAction, which tries to reuse file ids from another tree
178
        self.assertEqual(base_tree.path2id('b/c'), new_tree.path2id('c'))
179
        self.assertEqual(base_tree.path2id('b/d'), new_tree.path2id('d'))
1928.1.1 by Alexander Belchenko
blackbox test for 'bzr add --dry-run'
180
181
    def test_add_dry_run(self):
2568.2.4 by Robert Collins
* ``bzrlib.add.smart_add`` and ``bzrlib.add.smart_add_tree`` are now
182
        """Test a dry run add, make sure nothing is added."""
183
        wt = self.make_branch_and_tree('.')
184
        self.build_tree(['inertiatic/', 'inertiatic/esp'])
185
        self.assertEqual(list(wt.unknowns()), ['inertiatic'])
186
        self.run_bzr('add --dry-run')
187
        self.assertEqual(list(wt.unknowns()), ['inertiatic'])
2279.5.1 by Matthias Rahlf
FastPath objects can now be printed nicely
188
189
    def test_add_control_dir(self):
190
        """The control dir and its content should be refused."""
2279.6.1 by Alexander Belchenko
Instead of __str__ method for FastPath object we use .raw_path attribute (note from Aaron).
191
        self.make_branch_and_tree('.')
2530.3.3 by Martin Pool
Clean up some callers that use varargs syntax for run_bzr, but don't
192
        err = self.run_bzr('add .bzr', retcode=3)[1]
2279.5.1 by Matthias Rahlf
FastPath objects can now be printed nicely
193
        self.assertContainsRe(err, r'ERROR:.*\.bzr.*control file')
2530.3.3 by Martin Pool
Clean up some callers that use varargs syntax for run_bzr, but don't
194
        err = self.run_bzr('add .bzr/README', retcode=3)[1]
2279.5.1 by Matthias Rahlf
FastPath objects can now be printed nicely
195
        self.assertContainsRe(err, r'ERROR:.*\.bzr.*control file')
196
        self.build_tree(['.bzr/crescent'])
2530.3.3 by Martin Pool
Clean up some callers that use varargs syntax for run_bzr, but don't
197
        err = self.run_bzr('add .bzr/crescent', retcode=3)[1]
2279.5.1 by Matthias Rahlf
FastPath objects can now be printed nicely
198
        self.assertContainsRe(err, r'ERROR:.*\.bzr.*control file')
2617.5.3 by Kuno Meyer
Blackbox test for adding with wildcards (Win32).
199
200
    def test_add_with_wildcards(self):
2617.5.8 by Kuno Meyer
Extended tests for unicode chars outside of the iso-8859-* range
201
        self.requireFeature(NeedsGlobExpansionFeature)
2617.5.4 by Kuno Meyer
Included feedback on initial patch.
202
        self.make_branch_and_tree('.')
2617.5.3 by Kuno Meyer
Blackbox test for adding with wildcards (Win32).
203
        self.build_tree(['a1', 'a2', 'b', 'c33'])
2617.5.4 by Kuno Meyer
Included feedback on initial patch.
204
        self.run_bzr(['add', 'a?', 'c*'])
2617.5.3 by Kuno Meyer
Blackbox test for adding with wildcards (Win32).
205
        self.assertEquals(self.run_bzr('unknowns')[0], 'b\n')
2617.5.8 by Kuno Meyer
Extended tests for unicode chars outside of the iso-8859-* range
206
207
    def test_add_with_wildcards_unicode(self):
208
        self.requireFeature(NeedsGlobExpansionFeature)
209
        self.make_branch_and_tree('.')
210
        self.build_tree([u'\u1234A', u'\u1235A', u'\u1235AA', 'cc'])
211
        self.run_bzr(['add', u'\u1234?', u'\u1235*'])
212
        self.assertEquals(self.run_bzr('unknowns')[0], 'cc\n')