/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
6614.1.3 by Vincent Ladeuil
Fix assertEquals being deprecated by using assertEqual.
1
# Copyright (C) 2005-2012, 2016 Canonical Ltd
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
2
#
1185.50.9 by John Arbash Meinel
[bug 3632] Matthieu Moy- bzr cat should default to last revision
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.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
7
#
1185.50.9 by John Arbash Meinel
[bug 3632] Matthieu Moy- bzr cat should default to last revision
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.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
12
#
1185.50.9 by John Arbash Meinel
[bug 3632] Matthieu Moy- bzr cat should default to last revision
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
4183.7.1 by Sabin Iacob
update FSF mailing address
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
1185.50.9 by John Arbash Meinel
[bug 3632] Matthieu Moy- bzr cat should default to last revision
16
17
6622.1.29 by Jelmer Vernooij
Fix some more tests.
18
"""Black-box tests for brz cat.
1185.50.9 by John Arbash Meinel
[bug 3632] Matthieu Moy- bzr cat should default to last revision
19
"""
20
6624 by Jelmer Vernooij
Merge Python3 porting work ('py3 pokes')
21
from ... import tests
22
from ...transport import memory
4695.3.1 by Vincent Ladeuil
Fix test failures with no C extensions loaded.
23
24
25
class TestCat(tests.TestCaseWithTransport):
1185.50.9 by John Arbash Meinel
[bug 3632] Matthieu Moy- bzr cat should default to last revision
26
27
    def test_cat(self):
2664.13.1 by Daniel Watkins
tests.blackbox.test_cat now uses internals where appropriate.
28
        tree = self.make_branch_and_tree('branch')
6855.4.1 by Jelmer Vernooij
Yet more bees.
29
        self.build_tree_contents([('branch/a', b'foo\n')])
2664.13.1 by Daniel Watkins
tests.blackbox.test_cat now uses internals where appropriate.
30
        tree.add('a')
6622.1.29 by Jelmer Vernooij
Fix some more tests.
31
        # 'brz cat' without an option should cat the last revision
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
32
        self.run_bzr(['cat', 'a'], retcode=3, working_dir='branch')
2664.13.1 by Daniel Watkins
tests.blackbox.test_cat now uses internals where appropriate.
33
34
        tree.commit(message='1')
6855.4.1 by Jelmer Vernooij
Yet more bees.
35
        self.build_tree_contents([('branch/a', b'baz\n')])
2664.13.1 by Daniel Watkins
tests.blackbox.test_cat now uses internals where appropriate.
36
6614.1.3 by Vincent Ladeuil
Fix assertEquals being deprecated by using assertEqual.
37
        self.assertEqual('foo\n',
7143.15.2 by Jelmer Vernooij
Run autopep8.
38
                         self.run_bzr(['cat', 'a'], working_dir='branch')[0])
2664.13.1 by Daniel Watkins
tests.blackbox.test_cat now uses internals where appropriate.
39
5967.10.2 by Martin Pool
Re-add one out-of-process test for cat on Windows
40
        # On Windows, we used to have a bug where newlines got changed into
41
        # crlf, whereas cat ought to write out the file exactly as it's
42
        # recorded (by default.)  That problem can't be reproduced in-process,
7143.15.2 by Jelmer Vernooij
Run autopep8.
43
        # so we need just one test here that
7027.10.1 by Jelmer Vernooij
Various blackbox test fixes.
44
        self.assertEqual(b'foo\n',
7143.15.2 by Jelmer Vernooij
Run autopep8.
45
                         self.run_bzr_subprocess(['cat', 'a'],
46
                                                 working_dir='branch')[0])
5967.10.2 by Martin Pool
Re-add one out-of-process test for cat on Windows
47
2664.13.1 by Daniel Watkins
tests.blackbox.test_cat now uses internals where appropriate.
48
        tree.commit(message='2')
6614.1.3 by Vincent Ladeuil
Fix assertEquals being deprecated by using assertEqual.
49
        self.assertEqual(
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
50
            'baz\n', self.run_bzr(['cat', 'a'], working_dir='branch')[0])
6614.1.3 by Vincent Ladeuil
Fix assertEquals being deprecated by using assertEqual.
51
        self.assertEqual(
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
52
            'foo\n', self.run_bzr(['cat', 'a', '-r', '1'],
53
                                  working_dir='branch')[0])
6614.1.3 by Vincent Ladeuil
Fix assertEquals being deprecated by using assertEqual.
54
        self.assertEqual(
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
55
            'baz\n', self.run_bzr(['cat', 'a', '-r', '-1'],
56
                                  working_dir='branch')[0])
