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

  • Committer: Robert Collins
  • Date: 2007-09-19 05:14:14 UTC
  • mto: (2835.1.1 ianc-integration)
  • mto: This revision was merged to the branch mainline in revision 2836.
  • Revision ID: robertc@robertcollins.net-20070919051414-2tgjqteg7k3ps4h0
* ``pull``, ``merge`` and ``push`` will no longer silently correct some
  repository index errors that occured as a result of the Weave disk format.
  Instead the ``reconcile`` command needs to be run to correct those
  problems if they exist (and it has been able to fix most such problems
  since bzr 0.8). Some new problems have been identified during this release
  and you should run ``bzr check`` once on every repository to see if you
  need to reconcile. If you cannot ``pull`` or ``merge`` from a remote
  repository due to mismatched parent errors - a symptom of index errors -
  you should simply take a full copy of that remote repository to a clean
  directory outside any local repositories, then run reconcile on it, and
  finally pull from it locally. (And naturally email the repositories owner
  to ask them to upgrade and run reconcile).
  (Robert Collins)

* ``VersionedFile.fix_parents`` has been removed as a harmful API.
  ``VersionedFile.join`` will no longer accept different parents on either
  side of a join - it will either ignore them, or error, depending on the
  implementation. See notes when upgrading for more information.
  (Robert Collins)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright (C) 2006 Canonical Ltd
 
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
"""External tests of 'bzr ls'"""
 
18
 
 
19
import os
 
20
 
 
21
from bzrlib import ignores
 
22
from bzrlib.tests import TestCaseWithTransport
 
23
 
 
24
 
 
25
class TestLS(TestCaseWithTransport):
 
26
 
 
27
    def setUp(self):
 
28
        super(TestLS, self).setUp()
 
29
        
 
30
        # Create a simple branch that can be used in testing
 
31
        ignores._set_user_ignores(['user-ignore'])
 
32
 
 
33
        self.wt = self.make_branch_and_tree('.')
 
34
        self.build_tree_contents([
 
35
                                 ('.bzrignore', '*.pyo\n'),
 
36
                                 ('a', 'hello\n'),
 
37
                                 ])
 
38
 
 
39
    def ls_equals(self, value, args=None):
 
40
        command = 'ls'
 
41
        if args is not None:
 
42
            command += ' ' + args
 
43
        out, err = self.run_bzr(command)
 
44
        self.assertEqual('', err)
 
45
        self.assertEqualDiff(value, out)
 
46
 
 
47
    def test_ls_null_verbose(self):
 
48
        # Can't supply both
 
49
        self.run_bzr_error(['Cannot set both --verbose and --null'],
 
50
                           'ls --verbose --null')
 
51
 
 
52
    def test_ls_basic(self):
 
53
        """Test the abilities of 'bzr ls'"""
 
54
        self.ls_equals('.bzrignore\na\n')
 
55
        self.ls_equals('?        .bzrignore\n'
 
56
                       '?        a\n',
 
57
                       '--verbose')
 
58
        self.ls_equals('.bzrignore\n'
 
59
                       'a\n',
 
60
                       '--unknown')
 
61
        self.ls_equals('', '--ignored')
 
62
        self.ls_equals('', '--versioned')
 
63
        self.ls_equals('.bzrignore\n'
 
64
                       'a\n',
 
65
                       '--unknown --ignored --versioned')
 
66
        self.ls_equals('', '--ignored --versioned')
 
67
        self.ls_equals('.bzrignore\0a\0', '--null')
 
68
 
 
69
    def test_ls_added(self):
 
70
        self.wt.add(['a'])
 
71
        self.ls_equals('?        .bzrignore\n'
 
72
                       'V        a\n',
 
73
                       '--verbose')
 
74
        self.wt.commit('add')
 
75
        
 
76
        self.build_tree(['subdir/'])
 
77
        self.ls_equals('?        .bzrignore\n'
 
78
                       'V        a\n'
 
79
                       '?        subdir/\n'
 
80
                       , '--verbose')
 
81
        self.build_tree(['subdir/b'])
 
82
        self.wt.add(['subdir/', 'subdir/b', '.bzrignore'])
 
83
        self.ls_equals('V        .bzrignore\n'
 
84
                       'V        a\n'
 
85
                       'V        subdir/\n'
 
86
                       'V        subdir/b\n'
 
87
                       , '--verbose')
 
