/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: Jelmer Vernooij
  • Date: 2017-06-10 01:35:53 UTC
  • mto: (6670.4.8 move-bzr)
  • mto: This revision was merged to the branch mainline in revision 6681.
  • Revision ID: jelmer@jelmer.uk-20170610013553-560y7mn3su4pp763
Fix remaining tests.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2010 Canonical Ltd
2
 
# -*- coding: utf-8 -*-
 
1
# Copyright (C) 2005-2012, 2016 Canonical Ltd
3
2
#
4
3
# This program is free software; you can redistribute it and/or modify
5
4
# it under the terms of the GNU General Public License as published by
16
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
16
 
18
17
 
19
 
"""Black-box tests for bzr cat.
 
18
"""Black-box tests for brz cat.
20
19
"""
21
20
 
22
 
import os
23
 
 
24
 
from bzrlib import tests
25
 
from bzrlib.transport import memory
 
21
from ... import tests
 
22
from ..matchers import ContainsNoVfsCalls
 
23
from ...transport import memory
26
24
 
27
25
 
28
26
class TestCat(tests.TestCaseWithTransport):
31
29
        tree = self.make_branch_and_tree('branch')
32
30
        self.build_tree_contents([('branch/a', 'foo\n')])
33
31
        tree.add('a')
34
 
        os.chdir('branch')
35
 
        # 'bzr cat' without an option should cat the last revision
36
 
        self.run_bzr(['cat', 'a'], retcode=3)
 
32
        # 'brz cat' without an option should cat the last revision
 
33
        self.run_bzr(['cat', 'a'], retcode=3, working_dir='branch')
37
34
 
38
35
        tree.commit(message='1')
39
 
        self.build_tree_contents([('a', 'baz\n')])
40
 
 
41
 
        # We use run_bzr_subprocess rather than run_bzr here so that we can
42
 
        # test mangling of line-endings on Windows.
43
 
        self.assertEquals(self.run_bzr_subprocess(['cat', 'a'])[0], 'foo\n')
 
36
        self.build_tree_contents([('branch/a', 'baz\n')])
 
37
 
 
38
        self.assertEqual('foo\n',
 
39
                          self.run_bzr(['cat', 'a'], working_dir='branch')[0])
 
40
 
 
41
        # On Windows, we used to have a bug where newlines got changed into
 
42
        # crlf, whereas cat ought to write out the file exactly as it's
 
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
48
 
45
49
        tree.commit(message='2')
46
 
        self.assertEquals(self.run_bzr_subprocess(['cat', 'a'])[0], 'baz\n')
47
 
        self.assertEquals(self.run_bzr_subprocess(
48
 
            ['cat', 'a', '-r', '1'])[0],
49
 
            'foo\n')
50
 
        self.assertEquals(self.run_bzr_subprocess(
51
 
            ['cat', 'a', '-r', '-1'])[0],
52
 
            'baz\n')
 
50
        self.assertEqual(
 
51
            'baz\n', self.run_bzr(['cat', 'a'], working_dir='branch')[0])
 
52
        self.assertEqual(
 
53
            'foo\n', self.run_bzr(['cat', 'a', '-r', '1'],
 
54
                                  working_dir='branch')[0])
 
55
        self.assertEqual(
 
56
            'baz\n', self.run_bzr(['cat', 'a', '-r', '-1'],
 
57
                                  working_dir='branch')[0])
53
58
 
54
59
        rev_id = tree.branch.last_revision()
55
60
 
56
 
        self.assertEquals(self.run_bzr_subprocess(
57
 
            ['cat', 'a', '-r', 'revid:%s' % rev_id])[0],
58
 
            'baz\n')
59
 
 
60
 
        os.chdir('..')
61
 
 
62
 
        self.assertEquals(self.run_bzr_subprocess(
63
 
            ['cat', 'branch/a', '-r', 'revno:1:branch'])[0],
64
 
            'foo\n')
 
61
        self.assertEqual(
 
62
            'baz\n', self.run_bzr(['cat', 'a', '-r', 'revid:%s' % rev_id],
 
63
                                  working_dir='branch')[0])
 
64
 
 
65
        self.assertEqual('foo\n',
 
66
                          self.run_bzr(['cat', 'branch/a',
 
67
                                        '-r', 'revno:1:branch'])[0])
65
68
        self.run_bzr(['cat', 'a'], retcode=3)
66
 
        self.run_bzr(
67
 
                ['cat', 'a', '-r', 'revno:1:branch-that-does-not-exist'],
68
 
                retcode=3)
 
69
        self.run_bzr(['cat', 'a', '-r', 'revno:1:branch-that-does-not-exist'],
 
70
                     retcode=3)
69
71
 
70
72
    def test_cat_different_id(self):
71
73
        """'cat' works with old and new files"""
91
93
            self.build_tree_contents([('e-rev', 'new\n')])
92
94
            tree.add(['e-rev'])
93
95
        finally:
94
 
            # calling bzr as another process require free lock on win32
 
96
            # calling brz as another process require free lock on win32
95
97
            tree.unlock()
96
98
 
97
99
        # 'b-tree' is not present in the old tree.
98
 
        self.run_bzr_error(["^bzr: ERROR: u?'b-tree' "
 
100
        self.run_bzr_error(["^brz: ERROR: u?'b-tree' "
99
101
                            "is not present in revision .+$"],
100
102
                           'cat b-tree --name-from-revision')
101
103
 
102
104
        # get to the old file automatically
103
 
        out, err = self.run_bzr_subprocess('cat d-rev')
 
105
        out, err = self.run_bzr('cat d-rev')
104
106
        self.assertEqual('bar\n', out)
105
107
        self.assertEqual('', err)
106
108
 
107
109
        out, err = \
108
 
                self.run_bzr_subprocess('cat a-rev-tree --name-from-revision')
 
110
                self.run_bzr('cat a-rev-tree --name-from-revision')
109
111
        self.assertEqual('foo\n', out)
110
112
        self.assertEqual('', err)
111
113
 
112
 
        out, err = self.run_bzr_subprocess('cat a-rev-tree')
 
114
        out, err = self.run_bzr('cat a-rev-tree')
113
115
        self.assertEqual('baz\n', out)
114
116
        self.assertEqual('', err)
115
117
 
116
118
        # the actual file-id for e-rev doesn't exist in the old tree
117
 
        out, err = self.run_bzr_subprocess('cat e-rev -rrevid:first')
 
119
        out, err = self.run_bzr('cat e-rev -rrevid:first')
118
120
        self.assertEqual('qux\n', out)
119
121
        self.assertEqual('', err)
120
122
 
125
127
        wt.commit('Making sure there is a basis_tree available')
126
128
 
127
129
        url = self.get_readonly_url() + '/README'
128
 
        out, err = self.run_bzr_subprocess(['cat', url])
 
130
        out, err = self.run_bzr(['cat', url])
129
131
        self.assertEqual('contents of README\n', out)
130
132
 
131
133
    def test_cat_branch_revspec(self):
134
136
        wt.add('README')
135
137
        wt.commit('Making sure there is a basis_tree available')
136
138
        wt = self.make_branch_and_tree('b')
137
 
        os.chdir('b')
138
139
 
139
 
        out, err = self.run_bzr_subprocess(
140
 
            ['cat', '-r', 'branch:../a', 'README'])
 
140
        out, err = self.run_bzr(['cat', '-r', 'branch:../a', 'README'],
 
141
                                working_dir='b')
141
142
        self.assertEqual('contents of a/README\n', out)
142
143
 
143
144
    def test_cat_filters(self):
148
149
        url = self.get_readonly_url() + '/README'
149
150
 
150
151
        # Test unfiltered output
151
 
        out, err = self.run_bzr_subprocess(['cat', url])
 
152
        out, err = self.run_bzr(['cat', url])
152
153
        self.assertEqual('contents of README\n', out)
153
154
 
154
155
        # Test --filters option is legal but has no impact if no filters
155
 
        out, err = self.run_bzr_subprocess(['cat', '--filters', url])
 
156
        out, err = self.run_bzr(['cat', '--filters', url])
156
157
        self.assertEqual('contents of README\n', out)
157
158
 
158
159
    def test_cat_filters_applied(self):
160
161
        # subprocess because we really need to patch in a plugin that
161
162
        # registers the filters. Instead, we patch in a custom
162
163
        # filter_stack and use run_bzr() ...
163
 
        from cStringIO import StringIO
164
 
        from bzrlib.commands import run_bzr
165
 
        from bzrlib.tests.test_filters import _stack_2
166
 
        from bzrlib.trace import mutter
167
 
        from bzrlib.tree import Tree
 
164
        from ..test_filters import _stack_2
 
165
        from ...tree import Tree
168
166
        wt = self.make_branch_and_tree('.')
169
167
        self.build_tree_contents([
170
168
            ('README', "junk\nline 1 of README\nline 2 of README\n"),
189
187
        self.build_tree(['README'])
190
188
        wt.add('README')
191
189
        wt.commit('Making sure there is a basis_tree available')
192
 
        wt.branch.bzrdir.destroy_workingtree()
 
190
        wt.branch.controldir.destroy_workingtree()
193
191
 
194
192
        url = self.get_readonly_url() + '/README'
195
 
        out, err = self.run_bzr_subprocess(['cat', url])
 
193
        out, err = self.run_bzr(['cat', url])
196
194
        self.assertEqual('contents of README\n', out)
197
195
 
198
196
    def test_cat_nonexistent_branch(self):
199
197
        self.vfs_transport_factory = memory.MemoryServer
200
 
        self.run_bzr_error(['^bzr: ERROR: Not a branch'],
 
198
        self.run_bzr_error(['^brz: ERROR: Not a branch'],
201
199
                           ['cat', self.get_url()])
 
200
 
 
201
    def test_cat_directory(self):
 
202
        wt = self.make_branch_and_tree('a')
 
203
        self.build_tree(['a/README'])
 
204
        wt.add('README')
 
205
        wt.commit('Making sure there is a basis_tree available')
 
206
 
 
207
        out, err = self.run_bzr(['cat', '--directory=a', 'README'])
 
208
        self.assertEqual('contents of a/README\n', out)
 
209
 
 
210
    def test_cat_remote_directory(self):
 
211
        wt = self.make_branch_and_tree('a')
 
212
        self.build_tree(['a/README'])
 
213
        wt.add('README')
 
214
        wt.commit('Making sure there is a basis_tree available')
 
215
 
 
216
        url = self.get_readonly_url() + '/a'
 
217
        out, err = self.run_bzr(['cat', '-d', url, 'README'])
 
218
        self.assertEqual('contents of a/README\n', out)
 
219
 
 
220
 
 
221
class TestSmartServerCat(tests.TestCaseWithTransport):
 
222
 
 
223
    def test_simple_branch_cat(self):
 
224
        self.setup_smart_server_with_call_log()
 
225
        t = self.make_branch_and_tree('branch')
 
226
        self.build_tree_contents([('branch/foo', 'thecontents')])
 
227
        t.add("foo")
 
228
        t.commit("message")
 
229
        self.reset_smart_call_log()
 
230
        out, err = self.run_bzr(['cat', "%s/foo" % self.get_url('branch')])
 
231
        # This figure represent the amount of work to perform this use case. It
 
232
        # is entirely ok to reduce this number if a test fails due to rpc_count
 
233
        # being too low. If rpc_count increases, more network roundtrips have
 
234
        # become necessary for this use case. Please do not adjust this number
 
235
        # upwards without agreement from bzr's network support maintainers.
 
236
        self.assertLength(9, self.hpss_calls)
 
237
        self.assertLength(1, self.hpss_connections)
 
238
        self.assertThat(self.hpss_calls, ContainsNoVfsCalls)