2664.13.1 by Daniel Watkins
tests.blackbox.test_cat now uses internals where appropriate.
57
2738.4.1 by Daniel Watkins
Merged original changes and tweaked cat.
58
        rev_id = tree.branch.last_revision()
2664.13.1 by Daniel Watkins
tests.blackbox.test_cat now uses internals where appropriate.
59
6614.1.3 by Vincent Ladeuil
Fix assertEquals being deprecated by using assertEqual.
60
        self.assertEqual(
7045.4.8 by Jelmer Vernooij
Fix another 128 tests on python 3.
61
            'baz\n', self.run_bzr(
62
                ['cat', 'a', '-r', 'revid:%s' % rev_id.decode('utf-8')],
63
                working_dir='branch')[0])
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
64
6614.1.3 by Vincent Ladeuil
Fix assertEquals being deprecated by using assertEqual.
65
        self.assertEqual('foo\n',
7143.15.2 by Jelmer Vernooij
Run autopep8.
66
                         self.run_bzr(['cat', 'branch/a',
67
                                       '-r', 'revno:1:branch'])[0])
2738.4.7 by Martin Pool
Fix up calls to run_bzr from test_cat
68
        self.run_bzr(['cat', 'a'], retcode=3)
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
69
        self.run_bzr(['cat', 'a', '-r', 'revno:1:branch-that-does-not-exist'],
70
                     retcode=3)
2664.13.1 by Daniel Watkins
tests.blackbox.test_cat now uses internals where appropriate.
71
2073.2.4 by wang
Fix syntax error in test.
72
    def test_cat_different_id(self):
2073.2.1 by wang
``bzr cat`` can look up contents of removed or renamed files. If the
73
        """'cat' works with old and new files"""
4695.3.2 by Vincent Ladeuil
Simplified and claried as per Robert's review.
74
        self.disable_missing_extensions_warning()
2073.2.4 by wang
Fix syntax error in test.
75
        tree = self.make_branch_and_tree('.')
2073.2.3 by wang
Change option name to --name-from-revision. Always make new tree the
76
        # the files are named after their path in the revision and
77
        # current trees later in the test case
78
        # a-rev-tree is special because it appears in both the revision
79
        # tree and the working tree
6855.4.1 by Jelmer Vernooij
Yet more bees.
80
        self.build_tree_contents([('a-rev-tree', b'foo\n'),
7143.15.2 by Jelmer Vernooij
Run autopep8.
81
                                  ('c-rev', b'baz\n'), ('d-rev', b'bar\n'), ('e-rev', b'qux\n')])
6874.2.1 by Jelmer Vernooij
Make Tree.iter_files_bytes() take paths rather than file_ids.
82
        with tree.lock_write():
4112.1.1 by Vincent Ladeuil
Fallback to old revision id if the current one doesn't exist in
83
            tree.add(['a-rev-tree', 'c-rev', 'd-rev', 'e-rev'])
6855.4.1 by Jelmer Vernooij
Yet more bees.
84
            tree.commit('add test files', rev_id=b'first')
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
85
            # remove currently uses self._write_inventory -
2255.7.70 by Robert Collins
Workaround WorkingTree4 not having a native remove() in test_cat.
86
            # work around that for now.
87
            tree.flush()
2073.2.3 by wang
Change option name to --name-from-revision. Always make new tree the
88
            tree.remove(['d-rev'])
89
            tree.rename_one('a-rev-tree', 'b-tree')
90
            tree.rename_one('c-rev', 'a-rev-tree')
4112.1.1 by Vincent Ladeuil
Fallback to old revision id if the current one doesn't exist in
91
            tree.rename_one('e-rev', 'old-rev')
6855.4.1 by Jelmer Vernooij
Yet more bees.
92
            self.build_tree_contents([('e-rev', b'new\n')])
4112.1.1 by Vincent Ladeuil
Fallback to old revision id if the current one doesn't exist in
93
            tree.add(['e-rev'])
2073.2.3 by wang
Change option name to --name-from-revision. Always make new tree the
94
2379.6.1 by Alexander Belchenko
blackbox: test_cat_different_id: calling bzr as another process require free lock on win32
95
        # 'b-tree' is not present in the old tree.
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
96
        self.run_bzr_error(["^brz: ERROR: u?'b-tree' "
97
                            "is not present in revision .+$"],
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
98
                           'cat b-tree --name-from-revision')
2379.6.1 by Alexander Belchenko
blackbox: test_cat_different_id: calling bzr as another process require free lock on win32
99
100
        # get to the old file automatically
