/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 breezy/tests/blackbox/test_cat.py

  • Committer: Breezy landing bot
  • Author(s): Colin Watson
  • Date: 2020-11-16 21:47:08 UTC
  • mfrom: (7521.1.1 remove-lp-workaround)
  • Revision ID: breezy.the.bot@gmail.com-20201116214708-jos209mgxi41oy15
Remove breezy.git workaround for bazaar.launchpad.net.

Merged from https://code.launchpad.net/~cjwatson/brz/remove-lp-workaround/+merge/393710

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2012 Canonical Ltd
 
1
# Copyright (C) 2005-2012, 2016 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
15
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
 
18
 
"""Black-box tests for bzr cat.
 
18
"""Black-box tests for brz cat.
19
19
"""
20
20
 
21
 
from bzrlib import tests
22
 
from bzrlib.tests.matchers import ContainsNoVfsCalls
23
 
from bzrlib.transport import memory
 
21
from ... import tests
 
22
from ...transport import memory
24
23
 
25
24
 
26
25
class TestCat(tests.TestCaseWithTransport):
27
26
 
28
27
    def test_cat(self):
29
28
        tree = self.make_branch_and_tree('branch')
30
 
        self.build_tree_contents([('branch/a', 'foo\n')])
 
29
        self.build_tree_contents([('branch/a', b'foo\n')])
31
30
        tree.add('a')
32
 
        # 'bzr cat' without an option should cat the last revision
 
31
        # 'brz cat' without an option should cat the last revision
33
32
        self.run_bzr(['cat', 'a'], retcode=3, working_dir='branch')
34
33
 
35
34
        tree.commit(message='1')
36
 
        self.build_tree_contents([('branch/a', 'baz\n')])
 
35
        self.build_tree_contents([('branch/a', b'baz\n')])
37
36
 
38
 
        self.assertEquals('foo\n',
39
 
                          self.run_bzr(['cat', 'a'], working_dir='branch')[0])
 
37
        self.assertEqual('foo\n',
 
38
                         self.run_bzr(['cat', 'a'], working_dir='branch')[0])
40
39
 
41
40
        # On Windows, we used to have a bug where newlines got changed into
42
41
        # crlf, whereas cat ought to write out the file exactly as it's
43
42
        # recorded (by default.)  That problem can't be reproduced in-process,
44
 
        # so we need just one test here that 
45
 
        self.assertEquals('foo\n',
46
 
                          self.run_bzr_subprocess(['cat', 'a'],
47
 
                                                  working_dir='branch')[0])
 
43
        # so we need just one test here that
 
44
        self.assertEqual(b'foo\n',
 
45
                         self.run_bzr_subprocess(['cat', 'a'],
 
46
                                                 working_dir='branch')[0])
48
47
 
49
48
        tree.commit(message='2')
50
 
        self.assertEquals(
 
49
        self.assertEqual(
51
50
            'baz\n', self.run_bzr(['cat', 'a'], working_dir='branch')[0])
52
 
        self.assertEquals(
 
51
        self.assertEqual(
53
52
            'foo\n', self.run_bzr(['cat', 'a', '-r', '1'],
54
53
                                  working_dir='branch')[0])
55
 
        self.assertEquals(
 
54
        self.assertEqual(
56
55
            'baz\n', self.run_bzr(['cat', 'a', '-r', '-1'],
57
56
                                  working_dir='branch')[0])
58
57
 
59
58
        rev_id = tree.branch.last_revision()
60
59
 
61
 
        self.assertEquals(
62
 
            'baz\n', self.run_bzr(['cat', 'a', '-r', 'revid:%s' % rev_id],
63
 
                                  working_dir='branch')[0])
 
60
        self.assertEqual(
 
61
            'baz\n', self.run_bzr(
 
62
                ['cat', 'a', '-r', 'revid:%s' % rev_id.decode('utf-8')],
 
63
                working_dir='branch')[0])
64
64
 
65
 
        self.assertEquals('foo\n',
66
 
                          self.run_bzr(['cat', 'branch/a',
67
 
                                        '-r', 'revno:1:branch'])[0])
 
65
        self.assertEqual('foo\n',
 
66
                         self.run_bzr(['cat', 'branch/a',
 
67
                                       '-r', 'revno:1:branch'])[0])
68
68
        self.run_bzr(['cat', 'a'], retcode=3)
69
69
        self.run_bzr(['cat', 'a', '-r', 'revno:1:branch-that-does-not-exist'],
70
70
                     retcode=3)
77
77
        # current trees later in the test case
78
78
        # a-rev-tree is special because it appears in both the revision
79
79
        # 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')])
82
 
        tree.lock_write()
83
 
        try:
 
80
        self.build_tree_contents([('a-rev-tree', b'foo\n'),
 
81
                                  ('c-rev', b'baz\n'), ('d-rev', b'bar\n'), ('e-rev', b'qux\n')])
 
82
        with tree.lock_write():
84
83
            tree.add(['a-rev-tree', 'c-rev', 'd-rev', 'e-rev'])
85
 
            tree.commit('add test files', rev_id='first')
 
84
            tree.commit('add test files', rev_id=b'first')
86
85
            # remove currently uses self._write_inventory -
87
86
            # work around that for now.
88
87
            tree.flush()
90
89
            tree.rename_one('a-rev-tree', 'b-tree')
91
90
            tree.rename_one('c-rev', 'a-rev-tree')
92
91
            tree.rename_one('e-rev', 'old-rev')
93
 
            self.build_tree_contents([('e-rev', 'new\n')])
 
92
            self.build_tree_contents([('e-rev', b'new\n')])
94
93
            tree.add(['e-rev'])
95
 
        finally:
96
 
            # calling bzr as another process require free lock on win32
97
 
            tree.unlock()
98
94
 
99
95
        # 'b-tree' is not present in the old tree.
100
 
        self.run_bzr_error(["^bzr: ERROR: u?'b-tree' "
 
96
        self.run_bzr_error(["^brz: ERROR: u?'b-tree' "
101
97
                            "is not present in revision .+$"],
102
98
                           'cat b-tree --name-from-revision')
103
99
 
104
100
        # get to the old file automatically
105
101
        out, err = self.run_bzr('cat d-rev')
 
102
        self.assertEqual('', err)
106
103
        self.assertEqual('bar\n', out)
107
 
        self.assertEqual('', err)
108
104
 
109
105
        out, err = \
110
 
                self.run_bzr('cat a-rev-tree --name-from-revision')
 
106
            self.run_bzr('cat a-rev-tree --name-from-revision')
111
107
        self.assertEqual('foo\n', out)
112
108
        self.assertEqual('', err)
113
109
 
161
157
        # subprocess because we really need to patch in a plugin that
162
158
        # registers the filters. Instead, we patch in a custom
163
159
        # filter_stack and use run_bzr() ...
164
 
        from cStringIO import StringIO
165
 
        from bzrlib.commands import run_bzr
166
 
        from bzrlib.tests.test_filters import _stack_2
167
 
        from bzrlib.trace import mutter
168
 
        from bzrlib.tree import Tree
 
160
        from ..test_filters import _stack_2
 
161
        from ...tree import Tree
169
162
        wt = self.make_branch_and_tree('.')
170
163
        self.build_tree_contents([
171
 
            ('README', "junk\nline 1 of README\nline 2 of README\n"),
 
164
            ('README', b"junk\nline 1 of README\nline 2 of README\n"),
172
165
            ])
173
166
        wt.add('README')
174
167
        wt.commit('Making sure there is a basis_tree available')
175
168
        url = self.get_readonly_url() + '/README'
176
169
        real_content_filter_stack = Tree._content_filter_stack
 
170
 
177
171
        def _custom_content_filter_stack(tree, path=None, file_id=None):
178
172
            return _stack_2
179
173
        Tree._content_filter_stack = _custom_content_filter_stack
190
184
        self.build_tree(['README'])
191
185
        wt.add('README')
192
186
        wt.commit('Making sure there is a basis_tree available')
193
 
        wt.branch.bzrdir.destroy_workingtree()
 
187
        wt.branch.controldir.destroy_workingtree()
194
188
 
195
189
        url = self.get_readonly_url() + '/README'
196
190
        out, err = self.run_bzr(['cat', url])
198
192
 
199
193
    def test_cat_nonexistent_branch(self):
200
194
        self.vfs_transport_factory = memory.MemoryServer
201
 
        self.run_bzr_error(['^bzr: ERROR: Not a branch'],
 
195
        self.run_bzr_error(['^brz: ERROR: Not a branch'],
202
196
                           ['cat', self.get_url()])
203
197
 
204
198
    def test_cat_directory(self):
219
213
        url = self.get_readonly_url() + '/a'
220
214
        out, err = self.run_bzr(['cat', '-d', url, 'README'])
221
215
        self.assertEqual('contents of a/README\n', out)
222
 
 
223
 
 
224
 
class TestSmartServerCat(tests.TestCaseWithTransport):
225
 
 
226
 
    def test_simple_branch_cat(self):
227
 
        self.setup_smart_server_with_call_log()
228
 
        t = self.make_branch_and_tree('branch')
229
 
        self.build_tree_contents([('branch/foo', 'thecontents')])
230
 
        t.add("foo")
231
 
        t.commit("message")
232
 
        self.reset_smart_call_log()
233
 
        out, err = self.run_bzr(['cat', "%s/foo" % self.get_url('branch')])
234
 
        # This figure represent the amount of work to perform this use case. It
235
 
        # is entirely ok to reduce this number if a test fails due to rpc_count
236
 
        # being too low. If rpc_count increases, more network roundtrips have
237
 
        # become necessary for this use case. Please do not adjust this number
238
 
        # upwards without agreement from bzr's network support maintainers.
239
 
        self.assertLength(9, self.hpss_calls)
240
 
        self.assertLength(1, self.hpss_connections)
241
 
        self.assertThat(self.hpss_calls, ContainsNoVfsCalls)