/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_add.py

  • Committer: Martin Pool
  • Date: 2007-10-03 08:06:44 UTC
  • mto: This revision was merged to the branch mainline in revision 2901.
  • Revision ID: mbp@sourcefrog.net-20071003080644-oivy0gkg98sex0ed
Avoid internal error tracebacks on failure to lock on readonly transport (#129701).

Add new LockFailed, which doesn't imply that we failed to get it because of
contention.  Raise this if we fail to create the pending or lock directories
because of Transport errors.

UnlockableTransport is not an internal error.

ReadOnlyLockError has a message which didn't match its name or usage; it's now
deprecated and callers are updated to use LockFailed which is more appropriate.

Add zero_ninetytwo deprecation symbol.

Unify assertMatchesRe with TestCase.assertContainsRe.

When the constructor is deprecated, just say that the class is deprecated, not
the __init__ method - this works better with applyDeprecated in tests.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006, 2007, 2009, 2010 Canonical Ltd
 
1
# Copyright (C) 2005, 2006, 2007 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
#
17
17
 
18
18
"""Tests of the 'bzr add' command."""
19
19
 
20
20
import os
21
21
 
22
 
from bzrlib import (
23
 
    osutils,
24
 
    tests,
25
 
    )
26
 
 
27
 
 
28
 
def load_tests(standard_tests, module, loader):
29
 
    """Parameterize tests for view-aware vs not."""
30
 
    to_adapt, result = tests.split_suite_by_condition(
31
 
        standard_tests, tests.condition_isinstance(TestAdd))
32
 
    scenarios = [
33
 
        ('pre-views', {'branch_tree_format': 'pack-0.92'}),
34
 
        ('view-aware', {'branch_tree_format': 'development6-rich-root'}),
35
 
        ]
36
 
    return tests.multiply_tests(to_adapt, scenarios, result)
37
 
 
38
 
 
39
 
class TestAdd(tests.TestCaseWithTransport):
40
 
 
41
 
    def make_branch_and_tree(self, dir):
42
 
        return super(TestAdd, self).make_branch_and_tree(
43
 
            dir, format=self.branch_tree_format)
44
 
 
 
22
from bzrlib.tests.blackbox import ExternalBase
 
23
from bzrlib.tests.test_win32utils import NeedsGlobExpansionFeature
 
24
 
 
25
 
 
26
class TestAdd(ExternalBase):
 
27
        
45
28
    def test_add_reports(self):
46
29
        """add command prints the names of added files."""
47
30
        tree = self.make_branch_and_tree('.')
50
33
        out = self.run_bzr('add')[0]
51
34
        # the ordering is not defined at the moment
52
35
        results = sorted(out.rstrip('\n').split('\n'))
53
 
        self.assertEquals(['adding .bzrignore',
54
 
                           'adding dir',
55
 
                           'adding dir/sub.txt',
56
 
                           'adding top.txt'],
 
36
        self.assertEquals(['If you wish to add some of these files, please'\
 
37
                           ' add them by name.',
 
38
                           'added .bzrignore',
 
39
                           'added dir',
 
40
                           'added dir/sub.txt',
 
41
                           'added top.txt',
 
42
                           'ignored 1 file(s).'],
57
43
                          results)
58
44
        out = self.run_bzr('add -v')[0]
59
45
        results = sorted(out.rstrip('\n').split('\n'))
60
 
        self.assertEquals(['ignored CVS matching "CVS"'],
 
46
        self.assertEquals(['If you wish to add some of these files, please'\
 
47
                           ' add them by name.',
 
48
                           'ignored CVS matching "CVS"'],
61
49
                          results)
62
50
 
63
51
    def test_add_quiet_is(self):
64
52
        """add -q does not print the names of added files."""
65
 
        tree = self.make_branch_and_tree('.')
 
53
        tree = self.make_branch_and_tree('.') 
66
54
        self.build_tree(['top.txt', 'dir/', 'dir/sub.txt'])
67
55
        out = self.run_bzr('add -q')[0]
68
56
        # the ordering is not defined at the moment
111
99
 
112
100
        eq = self.assertEqual
113
101
        ass = self.assertTrue
114
 
 
 
102
        chdir = os.chdir
 
103
        
115
104
        t = self.make_branch_and_tree('.')
116
105
        b = t.branch
117
106
        self.build_tree(['src/', 'README'])
118
 
 
 
107
        
119
108
        eq(sorted(t.unknowns()),
120
109
           ['README', 'src'])
121
 
 
 
110
        
122
111
        self.run_bzr('add src')
123
 
 
 
112
        
124
113
        self.build_tree(['src/foo.c'])
125
 
 
 
114
        
126
115
        # add with no arguments in a subdirectory gets only files below that
127
116
        # subdirectory
128
 
        self.run_bzr('add', working_dir='src')
129
 
        self.assertEquals('README\n',
130
 
                          self.run_bzr('unknowns', working_dir='src')[0])
 
117
        chdir('src')
 
118
        self.run_bzr('add')
 
119
        self.assertEquals(self.run_bzr('unknowns')[0], 'README\n')
131
120
        # reopen to see the new changes
132
 
        t = t.bzrdir.open_workingtree('src')
 
121
        t = t.bzrdir.open_workingtree()
133
122
        versioned = [path for path, entry in t.iter_entries_by_dir()]
134
 
        self.assertEquals(versioned, ['', 'src', 'src/foo.c'])
135
 
 
 
123
        self.assertEquals(versioned,
 
124
            ['', 'src', 'src/foo.c'])
 
125
                
136
126
        # add from the parent directory should pick up all file names
 
127
        chdir('..')
137
128
        self.run_bzr('add')
138
129
        self.assertEquals(self.run_bzr('unknowns')[0], '')
139
130
        self.run_bzr('check')
155
146
        os.chdir('new')
156
147
        out, err = self.run_bzr('add --file-ids-from ../base')
157
148
        self.assertEqual('', err)
158
 
        self.assertEqualDiff('adding a w/ file id from a\n'
159
 
                             'adding b w/ file id from b\n'
160
 
                             'adding b/c w/ file id from b/c\n',
 
149
        self.assertEqualDiff('added a w/ file id from a\n'
 
150
                             'added b w/ file id from b\n'
 
151
                             'added b/c w/ file id from b/c\n',
161
152
                             out)
162
153
        new_tree = new_tree.bzrdir.open_workingtree()
163
154
        self.assertEqual(base_tree.path2id('a'), new_tree.path2id('a'))
176
167
        os.chdir('new')
177
168
        out, err = self.run_bzr('add --file-ids-from ../base/b')
178
169
        self.assertEqual('', err)
179
 
        self.assertEqualDiff('adding c w/ file id from b/c\n'
180
 
                             'adding d w/ file id from b/d\n',
 
170
        self.assertEqualDiff('added c w/ file id from b/c\n'
 
171
                             'added d w/ file id from b/d\n',
181
172
                             out)
182
173
 
183
174
        new_tree = new_tree.bzrdir.open_workingtree()
203
194
        err = self.run_bzr('add .bzr/crescent', retcode=3)[1]
204
195
        self.assertContainsRe(err, r'ERROR:.*\.bzr.*control file')
205
196
 
206
 
    def test_add_via_symlink(self):
207
 
        self.requireFeature(tests.SymlinkFeature)
208
 
        self.make_branch_and_tree('source')
209
 
        self.build_tree(['source/top.txt'])
210
 
        os.symlink('source', 'link')
211
 
        out = self.run_bzr(['add', 'link/top.txt'])[0]
212
 
        self.assertEquals(out, 'adding top.txt\n')
 
197
    def test_add_with_wildcards(self):
 
198
        self.requireFeature(NeedsGlobExpansionFeature)
 
199
        self.make_branch_and_tree('.')
 
200
        self.build_tree(['a1', 'a2', 'b', 'c33'])
 
201
        self.run_bzr(['add', 'a?', 'c*'])
 
202
        self.assertEquals(self.run_bzr('unknowns')[0], 'b\n')
213
203
 
214
 
    def test_add_symlink_to_abspath(self):
215
 
        self.requireFeature(tests.SymlinkFeature)
216
 
        self.make_branch_and_tree('tree')
217
 
        os.symlink(osutils.abspath('target'), 'tree/link')
218
 
        out = self.run_bzr(['add', 'tree/link'])[0]
219
 
        self.assertEquals(out, 'adding link\n')
 
204
    def test_add_with_wildcards_unicode(self):
 
205
        self.requireFeature(NeedsGlobExpansionFeature)
 
206
        self.make_branch_and_tree('.')
 
207
        self.build_tree([u'\u1234A', u'\u1235A', u'\u1235AA', 'cc'])
 
208
        self.run_bzr(['add', u'\u1234?', u'\u1235*'])
 
209
        self.assertEquals(self.run_bzr('unknowns')[0], 'cc\n')