/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

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

  • Committer: Jelmer Vernooij
  • Date: 2011-12-05 17:31:43 UTC
  • mto: This revision was merged to the branch mainline in revision 6348.
  • Revision ID: jelmer@samba.org-20111205173143-jwj2xtdwpgpn4ic0
Fix test.

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
"""Tests for the 'checkout' CLI command."""
18
18
 
19
 
from cStringIO import StringIO
20
19
import os
21
 
import re
22
 
import shutil
23
 
import sys
24
20
 
25
21
from bzrlib import (
26
22
    branch as _mod_branch,
28
24
    errors,
29
25
    workingtree,
30
26
    )
31
 
from bzrlib.tests.blackbox import (
32
 
    ExternalBase,
33
 
    )
34
27
from bzrlib.tests import (
 
28
    TestCaseWithTransport,
 
29
    )
 
30
from bzrlib.tests.features import (
35
31
    HardlinkFeature,
36
 
    KnownFailure,
37
32
    )
38
33
 
39
34
 
40
 
class TestCheckout(ExternalBase):
 
35
class TestCheckout(TestCaseWithTransport):
41
36
 
42
37
    def setUp(self):
43
38
        super(TestCheckout, self).setUp()
64
59
                         result.open_branch().bzrdir.root_transport.base)
65
60
 
66
61
    def test_checkout_dash_r(self):
67
 
        self.run_bzr('checkout -r -2 branch checkout')
 
62
        out, err = self.run_bzr(['checkout', '-r', '-2', 'branch', 'checkout'])
68
63
        # the working tree should now be at revision '1' with the content
69
64
        # from 1.
70
65
        result = bzrdir.BzrDir.open('checkout')
71
66
        self.assertEqual(['1'], result.open_workingtree().get_parent_ids())
72
 
        self.failIfExists('checkout/added_in_2')
 
67
        self.assertPathDoesNotExist('checkout/added_in_2')
73
68
 
74
69
    def test_checkout_light_dash_r(self):
75
 
        self.run_bzr('checkout --lightweight -r -2 branch checkout')
 
70
        out, err = self.run_bzr(['checkout','--lightweight', '-r', '-2',
 
71
            'branch', 'checkout'])
76
72
        # the working tree should now be at revision '1' with the content
77
73
        # from 1.
78
74
        result = bzrdir.BzrDir.open('checkout')
79
75
        self.assertEqual(['1'], result.open_workingtree().get_parent_ids())
80
 
        self.failIfExists('checkout/added_in_2')
 
76
        self.assertPathDoesNotExist('checkout/added_in_2')
81
77
 
82
78
    def test_checkout_reconstitutes_working_trees(self):
83
79
        # doing a 'bzr checkout' in the directory of a branch with no tree
123
119
            cmd.append('--lightweight')
124
120
        self.run_bzr('checkout source target')
125
121
        # files with unique content should be moved
126
 
        self.failUnlessExists('target/file2.moved')
 
122
        self.assertPathExists('target/file2.moved')
127
123
        # files with content matching tree should not be moved
128
 
        self.failIfExists('target/file1.moved')
 
124
        self.assertPathDoesNotExist('target/file1.moved')
129
125
 
130
126
    def test_checkout_existing_dir_heavy(self):
131
127
        self._test_checkout_existing_dir(False)
155
151
        self.build_tree(['source/file1'])
156
152
        source.add('file1')
157
153
        source.commit('added file')
158
 
        out, err = self.run_bzr(['checkout', 'source', 'target',
159
 
            '--files-from', 'source',
160
 
            '--hardlink'])
 
154
        out, err = self.run_bzr('checkout source target --hardlink')
161
155
        source_stat = os.stat('source/file1')
162
156
        target_stat = os.stat('target/file1')
163
157
        self.assertEqual(source_stat, target_stat)
 
158
 
 
159
    def test_checkout_hardlink_files_from(self):
 
160
        self.requireFeature(HardlinkFeature)
 
161
        source = self.make_branch_and_tree('source')
 
162
        self.build_tree(['source/file1'])
 
163
        source.add('file1')
 
164
        source.commit('added file')
 
165
        source.bzrdir.sprout('second')
 
166
        out, err = self.run_bzr('checkout source target --hardlink'
 
167
                                ' --files-from second')
 
168
        second_stat = os.stat('second/file1')
 
169
        target_stat = os.stat('target/file1')
 
170
        self.assertEqual(second_stat, target_stat)
 
171
 
 
172
 
 
173
class TestSmartServerCheckout(TestCaseWithTransport):
 
174
 
 
175
    def test_heavyweight_checkout(self):
 
176
        self.setup_smart_server_with_call_log()
 
177
        t = self.make_branch_and_tree('from')
 
178
        for count in range(9):
 
179
            t.commit(message='commit %d' % count)
 
180
        self.reset_smart_call_log()
 
181
        out, err = self.run_bzr(['checkout', self.get_url('from'),
 
182
            'target'])
 
183
        # This figure represent the amount of work to perform this use case. It
 
184
        # is entirely ok to reduce this number if a test fails due to rpc_count
 
185
        # being too low. If rpc_count increases, more network roundtrips have
 
186
        # become necessary for this use case. Please do not adjust this number
 
187
        # upwards without agreement from bzr's network support maintainers.
 
188
        self.assertLength(17, self.hpss_calls)
 
189
 
 
190
    def test_lightweight_checkout(self):
 
191
        self.setup_smart_server_with_call_log()
 
192
        t = self.make_branch_and_tree('from')
 
193
        for count in range(9):
 
194
            t.commit(message='commit %d' % count)
 
195
        self.reset_smart_call_log()
 
196
        out, err = self.run_bzr(['checkout', '--lightweight', self.get_url('from'),
 
197
            'target'])
 
198
        # This figure represent the amount of work to perform this use case. It
 
199
        # is entirely ok to reduce this number if a test fails due to rpc_count
 
200
        # being too low. If rpc_count increases, more network roundtrips have
 
201
        # become necessary for this use case. Please do not adjust this number
 
202
        # upwards without agreement from bzr's network support maintainers.
 
203
        if len(self.hpss_calls) < 35 or len(self.hpss_calls) > 48:
 
204
            self.fail(
 
205
                "Incorrect length: wanted between 35 and 48, got %d for %r" % (
 
206
                    len(self.hpss_calls), self.hpss_calls))