~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/blackbox/test_ls.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2011-05-04 12:10:51 UTC
  • mfrom: (5819.1.4 777007-developer-doc)
  • Revision ID: pqm@pqm.ubuntu.com-20110504121051-aovlsmqiivjmc4fc
(jelmer) Small fixes to developer documentation. (Jonathan Riddell)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006 Canonical Ltd
 
1
# Copyright (C) 2006-2010 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
"""External tests of 'bzr ls'"""
18
18
 
19
19
import os
20
20
 
21
 
from bzrlib import ignores
 
21
from bzrlib import ignores, osutils
22
22
from bzrlib.tests import TestCaseWithTransport
23
23
 
24
24
 
26
26
 
27
27
    def setUp(self):
28
28
        super(TestLS, self).setUp()
29
 
        
 
29
 
30
30
        # Create a simple branch that can be used in testing
31
31
        ignores._set_user_ignores(['user-ignore'])
32
32
 
36
36
                                 ('a', 'hello\n'),
37
37
                                 ])
38
38
 
39
 
    def ls_equals(self, value, *args):
40
 
        out, err = self.run_bzr('ls', *args)
 
39
    def ls_equals(self, value, args=None, recursive=True):
 
40
        command = 'ls'
 
41
        if args is not None:
 
42
            command += ' ' + args
 
43
        if recursive:
 
44
            command += ' -R'
 
45
        out, err = self.run_bzr(command)
41
46
        self.assertEqual('', err)
42
 
        self.assertEqual(value, out)
 
47
        self.assertEqualDiff(value, out)
43
48
 
44
49
    def test_ls_null_verbose(self):
45
50
        # Can't supply both
46
51
        self.run_bzr_error(['Cannot set both --verbose and --null'],
47
 
                           'ls', '--verbose', '--null')
 
52
                           'ls --verbose --null')
48
53
 
49
54
    def test_ls_basic(self):
50
55
        """Test the abilities of 'bzr ls'"""
51
56
        self.ls_equals('.bzrignore\na\n')
 
57
        self.ls_equals('.bzrignore\na\n', './')
52
58
        self.ls_equals('?        .bzrignore\n'
53
59
                       '?        a\n',
54
60
                       '--verbose')
57
63
                       '--unknown')
58
64
        self.ls_equals('', '--ignored')
59
65
        self.ls_equals('', '--versioned')
60
 
        self.ls_equals('.bzrignore\n'
61
 
                       'a\n',
62
 
                       '--unknown', '--ignored', '--versioned')
63
 
        self.ls_equals('', '--ignored', '--versioned')
 
66
        self.ls_equals('', '-V')
 
67
        self.ls_equals('.bzrignore\n'
 
68
                       'a\n',
 
69
                       '--unknown --ignored --versioned')
 
70
        self.ls_equals('.bzrignore\n'
 
71
                       'a\n',
 
72
                       '--unknown --ignored -V')
 
73
        self.ls_equals('', '--ignored --versioned')
 
74
        self.ls_equals('', '--ignored -V')
64
75
        self.ls_equals('.bzrignore\0a\0', '--null')
65
76
 
66
77
    def test_ls_added(self):
69
80
                       'V        a\n',
70
81
                       '--verbose')
71
82
        self.wt.commit('add')
72
 
        
 
83
 
73
84
        self.build_tree(['subdir/'])
74
85
        self.ls_equals('?        .bzrignore\n'
75
86
                       'V        a\n'
83
94
                       'V        subdir/b\n'
84
95
                       , '--verbose')
85
96
 
86
 
    def test_ls_recursive(self):
 
97
    def test_show_ids(self):
 
98
        self.build_tree(['subdir/'])
 
99
        self.wt.add(['a', 'subdir'], ['a-id', 'subdir-id'])
 
100
        self.ls_equals(
 
101
            '.bzrignore                                         \n'
 
102
            'a                                                  a-id\n'
 
103
            'subdir/                                            subdir-id\n',
 
104
            '--show-ids')
 
105
        self.ls_equals(
 
106
            '?        .bzrignore\n'
 
107
            'V        a                                         a-id\n'
 
108
            'V        subdir/                                   subdir-id\n',
 
109
            '--show-ids --verbose')
 
110
        self.ls_equals('.bzrignore\0\0'
 
111
                       'a\0a-id\0'
 
112
                       'subdir\0subdir-id\0', '--show-ids --null')
 
113
 
 
114
    def test_ls_no_recursive(self):
87
115
        self.build_tree(['subdir/', 'subdir/b'])
88
116
        self.wt.add(['a', 'subdir/', 'subdir/b', '.bzrignore'])
89
117
 
90
118
        self.ls_equals('.bzrignore\n'
91
119
                       'a\n'
92
 
                       'subdir\n'
93
 
                       , '--non-recursive')
 
120
                       'subdir/\n'
 
121
                       , recursive=False)
94
122
 
95
123
        self.ls_equals('V        .bzrignore\n'
96
124
                       'V        a\n'
97
125
                       'V        subdir/\n'
98
 
                       , '--verbose', '--non-recursive')
 
126
                       , '--verbose', recursive=False)
99
127
 
100
128
        # Check what happens in a sub-directory