5967.10.1 by Martin Pool
Stop unnecessary use of subprocesses in blackbox.test_cat: about 7x faster on wine
101
        out, err = self.run_bzr('cat d-rev')
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
102
        self.assertEqual('', err)
103
        self.assertEqual('bar\n', out)
2379.6.1 by Alexander Belchenko
blackbox: test_cat_different_id: calling bzr as another process require free lock on win32
104
2738.4.6 by Daniel Watkins
Rewrapped lines longer than 79 characters.
105
        out, err = \
7143.15.2 by Jelmer Vernooij
Run autopep8.
106
            self.run_bzr('cat a-rev-tree --name-from-revision')
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
107
        self.assertEqual('foo\n', out)
108
        self.assertEqual('', err)
2379.6.1 by Alexander Belchenko
blackbox: test_cat_different_id: calling bzr as another process require free lock on win32
109
5967.10.1 by Martin Pool
Stop unnecessary use of subprocesses in blackbox.test_cat: about 7x faster on wine
110
        out, err = self.run_bzr('cat a-rev-tree')
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
111
        self.assertEqual('baz\n', out)
112
        self.assertEqual('', err)
2379.6.1 by Alexander Belchenko
blackbox: test_cat_different_id: calling bzr as another process require free lock on win32
113
4112.1.1 by Vincent Ladeuil
Fallback to old revision id if the current one doesn't exist in
114
        # the actual file-id for e-rev doesn't exist in the old tree
5967.10.1 by Martin Pool
Stop unnecessary use of subprocesses in blackbox.test_cat: about 7x faster on wine
115
        out, err = self.run_bzr('cat e-rev -rrevid:first')
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
116
        self.assertEqual('qux\n', out)
117
        self.assertEqual('', err)
4112.1.1 by Vincent Ladeuil
Fallback to old revision id if the current one doesn't exist in
118
2158.1.1 by Wouter van Heyst
Fix #73500 mostly by catching a NotLocalUrl exception in cmd_cat.
119
    def test_remote_cat(self):
120
        wt = self.make_branch_and_tree('.')
2158.1.2 by Wouter van Heyst
Actually check if cat returns the right content.
121
        self.build_tree(['README'])
2158.1.1 by Wouter van Heyst
Fix #73500 mostly by catching a NotLocalUrl exception in cmd_cat.
122
        wt.add('README')
123
        wt.commit('Making sure there is a basis_tree available')
124
125
        url = self.get_readonly_url() + '/README'
5967.10.1 by Martin Pool
Stop unnecessary use of subprocesses in blackbox.test_cat: about 7x faster on wine
126
        out, err = self.run_bzr(['cat', url])
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
127
        self.assertEqual('contents of README\n', out)
2309.1.1 by James Westby
Allow bzr cat to be used against treeless repositories.
128
4948.4.1 by Andrew Bennetts
Fix ObjectNotLocked error in cmd_cat (and also release locks slightly sooner).
129
    def test_cat_branch_revspec(self):
130
        wt = self.make_branch_and_tree('a')
131
        self.build_tree(['a/README'])
132
        wt.add('README')
133
        wt.commit('Making sure there is a basis_tree available')
134
        wt = self.make_branch_and_tree('b')
135
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
136
        out, err = self.run_bzr(['cat', '-r', 'branch:../a', 'README'],
137
                                working_dir='b')
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
138
        self.assertEqual('contents of a/README\n', out)
4948.4.1 by Andrew Bennetts
Fix ObjectNotLocked error in cmd_cat (and also release locks slightly sooner).
139
3368.2.31 by Ian Clatworthy
add --filters option to cat command
140
    def test_cat_filters(self):
141
        wt = self.make_branch_and_tree('.')
142
        self.build_tree(['README'])
143
        wt.add('README')
144
        wt.commit('Making sure there is a basis_tree available')
145
        url = self.get_readonly_url() + '/README'
3368.2.48 by Ian Clatworthy
apply first round of poolie's review feedback
146
3368.2.31 by Ian Clatworthy
add --filters option to cat command
147
        # Test unfiltered output
5967.10.1 by Martin Pool
Stop unnecessary use of subprocesses in blackbox.test_cat: about 7x faster on wine
148
        out, err = self.run_bzr(['cat', url])
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
149
        self.assertEqual('contents of README\n', out)
3368.2.48 by Ian Clatworthy
apply first round of poolie's review feedback
150
151
        # Test --filters option is legal but has no impact if no filters
5967.10.1 by Martin Pool
Stop unnecessary use of subprocesses in blackbox.test_cat: about 7x faster on wine
152
        out, err = self.run_bzr(['cat', '--filters', url])
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
153
        self.assertEqual('contents of README\n', out)