88
 
 
89
    def test_show_ids(self):
 
90
        self.build_tree(['subdir/'])
 
91
        self.wt.add(['a', 'subdir'], ['a-id', 'subdir-id'])
 
92
        self.ls_equals(
 
93
            '.bzrignore                                         \n'
 
94
            'a                                                  a-id\n'
 
95
            'subdir                                             subdir-id\n', 
 
96
            '--show-ids')
 
97
        self.ls_equals(
 
98
            '?        .bzrignore\n'
 
99
            'V        a                                         a-id\n'
 
100
            'V        subdir/                                   subdir-id\n', 
 
101
            '--show-ids --verbose')
 
102
        self.ls_equals('.bzrignore\0\0'
 
103
                       'a\0a-id\0'
 
104
                       'subdir\0subdir-id\0', '--show-ids --null')
 
105
 
 
106
    def test_ls_recursive(self):
 
107
        self.build_tree(['subdir/', 'subdir/b'])
 
108
        self.wt.add(['a', 'subdir/', 'subdir/b', '.bzrignore'])
 
109
 
 
110
        self.ls_equals('.bzrignore\n'
 
111
                       'a\n'
 
112
                       'subdir\n'
 
113
                       , '--non-recursive')
 
114
 
 
115
        self.ls_equals('V        .bzrignore\n'
 
116
                       'V        a\n'
 
117
                       'V        subdir/\n'
 
118
                       , '--verbose --non-recursive')
 
119
 
 
120
        # Check what happens in a sub-directory
 
121
        os.chdir('subdir')
 
122
        self.ls_equals('b\n')
 
123
        self.ls_equals('b\0'
 
124
                  , '--null')
 
125
        self.ls_equals('.bzrignore\n'
 
126
                       'a\n'
 
127
                       'subdir\n'
 
128
                       'subdir/b\n'
 
129
                       , '--from-root')
 
130
        self.ls_equals('.bzrignore\0'
 
131
                       'a\0'
 
132
                       'subdir\0'
 
133
                       'subdir/b\0'
 
134
                       , '--from-root --null')
 
135
        self.ls_equals('.bzrignore\n'
 
136
                       'a\n'
 
137
                       'subdir\n'
 
138
                       , '--from-root --non-recursive')
 
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 ..')
 
164
 
 
165
    def test_ls_revision(self):
 
166
        self.wt.add(['a'])
 
167
        self.wt.commit('add')
 
168
 
 
169
        self.build_tree(['subdir/'])
 
170
 
 
171
        # Check what happens when we supply a specific revision
 
172
        self.ls_equals('a\n', '--revision 1')
 
173
        self.ls_equals('V        a\n'
 
174
                       , '--verbose --revision 1')
 
175
 
 
176
        os.chdir('subdir')
 
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')
 
192
 
 
193
    def test_ls_ignored(self):
 
194
        # Now try to do ignored files.
 
195
        self.wt.add(['a', '.bzrignore'])
 
196
 
 
197
        self.build_tree(['blah.py', 'blah.pyo', 'user-ignore'])
 
198
        self.ls_equals('.bzrignore\n'
 
199
                       'a\n'
 
200
                       'blah.py\n'
 
201
                       'blah.pyo\n'
 
202
                       'user-ignore\n'
 
203
                       )
 
204
        self.ls_equals('V        .bzrignore\n'
 
205
                       'V        a\n'
 
206
                       '?        blah.py\n'
 
207
                       'I        blah.pyo\n'
 
208
                       'I        user-ignore\n'
 
209
                       , '--verbose')
 
210
        self.ls_equals('blah.pyo\n'
 
211
                       'user-ignore\n'
 
212
                       , '--ignored')
 
213
        self.ls_equals('blah.py\n'
 
214
                       , '--unknown')
 
215
        self.ls_equals('.bzrignore\n'
 
216
                       'a\n'
 
217
                       , '--versioned')
 
218
 
 
219
    def test_kinds(self):
 
220
        self.build_tree(['subdir/'])
 
221
        self.ls_equals('.bzrignore\n' 
 
222
                       'a\n', 
 
223
                       '--kind=file')
 
224
        self.ls_equals('subdir\n',
 
225
                       '--kind=directory')
 
226
        self.ls_equals('',
 
227
                       '--kind=symlink')
 
228
        self.run_bzr_error('invalid kind specified', 'ls --kind=pile')