~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Robert Collins
  • Date: 2009-12-16 22:29:31 UTC
  • mto: This revision was merged to the branch mainline in revision 4920.
  • Revision ID: robertc@robertcollins.net-20091216222931-wbbn5ey4mwmpatwd
Review feedback.

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
 
23
import sys
22
24
 
23
25
from bzrlib import tests
24
 
from bzrlib.transport import memory
25
26
 
26
27
 
27
28
class TestCat(tests.TestCaseWithTransport):
37
38
        tree.commit(message='1')
38
39
        self.build_tree_contents([('a', 'baz\n')])
39
40
 
40
 
        self.assertEquals(self.run_bzr(['cat', 'a'])[0], 'foo\n')
41
 
 
42
 
        # On Windows, we used to have a bug where newlines got changed into
43
 
        # crlf, whereas cat ought to write out the file exactly as it's
44
 
        # recorded (by default.)  That problem can't be reproduced in-process,
45
 
        # so we need just one test here that 
 
41
        # We use run_bzr_subprocess rather than run_bzr here so that we can
 
42
        # test mangling of line-endings on Windows.
46
43
        self.assertEquals(self.run_bzr_subprocess(['cat', 'a'])[0], 'foo\n')
47
44
 
48
45
        tree.commit(message='2')
49
 
        self.assertEquals(self.run_bzr(['cat', 'a'])[0], 'baz\n')
50
 
        self.assertEquals(self.run_bzr(
 
46
        self.assertEquals(self.run_bzr_subprocess(['cat', 'a'])[0], 'baz\n')
 
47
        self.assertEquals(self.run_bzr_subprocess(
51
48
            ['cat', 'a', '-r', '1'])[0],
52
49
            'foo\n')
53
 
        self.assertEquals(self.run_bzr(
 
50
        self.assertEquals(self.run_bzr_subprocess(
54
51
            ['cat', 'a', '-r', '-1'])[0],
55
52
            'baz\n')
56
53
 
57
54
        rev_id = tree.branch.last_revision()
58
55
 
59
 
        self.assertEquals(self.run_bzr(
 
56
        self.assertEquals(self.run_bzr_subprocess(
60
57
            ['cat', 'a', '-r', 'revid:%s' % rev_id])[0],
61
58
            'baz\n')
62
59
 
63
60
        os.chdir('..')
64
61
 
65
 
        self.assertEquals(self.run_bzr(
 
62
        self.assertEquals(self.run_bzr_subprocess(
66
63
            ['cat', 'branch/a', '-r', 'revno:1:branch'])[0],
67
64
            'foo\n')
68
65
        self.run_bzr(['cat', 'a'], retcode=3)
103
100
                           'cat b-tree --name-from-revision')
104
101
 
105
102
        # get to the old file automatically
106
 
        out, err = self.run_bzr('cat d-rev')
 
103
        out, err = self.run_bzr_subprocess('cat d-rev')
107
104
        self.assertEqual('bar\n', out)
108
105
        self.assertEqual('', err)
109
106
 
110
107
        out, err = \
111
 
                self.run_bzr('cat a-rev-tree --name-from-revision')
 
108
                self.run_bzr_subprocess('cat a-rev-tree --name-from-revision')
112
109
        self.assertEqual('foo\n', out)
113
110
        self.assertEqual('', err)
114
111
 
115
 
        out, err = self.run_bzr('cat a-rev-tree')
 
112
        out, err = self.run_bzr_subprocess('cat a-rev-tree')
116
113
        self.assertEqual('baz\n', out)
117
114
        self.assertEqual('', err)
118
115
 
119
116
        # the actual file-id for e-rev doesn't exist in the old tree
120
 
        out, err = self.run_bzr('cat e-rev -rrevid:first')
 
117
        out, err = self.run_bzr_subprocess('cat e-rev -rrevid:first')
121
118
        self.assertEqual('qux\n', out)
122
119
        self.assertEqual('', err)
123
120
 
128
125
        wt.commit('Making sure there is a basis_tree available')
129
126
 
130
127
        url = self.get_readonly_url() + '/README'
131
 
        out, err = self.run_bzr(['cat', url])
 
128
        out, err = self.run_bzr_subprocess(['cat', url])
132
129
        self.assertEqual('contents of README\n', out)
133
130
 
134
 
    def test_cat_branch_revspec(self):
135
 
        wt = self.make_branch_and_tree('a')
136
 
        self.build_tree(['a/README'])
137
 
        wt.add('README')
138
 
        wt.commit('Making sure there is a basis_tree available')
139
 
        wt = self.make_branch_and_tree('b')
140
 
        os.chdir('b')
141
 
 
142
 
        out, err = self.run_bzr(
143
 
            ['cat', '-r', 'branch:../a', 'README'])
144
 
        self.assertEqual('contents of a/README\n', out)
145
 
 
146
131
    def test_cat_filters(self):
147
132
        wt = self.make_branch_and_tree('.')
148
133
        self.build_tree(['README'])
151
136
        url = self.get_readonly_url() + '/README'
152
137
 
153
138
        # Test unfiltered output
154
 
        out, err = self.run_bzr(['cat', url])
 
139
        out, err = self.run_bzr_subprocess(['cat', url])
155
140
        self.assertEqual('contents of README\n', out)
156
141
 
157
142
        # Test --filters option is legal but has no impact if no filters
158
 
        out, err = self.run_bzr(['cat', '--filters', url])
 
143
        out, err = self.run_bzr_subprocess(['cat', '--filters', url])
159
144
        self.assertEqual('contents of README\n', out)
160
145
 
161
146
    def test_cat_filters_applied(self):
195
180
        wt.branch.bzrdir.destroy_workingtree()
196
181
 
197
182
        url = self.get_readonly_url() + '/README'
198
 
        out, err = self.run_bzr(['cat', url])
 
183
        out, err = self.run_bzr_subprocess(['cat', url])
199
184
        self.assertEqual('contents of README\n', out)
200
185
 
201
186
    def test_cat_nonexistent_branch(self):
202
 
        self.vfs_transport_factory = memory.MemoryServer
 
187
        self.vfs_transport_factory = tests.MemoryServer
203
188
        self.run_bzr_error(['^bzr: ERROR: Not a branch'],
204
189
                           ['cat', self.get_url()])
205
 
 
206
 
    def test_cat_directory(self):
207
 
        wt = self.make_branch_and_tree('a')
208
 
        self.build_tree(['a/README'])
209
 
        wt.add('README')
210
 
        wt.commit('Making sure there is a basis_tree available')
211
 
 
212
 
        out, err = self.run_bzr(['cat', '--directory=a', 'README'])
213
 
        self.assertEqual('contents of a/README\n', out)
214
 
 
215
 
    def test_cat_remote_directory(self):
216
 
        wt = self.make_branch_and_tree('a')
217
 
        self.build_tree(['a/README'])
218
 
        wt.add('README')
219
 
        wt.commit('Making sure there is a basis_tree available')
220
 
 
221
 
        url = self.get_readonly_url() + '/a'
222
 
        out, err = self.run_bzr(['cat', '-d', url, 'README'])
223
 
        self.assertEqual('contents of a/README\n', out)