28
28
def test_cat(self):
29
29
tree = self.make_branch_and_tree('branch')
30
self.build_tree_contents([('branch/a', 'foo\n')])
30
self.build_tree_contents([('branch/a', b'foo\n')])
32
32
# 'brz cat' without an option should cat the last revision
33
33
self.run_bzr(['cat', 'a'], retcode=3, working_dir='branch')
35
35
tree.commit(message='1')
36
self.build_tree_contents([('branch/a', 'baz\n')])
36
self.build_tree_contents([('branch/a', b'baz\n')])
38
38
self.assertEqual('foo\n',
39
self.run_bzr(['cat', 'a'], working_dir='branch')[0])
39
self.run_bzr(['cat', 'a'], working_dir='branch')[0])
41
41
# On Windows, we used to have a bug where newlines got changed into
42
42
# crlf, whereas cat ought to write out the file exactly as it's
43
43
# recorded (by default.) That problem can't be reproduced in-process,
44
# so we need just one test here that
45
self.assertEqual('foo\n',
46
self.run_bzr_subprocess(['cat', 'a'],
47
working_dir='branch')[0])
44
# so we need just one test here that
45
self.assertEqual(b'foo\n',
46
self.run_bzr_subprocess(['cat', 'a'],
47
working_dir='branch')[0])
49
49
tree.commit(message='2')
59
59
rev_id = tree.branch.last_revision()
62
'baz\n', self.run_bzr(['cat', 'a', '-r', 'revid:%s' % rev_id],
63
working_dir='branch')[0])
62
'baz\n', self.run_bzr(
63
['cat', 'a', '-r', 'revid:%s' % rev_id.decode('utf-8')],
64
working_dir='branch')[0])
65
66
self.assertEqual('foo\n',
66
self.run_bzr(['cat', 'branch/a',
67
'-r', 'revno:1:branch'])[0])
67
self.run_bzr(['cat', 'branch/a',
68
'-r', 'revno:1:branch'])[0])
68
69
self.run_bzr(['cat', 'a'], retcode=3)
69
70
self.run_bzr(['cat', 'a', '-r', 'revno:1:branch-that-does-not-exist'],
77
78
# current trees later in the test case
78
79
# a-rev-tree is special because it appears in both the revision
79
80
# tree and the working tree
80
self.build_tree_contents([('a-rev-tree', 'foo\n'),
81
('c-rev', 'baz\n'), ('d-rev', 'bar\n'), ('e-rev', 'qux\n')])
81
self.build_tree_contents([('a-rev-tree', b'foo\n'),
82
('c-rev', b'baz\n'), ('d-rev', b'bar\n'), ('e-rev', b'qux\n')])
83
with tree.lock_write():
84
84
tree.add(['a-rev-tree', 'c-rev', 'd-rev', 'e-rev'])
85
tree.commit('add test files', rev_id='first')
85
tree.commit('add test files', rev_id=b'first')
86
86
# remove currently uses self._write_inventory -
87
87
# work around that for now.
90
90
tree.rename_one('a-rev-tree', 'b-tree')
91
91
tree.rename_one('c-rev', 'a-rev-tree')
92
92
tree.rename_one('e-rev', 'old-rev')
93
self.build_tree_contents([('e-rev', 'new\n')])
93
self.build_tree_contents([('e-rev', b'new\n')])
94
94
tree.add(['e-rev'])
96
# calling brz as another process require free lock on win32
99
96
# 'b-tree' is not present in the old tree.
100
97
self.run_bzr_error(["^brz: ERROR: u?'b-tree' "
104
101
# get to the old file automatically
105
102
out, err = self.run_bzr('cat d-rev')
103
self.assertEqual('', err)
106
104
self.assertEqual('bar\n', out)
107
self.assertEqual('', err)
110
self.run_bzr('cat a-rev-tree --name-from-revision')
107
self.run_bzr('cat a-rev-tree --name-from-revision')
111
108
self.assertEqual('foo\n', out)
112
109
self.assertEqual('', err)
165
162
from ...tree import Tree
166
163
wt = self.make_branch_and_tree('.')
167
164
self.build_tree_contents([
168
('README', "junk\nline 1 of README\nline 2 of README\n"),
165
('README', b"junk\nline 1 of README\nline 2 of README\n"),
171
168
wt.commit('Making sure there is a basis_tree available')
172
169
url = self.get_readonly_url() + '/README'
173
170
real_content_filter_stack = Tree._content_filter_stack
174
172
def _custom_content_filter_stack(tree, path=None, file_id=None):
176
174
Tree._content_filter_stack = _custom_content_filter_stack
223
221
def test_simple_branch_cat(self):
224
222
self.setup_smart_server_with_call_log()
225
223
t = self.make_branch_and_tree('branch')
226
self.build_tree_contents([('branch/foo', 'thecontents')])
224
self.build_tree_contents([('branch/foo', b'thecontents')])
228
226
t.commit("message")
229
227
self.reset_smart_call_log()