~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2011-06-30 18:28:17 UTC
  • mfrom: (5967.10.2 test-cat)
  • Revision ID: pqm@pqm.ubuntu.com-20110630182817-83a5q9r9rxfkdn8r
(mbp) don't use subprocesses for testing cat (Martin Pool)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2012 Canonical Ltd
 
1
# Copyright (C) 2005-2011 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
18
18
"""Black-box tests for bzr cat.
19
19
"""
20
20
 
 
21
import os
 
22
 
21
23
from bzrlib import tests
22
 
from bzrlib.tests.matchers import ContainsNoVfsCalls
23
24
from bzrlib.transport import memory
24
25
 
25
26
 
29
30
        tree = self.make_branch_and_tree('branch')
30
31
        self.build_tree_contents([('branch/a', 'foo\n')])
31
32
        tree.add('a')
 
33
        os.chdir('branch')
32
34
        # 'bzr cat' without an option should cat the last revision
33
 
        self.run_bzr(['cat', 'a'], retcode=3, working_dir='branch')
 
35
        self.run_bzr(['cat', 'a'], retcode=3)
34
36
 
35
37
        tree.commit(message='1')
36
 
        self.build_tree_contents([('branch/a', 'baz\n')])
 
38
        self.build_tree_contents([('a', 'baz\n')])
37
39
 
38
 
        self.assertEquals('foo\n',
39
 
                          self.run_bzr(['cat', 'a'], working_dir='branch')[0])
 
40
        self.assertEquals(self.run_bzr(['cat', 'a'])[0], 'foo\n')
40
41
 
41
42
        # On Windows, we used to have a bug where newlines got changed into
42
43
        # crlf, whereas cat ought to write out the file exactly as it's
43
44
        # recorded (by default.)  That problem can't be reproduced in-process,
44
45
        # so we need just one test here that 
45
 
        self.assertEquals('foo\n',
46
 
                          self.run_bzr_subprocess(['cat', 'a'],
47
 
                                                  working_dir='branch')[0])
 
46
        self.assertEquals(self.run_bzr_subprocess(['cat', 'a'])[0], 'foo\n')
48
47
 
49
48
        tree.commit(message='2')
50
 
        self.assertEquals(
51
 
            'baz\n', self.run_bzr(['cat', 'a'], working_dir='branch')[0])
52
 
        self.assertEquals(
53
 
            'foo\n', self.run_bzr(['cat', 'a', '-r', '1'],
54
 
                                  working_dir='branch')[0])
55
 
        self.assertEquals(
56
 
            'baz\n', self.run_bzr(['cat', 'a', '-r', '-1'],
57
 
                                  working_dir='branch')[0])
 
49
        self.assertEquals(self.run_bzr(['cat', 'a'])[0], 'baz\n')
 
50
        self.assertEquals(self.run_bzr(
 
51
            ['cat', 'a', '-r', '1'])[0],
 
52
            'foo\n')
 
53
        self.assertEquals(self.run_bzr(
 
54
            ['cat', 'a', '-r', '-1'])[0],
 
55
            'baz\n')
58
56
 
59
57
        rev_id = tree.branch.last_revision()
60
58
 
61
 
        self.assertEquals(
62
 
            'baz\n', self.run_bzr(['cat', 'a', '-r', 'revid:%s' % rev_id],
63
 
                                  working_dir='branch')[0])
64
 
 
65
 
        self.assertEquals('foo\n',
66
 
                          self.run_bzr(['cat', 'branch/a',
67
 
                                        '-r', 'revno:1:branch'])[0])
 
59
        self.assertEquals(self.run_bzr(
 
60
            ['cat', 'a', '-r', 'revid:%s' % rev_id])[0],
 
61
            'baz\n')
 
62
 
 
63
        os.chdir('..')
 
64
 
 
65
        self.assertEquals(self.run_bzr(
 
66
            ['cat', 'branch/a', '-r', 'revno:1:branch'])[0],
 
67
            'foo\n')
68
68
        self.run_bzr(['cat', 'a'], retcode=3)
69
 
        self.run_bzr(['cat', 'a', '-r', 'revno:1:branch-that-does-not-exist'],
70
 
                     retcode=3)
 
69
        self.run_bzr(
 
70
                ['cat', 'a', '-r', 'revno:1:branch-that-does-not-exist'],
 
71
                retcode=3)
71
72
 
72
73
    def test_cat_different_id(self):
73
74
        """'cat' works with old and new files"""
136
137
        wt.add('README')
137
138
        wt.commit('Making sure there is a basis_tree available')
138
139
        wt = self.make_branch_and_tree('b')
 
140
        os.chdir('b')
139
141
 
140
 
        out, err = self.run_bzr(['cat', '-r', 'branch:../a', 'README'],
141
 
                                working_dir='b')
 
142
        out, err = self.run_bzr(
 
143
            ['cat', '-r', 'branch:../a', 'README'])
142
144
        self.assertEqual('contents of a/README\n', out)
143
145
 
144
146
    def test_cat_filters(self):
219
221
        url = self.get_readonly_url() + '/a'
220
222
        out, err = self.run_bzr(['cat', '-d', url, 'README'])
221
223
        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)