/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

mergeĀ lp:~jelmer/bzr/commit-uses-config-stacks

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