3368.2.31 by Ian Clatworthy
add --filters option to cat command
154
3368.2.48 by Ian Clatworthy
apply first round of poolie's review feedback
155
    def test_cat_filters_applied(self):
156
        # Test filtering applied to output. This is tricky to do in a
157
        # subprocess because we really need to patch in a plugin that
158
        # registers the filters. Instead, we patch in a custom
159
        # filter_stack and use run_bzr() ...
6624 by Jelmer Vernooij
Merge Python3 porting work ('py3 pokes')
160
        from ..test_filters import _stack_2
161
        from ...tree import Tree
3368.2.48 by Ian Clatworthy
apply first round of poolie's review feedback
162
        wt = self.make_branch_and_tree('.')
163
        self.build_tree_contents([
6855.4.1 by Jelmer Vernooij
Yet more bees.
164
            ('README', b"junk\nline 1 of README\nline 2 of README\n"),
3368.2.48 by Ian Clatworthy
apply first round of poolie's review feedback
165
            ])
166
        wt.add('README')
167
        wt.commit('Making sure there is a basis_tree available')
168
        url = self.get_readonly_url() + '/README'
169
        real_content_filter_stack = Tree._content_filter_stack
7143.15.2 by Jelmer Vernooij
Run autopep8.
170
3368.2.48 by Ian Clatworthy
apply first round of poolie's review feedback
171
        def _custom_content_filter_stack(tree, path=None, file_id=None):
172
            return _stack_2
173
        Tree._content_filter_stack = _custom_content_filter_stack
174
        try:
175
            out, err = self.run_bzr(['cat', url, '--filters'])
176
            # The filter stack will remove the first line and swapcase the rest
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
177
            self.assertEqual('LINE 1 OF readme\nLINE 2 OF readme\n', out)
178
            self.assertEqual('', err)
3368.2.48 by Ian Clatworthy
apply first round of poolie's review feedback
179
        finally:
180
            Tree._content_filter_stack = real_content_filter_stack
181
2309.1.1 by James Westby
Allow bzr cat to be used against treeless repositories.
182
    def test_cat_no_working_tree(self):
183
        wt = self.make_branch_and_tree('.')
184
        self.build_tree(['README'])
185
        wt.add('README')
186
        wt.commit('Making sure there is a basis_tree available')
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
187
        wt.branch.controldir.destroy_workingtree()
2309.1.1 by James Westby
Allow bzr cat to be used against treeless repositories.
188
189
        url = self.get_readonly_url() + '/README'
5967.10.1 by Martin Pool
Stop unnecessary use of subprocesses in blackbox.test_cat: about 7x faster on wine
190
        out, err = self.run_bzr(['cat', url])
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
191
        self.assertEqual('contents of README\n', out)
2738.4.6 by Daniel Watkins
Rewrapped lines longer than 79 characters.
192
3063.4.2 by John Arbash Meinel
Fix 'nonexistent'
193
    def test_cat_nonexistent_branch(self):
5017.3.45 by Vincent Ladeuil
Move MemoryServer back into bzrlib.transport.memory as it's needed as soon as a MemoryTransport is used. Add a NEWS entry.
194
        self.vfs_transport_factory = memory.MemoryServer
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
195
        self.run_bzr_error(['^brz: ERROR: Not a branch'],
4702.2.1 by Vincent Ladeuil
Remove bogus config imports left in previous tweak
196
                           ['cat', self.get_url()])
5171.3.5 by Martin von Gagern
Add blackbox test for cat --directory.
197
198
    def test_cat_directory(self):
199
        wt = self.make_branch_and_tree('a')
200
        self.build_tree(['a/README'])
201
        wt.add('README')
202
        wt.commit('Making sure there is a basis_tree available')
203
5967.10.1 by Martin Pool
Stop unnecessary use of subprocesses in blackbox.test_cat: about 7x faster on wine
204
        out, err = self.run_bzr(['cat', '--directory=a', 'README'])
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
205
        self.assertEqual('contents of a/README\n', out)
5171.3.5 by Martin von Gagern
Add blackbox test for cat --directory.
206
207
    def test_cat_remote_directory(self):
208
        wt = self.make_branch_and_tree('a')
209
        self.build_tree(['a/README'])
210
        wt.add('README')
211
        wt.commit('Making sure there is a basis_tree available')
212
213
        url = self.get_readonly_url() + '/a'
5967.10.1 by Martin Pool
Stop unnecessary use of subprocesses in blackbox.test_cat: about 7x faster on wine
214
        out, err = self.run_bzr(['cat', '-d', url, 'README'])
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
215
        self.assertEqual('contents of a/README\n', out)