1
# Copyright (C) 2006 Canonical Ltd
1
# Copyright (C) 2006-2012 Canonical Ltd
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
17
17
"""External tests of 'bzr ls'"""
21
from bzrlib import ignores
22
from bzrlib.tests import TestCaseWithTransport
25
class TestLS(TestCaseWithTransport):
23
from bzrlib.tests.matchers import ContainsNoVfsCalls
26
class TestLS(tests.TestCaseWithTransport):
28
29
super(TestLS, self).setUp()
39
def ls_equals(self, value, args=None, recursive=True):
40
def ls_equals(self, value, args=None, recursive=True, working_dir=None):
41
42
if args is not None:
42
43
command += ' ' + args
45
out, err = self.run_bzr(command)
46
out, err = self.run_bzr(command, working_dir=working_dir)
46
47
self.assertEqual('', err)
47
48
self.assertEqualDiff(value, out)
126
127
, '--verbose', recursive=False)
128
129
# Check what happens in a sub-directory
130
self.ls_equals('b\n')
133
self.ls_equals('subdir/b\n'
135
self.ls_equals('subdir/b\0'
136
, '--from-root --null')
137
self.ls_equals('subdir/b\n'
138
, '--from-root', recursive=False)
130
self.ls_equals('b\n', working_dir='subdir')
131
self.ls_equals('b\0', '--null', working_dir='subdir')
132
self.ls_equals('subdir/b\n', '--from-root', working_dir='subdir')
133
self.ls_equals('subdir/b\0', '--from-root --null',
134
working_dir='subdir')
135
self.ls_equals('subdir/b\n', '--from-root', recursive=False,
136
working_dir='subdir')
140
138
def test_ls_path(self):
141
139
"""If a path is specified, files are listed with that prefix"""
143
141
self.wt.add(['subdir', 'subdir/b'])
144
142
self.ls_equals('subdir/b\n' ,
147
144
self.ls_equals('../.bzrignore\n'
150
147
'../subdir/b\n' ,
148
'..', working_dir='subdir')
152
149
self.ls_equals('../.bzrignore\0'
155
152
'../subdir/b\0' ,
153
'.. --null', working_dir='subdir')
157
154
self.ls_equals('? ../.bzrignore\n'
160
157
'V ../subdir/b\n' ,
158
'.. --verbose', working_dir='subdir')
162
159
self.run_bzr_error(['cannot specify both --from-root and PATH'],
160
'ls --from-root ..', working_dir='subdir')
165
162
def test_ls_revision(self):
166
163
self.wt.add(['a'])
173
170
self.ls_equals('V a\n'
174
171
, '--verbose --revision 1')
177
self.ls_equals('', '--revision 1')
173
self.ls_equals('', '--revision 1', working_dir='subdir')
179
175
def test_ls_branch(self):
180
176
"""If a branch is specified, files are listed from it"""
236
232
% (self.test_dir, self.test_dir),
237
233
self.test_dir, recursive=False)
235
def test_ls_directory(self):
236
"""Test --directory option"""
237
self.wt = self.make_branch_and_tree('dir')
238
self.build_tree(['dir/sub/', 'dir/sub/file'])
239
self.wt.add(['sub', 'sub/file'])
240
self.wt.commit('commit')
241
self.ls_equals('sub/\nsub/file\n', '--directory=dir')
242
self.ls_equals('sub/file\n', '-d dir sub')
245
class TestSmartServerLs(tests.TestCaseWithTransport):
247
def test_simple_ls(self):
248
self.setup_smart_server_with_call_log()
249
t = self.make_branch_and_tree('branch')
250
self.build_tree_contents([('branch/foo', 'thecontents')])
253
self.reset_smart_call_log()
254
out, err = self.run_bzr(['ls', self.get_url('branch')])
255
# This figure represent the amount of work to perform this use case. It
256
# is entirely ok to reduce this number if a test fails due to rpc_count
257
# being too low. If rpc_count increases, more network roundtrips have
258
# become necessary for this use case. Please do not adjust this number
259
# upwards without agreement from bzr's network support maintainers.
260
self.assertLength(6, self.hpss_calls)
261
self.assertLength(1, self.hpss_connections)
262
self.assertThat(self.hpss_calls, ContainsNoVfsCalls)