~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Joe Julian
  • Date: 2010-01-10 02:25:31 UTC
  • mto: (4634.119.7 2.0)
  • mto: This revision was merged to the branch mainline in revision 4959.
  • Revision ID: joe@julianfamily.org-20100110022531-wqk61rsagz8xsiga
Added MANIFEST.in to allow bdist_rpm to have all the required include files and tools. bdist_rpm will still fail to build correctly on some distributions due to a disttools bug http://bugs.python.org/issue644744

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2011 Canonical Ltd
 
1
# Copyright (C) 2005 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
19
20
"""
20
21
 
21
22
import os
22
 
 
23
 
from bzrlib import tests
24
 
from bzrlib.tests.matchers import ContainsNoVfsCalls
25
 
from bzrlib.transport import memory
26
 
 
27
 
 
28
 
class TestCat(tests.TestCaseWithTransport):
 
23
import sys
 
24
 
 
25
from bzrlib.tests.blackbox import TestCaseWithTransport
 
26
 
 
27
class TestCat(TestCaseWithTransport):
29
28
 
30
29
    def test_cat(self):
31
30
        tree = self.make_branch_and_tree('branch')
38
37
        tree.commit(message='1')
39
38
        self.build_tree_contents([('a', 'baz\n')])
40
39
 
41
 
        self.assertEquals(self.run_bzr(['cat', 'a'])[0], 'foo\n')
42
 
 
43
 
        # On Windows, we used to have a bug where newlines got changed into
44
 
        # crlf, whereas cat ought to write out the file exactly as it's
45
 
        # recorded (by default.)  That problem can't be reproduced in-process,
46
 
        # so we need just one test here that 
 
40
        # We use run_bzr_subprocess rather than run_bzr here so that we can
 
41
        # test mangling of line-endings on Windows.
47
42
        self.assertEquals(self.run_bzr_subprocess(['cat', 'a'])[0], 'foo\n')
48
43
 
49
44
        tree.commit(message='2')
50
 
        self.assertEquals(self.run_bzr(['cat', 'a'])[0], 'baz\n')
51
 
        self.assertEquals(self.run_bzr(
 
45
        self.assertEquals(self.run_bzr_subprocess(['cat', 'a'])[0], 'baz\n')
 
46
        self.assertEquals(self.run_bzr_subprocess(
52
47
            ['cat', 'a', '-r', '1'])[0],
53
48
            'foo\n')
54
 
        self.assertEquals(self.run_bzr(
 
49
        self.assertEquals(self.run_bzr_subprocess(
55
50
            ['cat', 'a', '-r', '-1'])[0],
56
51
            'baz\n')
57
52
 
58
53
        rev_id = tree.branch.last_revision()
59
54
 
60
 
        self.assertEquals(self.run_bzr(
 
55
        self.assertEquals(self.run_bzr_subprocess(
61
56
            ['cat', 'a', '-r', 'revid:%s' % rev_id])[0],
62
57
            'baz\n')
63
58
 
64
59
        os.chdir('..')
65
60
 
66
 
        self.assertEquals(self.run_bzr(
 
61
        self.assertEquals(self.run_bzr_subprocess(
67
62
            ['cat', 'branch/a', '-r', 'revno:1:branch'])[0],
68
63
            'foo\n')
69
64
        self.run_bzr(['cat', 'a'], retcode=3)
73
68
 
74
69
    def test_cat_different_id(self):
75
70
        """'cat' works with old and new files"""
76
 
        self.disable_missing_extensions_warning()
77
71
        tree = self.make_branch_and_tree('.')
78
72
        # the files are named after their path in the revision and
79
73
        # current trees later in the test case
104
98
                           'cat b-tree --name-from-revision')
105
99
 
106
100
        # get to the old file automatically
107
 
        out, err = self.run_bzr('cat d-rev')
 
101
        out, err = self.run_bzr_subprocess('cat d-rev')
108
102
        self.assertEqual('bar\n', out)
109
103
        self.assertEqual('', err)
110
104
 
111
105
        out, err = \
112
 
                self.run_bzr('cat a-rev-tree --name-from-revision')
 
106
                self.run_bzr_subprocess('cat a-rev-tree --name-from-revision')
113
107
        self.assertEqual('foo\n', out)
114
108
        self.assertEqual('', err)
115
109
 
116
 
        out, err = self.run_bzr('cat a-rev-tree')
 
110
        out, err = self.run_bzr_subprocess('cat a-rev-tree')
117
111
        self.assertEqual('baz\n', out)
118
112
        self.assertEqual('', err)
119
113
 
120
114
        # the actual file-id for e-rev doesn't exist in the old tree
121
 
        out, err = self.run_bzr('cat e-rev -rrevid:first')
 
115
        out, err = self.run_bzr_subprocess('cat e-rev -rrevid:first')
122
116
        self.assertEqual('qux\n', out)
123
117
        self.assertEqual('', err)
124
118
 
129
123
        wt.commit('Making sure there is a basis_tree available')
130
124
 
131
125
        url = self.get_readonly_url() + '/README'
132
 
        out, err = self.run_bzr(['cat', url])
 
126
        out, err = self.run_bzr_subprocess(['cat', url])
133
127
        self.assertEqual('contents of README\n', out)
134
128
 
135
 
    def test_cat_branch_revspec(self):
136
 
        wt = self.make_branch_and_tree('a')
137
 
        self.build_tree(['a/README'])
138
 
        wt.add('README')
139
 
        wt.commit('Making sure there is a basis_tree available')
140
 
        wt = self.make_branch_and_tree('b')
141
 
        os.chdir('b')
142
 
 
143
 
        out, err = self.run_bzr(
144
 
            ['cat', '-r', 'branch:../a', 'README'])
145
 
        self.assertEqual('contents of a/README\n', out)
146
 
 
147
129
    def test_cat_filters(self):
148
130
        wt = self.make_branch_and_tree('.')
149
131
        self.build_tree(['README'])
152
134
        url = self.get_readonly_url() + '/README'
153
135
 
154
136
        # Test unfiltered output
155
 
        out, err = self.run_bzr(['cat', url])
 
137
        out, err = self.run_bzr_subprocess(['cat', url])
156
138
        self.assertEqual('contents of README\n', out)
157
139
 
158
140
        # Test --filters option is legal but has no impact if no filters
159
 
        out, err = self.run_bzr(['cat', '--filters', url])
 
141
        out, err = self.run_bzr_subprocess(['cat', '--filters', url])
160
142
        self.assertEqual('contents of README\n', out)
161
143
 
162
144
    def test_cat_filters_applied(self):
196
178
        wt.branch.bzrdir.destroy_workingtree()
197
179
 
198
180
        url = self.get_readonly_url() + '/README'
199
 
        out, err = self.run_bzr(['cat', url])
 
181
        out, err = self.run_bzr_subprocess(['cat', url])
200
182
        self.assertEqual('contents of README\n', out)
201
183
 
202
184
    def test_cat_nonexistent_branch(self):
203
 
        self.vfs_transport_factory = memory.MemoryServer
204
 
        self.run_bzr_error(['^bzr: ERROR: Not a branch'],
205
 
                           ['cat', self.get_url()])
206
 
 
207
 
    def test_cat_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
 
        out, err = self.run_bzr(['cat', '--directory=a', 'README'])
214
 
        self.assertEqual('contents of a/README\n', out)
215
 
 
216
 
    def test_cat_remote_directory(self):
217
 
        wt = self.make_branch_and_tree('a')
218
 
        self.build_tree(['a/README'])
219
 
        wt.add('README')
220
 
        wt.commit('Making sure there is a basis_tree available')
221
 
 
222
 
        url = self.get_readonly_url() + '/a'
223
 
        out, err = self.run_bzr(['cat', '-d', url, 'README'])
224
 
        self.assertEqual('contents of a/README\n', out)
225
 
 
226
 
 
227
 
class TestSmartServerCat(tests.TestCaseWithTransport):
228
 
 
229
 
    def test_simple_branch_cat(self):
230
 
        self.setup_smart_server_with_call_log()
231
 
        t = self.make_branch_and_tree('branch')
232
 
        self.build_tree_contents([('branch/foo', 'thecontents')])
233
 
        t.add("foo")
234
 
        t.commit("message")
235
 
        self.reset_smart_call_log()
236
 
        out, err = self.run_bzr(['cat', "%s/foo" % self.get_url('branch')])
237
 
        # This figure represent the amount of work to perform this use case. It
238
 
        # is entirely ok to reduce this number if a test fails due to rpc_count
239
 
        # being too low. If rpc_count increases, more network roundtrips have
240
 
        # become necessary for this use case. Please do not adjust this number
241
 
        # upwards without agreement from bzr's network support maintainers.
242
 
        self.assertLength(9, self.hpss_calls)
243
 
        self.assertThat(self.hpss_calls, ContainsNoVfsCalls)
 
185
        if sys.platform == "win32":
 
186
            location = "C:/i/do/not/exist"
 
187
        else:
 
188
            location = "/i/do/not/exist"
 
189
        self.run_bzr_error(['^bzr: ERROR: Not a branch'], ['cat', location])