~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2010-05-21 13:36:51 UTC
  • mfrom: (5243.2.1 readdir_cleanup)
  • Revision ID: pqm@pqm.ubuntu.com-20100521133651-p62dndo2giy5ls21
(lifeless) Some cleanups to the readdir pyrex code for a little efficiency
 and to avoid compile warnings. (John A Meinel)

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
19
20
import os
 
21
import re
 
22
import shutil
 
23
import sys
20
24
 
21
25
from bzrlib import (
22
26
    branch as _mod_branch,
24
28
    errors,
25
29
    workingtree,
26
30
    )
 
31
from bzrlib.tests.blackbox import (
 
32
    ExternalBase,
 
33
    )
27
34
from bzrlib.tests import (
28
 
    TestCaseWithTransport,
29
 
    )
30
 
from bzrlib.tests.matchers import ContainsNoVfsCalls
31
 
from bzrlib.tests.features import (
32
35
    HardlinkFeature,
 
36
    KnownFailure,
33
37
    )
34
38
 
35
39
 
36
 
class TestCheckout(TestCaseWithTransport):
 
40
class TestCheckout(ExternalBase):
37
41
 
38
42
    def setUp(self):
39
43
        super(TestCheckout, self).setUp()
65
69
        # from 1.
66
70
        result = bzrdir.BzrDir.open('checkout')
67
71
        self.assertEqual(['1'], result.open_workingtree().get_parent_ids())
68
 
        self.assertPathDoesNotExist('checkout/added_in_2')
 
72
        self.failIfExists('checkout/added_in_2')
69
73
 
70
74
    def test_checkout_light_dash_r(self):
71
75
        out, err = self.run_bzr(['checkout','--lightweight', '-r', '-2',
74
78
        # from 1.
75
79
        result = bzrdir.BzrDir.open('checkout')
76
80
        self.assertEqual(['1'], result.open_workingtree().get_parent_ids())
77
 
        self.assertPathDoesNotExist('checkout/added_in_2')
 
81
        self.failIfExists('checkout/added_in_2')
78
82
 
79
83
    def test_checkout_reconstitutes_working_trees(self):
80
84
        # doing a 'bzr checkout' in the directory of a branch with no tree
120
124
            cmd.append('--lightweight')
121
125
        self.run_bzr('checkout source target')
122
126
        # files with unique content should be moved
123
 
        self.assertPathExists('target/file2.moved')
 
127
        self.failUnlessExists('target/file2.moved')
124
128
        # files with content matching tree should not be moved
125
 
        self.assertPathDoesNotExist('target/file1.moved')
 
129
        self.failIfExists('target/file1.moved')
126
130
 
127
131
    def test_checkout_existing_dir_heavy(self):
128
132
        self._test_checkout_existing_dir(False)
152
156
        self.build_tree(['source/file1'])
153
157
        source.add('file1')
154
158
        source.commit('added file')
155
 
        out, err = self.run_bzr('checkout source target --hardlink')
 
159
        out, err = self.run_bzr(['checkout', 'source', 'target',
 
160
            '--files-from', 'source',
 
161
            '--hardlink'])
156
162
        source_stat = os.stat('source/file1')
157
163
        target_stat = os.stat('target/file1')
158
164
        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'), '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(10, self.hpss_calls)
189
 
        self.assertThat(self.hpss_calls, ContainsNoVfsCalls)
190
 
 
191
 
    def test_lightweight_checkout(self):
192
 
        self.setup_smart_server_with_call_log()
193
 
        t = self.make_branch_and_tree('from')
194
 
        for count in range(9):
195
 
            t.commit(message='commit %d' % count)
196
 
        self.reset_smart_call_log()
197
 
        out, err = self.run_bzr(['checkout', '--lightweight', self.get_url('from'),
198
 
            'target'])
199
 
        # This figure represent the amount of work to perform this use case. It
200
 
        # is entirely ok to reduce this number if a test fails due to rpc_count
201
 
        # being too low. If rpc_count increases, more network roundtrips have
202
 
        # become necessary for this use case. Please do not adjust this number
203
 
        # upwards without agreement from bzr's network support maintainers.
204
 
        self.assertLength(15, self.hpss_calls)
205
 
        self.assertThat(self.hpss_calls, ContainsNoVfsCalls)