~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/blackbox/test_cat.py

  • Committer: Andrew Bennetts
  • Date: 2010-10-08 08:15:14 UTC
  • mto: This revision was merged to the branch mainline in revision 5498.
  • Revision ID: andrew.bennetts@canonical.com-20101008081514-dviqzrdfwyzsqbz2
Split NEWS into per-release doc/en/release-notes/bzr-*.txt

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2012, 2016 Canonical Ltd
 
1
# Copyright (C) 2005-2010 Canonical Ltd
 
2
# -*- coding: utf-8 -*-
2
3
#
3
4
# This program is free software; you can redistribute it and/or modify
4
5
# it under the terms of the GNU General Public License as published by
18
19
"""Black-box tests for bzr cat.
19
20
"""
20
21
 
 
22
import os
 
23
 
21
24
from bzrlib import tests
22
 
from bzrlib.tests.matchers import ContainsNoVfsCalls
23
25
from bzrlib.transport import memory
24
26
 
25
27
 
29
31
        tree = self.make_branch_and_tree('branch')
30
32
        self.build_tree_contents([('branch/a', 'foo\n')])
31
33
        tree.add('a')
 
34
        os.chdir('branch')
32
35
        # 'bzr cat' without an option should cat the last revision
33
 
        self.run_bzr(['cat', 'a'], retcode=3, working_dir='branch')
 
36
        self.run_bzr(['cat', 'a'], retcode=3)
34
37
 
35
38
        tree.commit(message='1')
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])
 
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')
48
44
 
49
45
        tree.commit(message='2')
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])
 
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')
58
53
 
59
54
        rev_id = tree.branch.last_revision()
60
55
 
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])
 
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')
68
65
        self.run_bzr(['cat', 'a'], retcode=3)
69
 
        self.run_bzr(['cat', 'a', '-r', 'revno:1:branch-that-does-not-exist'],
70
 
                     retcode=3)
 
66
        self.run_bzr(
 
67
                ['cat', 'a', '-r', 'revno:1:branch-that-does-not-exist'],
 
68
                retcode=3)
71
69
 
72
70
    def test_cat_different_id(self):
73
71
        """'cat' works with old and new files"""
102
100
                           'cat b-tree --name-from-revision')
103
101
 
104
102
        # get to the old file automatically
105
 
        out, err = self.run_bzr('cat d-rev')
 
103
        out, err = self.run_bzr_subprocess('cat d-rev')
106
104
        self.assertEqual('bar\n', out)
107
105
        self.assertEqual('', err)
108
106
 
109
107
        out, err = \
110
 
                self.run_bzr('cat a-rev-tree --name-from-revision')
 
108
                self.run_bzr_subprocess('cat a-rev-tree --name-from-revision')
111
109
        self.assertEqual('foo\n', out)
112
110
        self.assertEqual('', err)
113
111
 
114
 
        out, err = self.run_bzr('cat a-rev-tree')
 
112
        out, err = self.run_bzr_subprocess('cat a-rev-tree')
115
113
        self.assertEqual('baz\n', out)
116
114
        self.assertEqual('', err)
117
115
 
118
116
        # the actual file-id for e-rev doesn't exist in the old tree
119
 
        out, err = self.run_bzr('cat e-rev -rrevid:first')
 
117
        out, err = self.run_bzr_subprocess('cat e-rev -rrevid:first')
120
118
        self.assertEqual('qux\n', out)
121
119
        self.assertEqual('', err)
122
120
 
127
125
        wt.commit('Making sure there is a basis_tree available')
128
126
 
129
127
        url = self.get_readonly_url() + '/README'
130
 
        out, err = self.run_bzr(['cat', url])
 
128
        out, err = self.run_bzr_subprocess(['cat', url])
131
129
        self.assertEqual('contents of README\n', out)
132
130
 
133
131
    def test_cat_branch_revspec(self):
136
134
        wt.add('README')
137
135
        wt.commit('Making sure there is a basis_tree available')
138
136
        wt = self.make_branch_and_tree('b')
 
137
        os.chdir('b')
139
138
 
140
 
        out, err = self.run_bzr(['cat', '-r', 'branch:../a', 'README'],
141
 
                                working_dir='b')
 
139
        out, err = self.run_bzr_subprocess(
 
140
            ['cat', '-r', 'branch:../a', 'README'])
142
141
        self.assertEqual('contents of a/README\n', out)
143
142
 
144
143
    def test_cat_filters(self):
149
148
        url = self.get_readonly_url() + '/README'
150
149
 
151
150
        # Test unfiltered output
152
 
        out, err = self.run_bzr(['cat', url])
 
151
        out, err = self.run_bzr_subprocess(['cat', url])
153
152
        self.assertEqual('contents of README\n', out)
154
153
 
155
154
        # Test --filters option is legal but has no impact if no filters
156
 
        out, err = self.run_bzr(['cat', '--filters', url])
 
155
        out, err = self.run_bzr_subprocess(['cat', '--filters', url])
157
156
        self.assertEqual('contents of README\n', out)
158
157
 
159
158
    def test_cat_filters_applied(self):
193
192
        wt.branch.bzrdir.destroy_workingtree()
194
193
 
195
194
        url = self.get_readonly_url() + '/README'
196
 
        out, err = self.run_bzr(['cat', url])
 
195
        out, err = self.run_bzr_subprocess(['cat', url])
197
196
        self.assertEqual('contents of README\n', out)
198
197
 
199
198
    def test_cat_nonexistent_branch(self):
207
206
        wt.add('README')
208
207
        wt.commit('Making sure there is a basis_tree available')
209
208
 
210
 
        out, err = self.run_bzr(['cat', '--directory=a', 'README'])
 
209
        out, err = self.run_bzr_subprocess(['cat', '--directory=a', 'README'])
211
210
        self.assertEqual('contents of a/README\n', out)
212
211
 
213
212
    def test_cat_remote_directory(self):
217
216
        wt.commit('Making sure there is a basis_tree available')
218
217
 
219
218
        url = self.get_readonly_url() + '/a'
220
 
        out, err = self.run_bzr(['cat', '-d', url, 'README'])
 
219
        out, err = self.run_bzr_subprocess(['cat', '-d', url, 'README'])
221
220
        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)