101
129
        os.chdir('subdir')
102
130
        self.ls_equals('b\n')
103
131
        self.ls_equals('b\0'
104
132
                  , '--null')
105
 
        self.ls_equals('.bzrignore\n'
106
 
                       'a\n'
107
 
                       'subdir\n'
108
 
                       'subdir/b\n'
 
133
        self.ls_equals('subdir/b\n'
109
134
                       , '--from-root')
110
 
        self.ls_equals('.bzrignore\0'
111
 
                       'a\0'
112
 
                       'subdir\0'
113
 
                       'subdir/b\0'
114
 
                       , '--from-root', '--null')
115
 
        self.ls_equals('.bzrignore\n'
116
 
                       'a\n'
117
 
                       'subdir\n'
118
 
                       , '--from-root', '--non-recursive')
 
135
        self.ls_equals('subdir/b\0'
 
136
                       , '--from-root --null')
 
137
        self.ls_equals('subdir/b\n'
 
138
                       , '--from-root', recursive=False)
 
139
 
 
140
    def test_ls_path(self):
 
141
        """If a path is specified, files are listed with that prefix"""
 
142
        self.build_tree(['subdir/', 'subdir/b'])
 
143
        self.wt.add(['subdir', 'subdir/b'])
 
144
        self.ls_equals('subdir/b\n' ,
 
145
                       'subdir')
 
146
        os.chdir('subdir')
 
147
        self.ls_equals('../.bzrignore\n'
 
148
                       '../a\n'
 
149
                       '../subdir/\n'
 
150
                       '../subdir/b\n' ,
 
151
                       '..')
 
152
        self.ls_equals('../.bzrignore\0'
 
153
                       '../a\0'
 
154
                       '../subdir\0'
 
155
                       '../subdir/b\0' ,
 
156
                       '.. --null')
 
157
        self.ls_equals('?        ../.bzrignore\n'
 
158
                       '?        ../a\n'
 
159
                       'V        ../subdir/\n'
 
160
                       'V        ../subdir/b\n' ,
 
161
                       '.. --verbose')
 
162
        self.run_bzr_error(['cannot specify both --from-root and PATH'],
 
163
                           'ls --from-root ..')
119
164
 
120
165
    def test_ls_revision(self):
121
166
        self.wt.add(['a'])
124
169
        self.build_tree(['subdir/'])
125
170
 
126
171
        # Check what happens when we supply a specific revision
127
 
        self.ls_equals('a\n', '--revision', '1')
 
172
        self.ls_equals('a\n', '--revision 1')
128
173
        self.ls_equals('V        a\n'
129
 
                       , '--verbose', '--revision', '1')
 
174
                       , '--verbose --revision 1')
130
175
 
131
176
        os.chdir('subdir')
132
 
        self.ls_equals('', '--revision', '1')
 
177
        self.ls_equals('', '--revision 1')
 
178
 
 
179
    def test_ls_branch(self):
 
180
        """If a branch is specified, files are listed from it"""
 
181
        self.build_tree(['subdir/', 'subdir/b'])
 
182
        self.wt.add(['subdir', 'subdir/b'])
 
183
        self.wt.commit('committing')
 
184
        branch = self.make_branch('branchdir')
 
185
        branch.pull(self.wt.branch)
 
186
        self.ls_equals('branchdir/subdir/\n'
 
187
                       'branchdir/subdir/b\n',
 
188
                       'branchdir')
 
189
        self.ls_equals('branchdir/subdir/\n'
 
190
                       'branchdir/subdir/b\n',
 
191
                       'branchdir --revision 1')
133
192
 
134
193
    def test_ls_ignored(self):
135
194
        # Now try to do ignored files.
156
215
        self.ls_equals('.bzrignore\n'
157
216
                       'a\n'
158
217
                       , '--versioned')
159
 
 
 
218
        self.ls_equals('.bzrignore\n'
 
219
                       'a\n'
 
220
                       , '-V')
 
221
 
 
222
    def test_kinds(self):
 
223
        self.build_tree(['subdir/'])
 
224
        self.ls_equals('.bzrignore\n'
 
225
                       'a\n',
 
226
                       '--kind=file')
 
227
        self.ls_equals('subdir/\n',
 
228
                       '--kind=directory')
 
229
        self.ls_equals('',
 
230
                       '--kind=symlink')
 
231
        self.run_bzr_error(['invalid kind specified'], 'ls --kind=pile')
 
232
 
 
233
    def test_ls_path_nonrecursive(self):
 
234
        self.ls_equals('%s/.bzrignore\n'
 
235
                       '%s/a\n'
 
236
                       % (self.test_dir, self.test_dir),
 
237
                       self.test_dir, recursive=False)
 
238
 
 
239
    def test_ls_directory(self):
 
240
        """Test --directory option"""
 
241
        self.wt = self.make_branch_and_tree('dir')
 
242
        self.build_tree(['dir/sub/', 'dir/sub/file'])
 
243
        self.wt.add(['sub', 'sub/file'])
 
244
        self.wt.commit('commit')
 
245
        self.ls_equals('sub/\nsub/file\n', '--directory=dir')
 
246
        self.ls_equals('sub/file\n', '-d dir sub')