~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Aaron Bentley
  • Date: 2009-06-19 21:16:31 UTC
  • mto: This revision was merged to the branch mainline in revision 4481.
  • Revision ID: aaron@aaronbentley.com-20090619211631-4fnkv2uui98xj7ux
Provide control over switch and shelver messaging.

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.transport import memory
25
 
 
26
 
 
27
 
class TestCat(tests.TestCaseWithTransport):
 
23
import sys
 
24
 
 
25
from bzrlib.tests.blackbox import TestCaseWithTransport
 
26
 
 
27
class TestCat(TestCaseWithTransport):
28
28
 
29
29
    def test_cat(self):
30
30
        tree = self.make_branch_and_tree('branch')
37
37
        tree.commit(message='1')
38
38
        self.build_tree_contents([('a', 'baz\n')])
39
39
 
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 
 
40
        # We use run_bzr_subprocess rather than run_bzr here so that we can
 
41
        # test mangling of line-endings on Windows.
46
42
        self.assertEquals(self.run_bzr_subprocess(['cat', 'a'])[0], 'foo\n')
47
43
 
48
44
        tree.commit(message='2')
49
 
        self.assertEquals(self.run_bzr(['cat', 'a'])[0], 'baz\n')
50
 
        self.assertEquals(self.run_bzr(
 
45
        self.assertEquals(self.run_bzr_subprocess(['cat', 'a'])[0], 'baz\n')
 
46
        self.assertEquals(self.run_bzr_subprocess(
51
47
            ['cat', 'a', '-r', '1'])[0],
52
48
            'foo\n')
53
 
        self.assertEquals(self.run_bzr(
 
49
        self.assertEquals(self.run_bzr_subprocess(
54
50
            ['cat', 'a', '-r', '-1'])[0],
55
51
            'baz\n')
56
52
 
57
53
        rev_id = tree.branch.last_revision()
58
54
 
59
 
        self.assertEquals(self.run_bzr(
 
55
        self.assertEquals(self.run_bzr_subprocess(
60
56
            ['cat', 'a', '-r', 'revid:%s' % rev_id])[0],
61
57
            'baz\n')
62
58
 
63
59
        os.chdir('..')
64
60
 
65
 
        self.assertEquals(self.run_bzr(
 
61
        self.assertEquals(self.run_bzr_subprocess(
66
62
            ['cat', 'branch/a', '-r', 'revno:1:branch'])[0],
67
63
            'foo\n')
68
64
        self.run_bzr(['cat', 'a'], retcode=3)
72
68
 
73
69
    def test_cat_different_id(self):
74
70
        """'cat' works with old and new files"""
75
 
        self.disable_missing_extensions_warning()
76
71
        tree = self.make_branch_and_tree('.')
77
72
        # the files are named after their path in the revision and
78
73
        # current trees later in the test case
103
98
                           'cat b-tree --name-from-revision')
104
99
 
105
100
        # get to the old file automatically
106
 
        out, err = self.run_bzr('cat d-rev')
 
101
        out, err = self.run_bzr_subprocess('cat d-rev')
107
102
        self.assertEqual('bar\n', out)
108
103
        self.assertEqual('', err)
109
104
 
110
105
        out, err = \
111
 
                self.run_bzr('cat a-rev-tree --name-from-revision')
 
106
                self.run_bzr_subprocess('cat a-rev-tree --name-from-revision')
112
107
        self.assertEqual('foo\n', out)
113
108
        self.assertEqual('', err)
114
109
 
115
 
        out, err = self.run_bzr('cat a-rev-tree')
 
110
        out, err = self.run_bzr_subprocess('cat a-rev-tree')
116
111
        self.assertEqual('baz\n', out)
117
112
        self.assertEqual('', err)
118
113
 
119
114
        # 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')
 
115
        out, err = self.run_bzr_subprocess('cat e-rev -rrevid:first')
121
116
        self.assertEqual('qux\n', out)
122
117
        self.assertEqual('', err)
123
118
 
128
123
        wt.commit('Making sure there is a basis_tree available')
129
124
 
130
125
        url = self.get_readonly_url() + '/README'
131
 
        out, err = self.run_bzr(['cat', url])
 
126
        out, err = self.run_bzr_subprocess(['cat', url])
132
127
        self.assertEqual('contents of README\n', out)
133
128
 
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
129
    def test_cat_filters(self):
147
130
        wt = self.make_branch_and_tree('.')
148
131
        self.build_tree(['README'])
151
134
        url = self.get_readonly_url() + '/README'
152
135
 
153
136
        # Test unfiltered output
154
 
        out, err = self.run_bzr(['cat', url])
 
137
        out, err = self.run_bzr_subprocess(['cat', url])
155
138
        self.assertEqual('contents of README\n', out)
156
139
 
157
140
        # Test --filters option is legal but has no impact if no filters
158
 
        out, err = self.run_bzr(['cat', '--filters', url])
 
141
        out, err = self.run_bzr_subprocess(['cat', '--filters', url])
159
142
        self.assertEqual('contents of README\n', out)
160
143
 
161
144
    def test_cat_filters_applied(self):
195
178
        wt.branch.bzrdir.destroy_workingtree()
196
179
 
197
180
        url = self.get_readonly_url() + '/README'
198
 
        out, err = self.run_bzr(['cat', url])
 
181
        out, err = self.run_bzr_subprocess(['cat', url])
199
182
        self.assertEqual('contents of README\n', out)
200
183
 
201
184
    def test_cat_nonexistent_branch(self):
202
 
        self.vfs_transport_factory = memory.MemoryServer
203
 
        self.run_bzr_error(['^bzr: ERROR: Not a branch'],
204
 
                           ['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)
 
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])