~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Vincent Ladeuil
  • Date: 2012-01-05 13:02:31 UTC
  • mto: This revision was merged to the branch mainline in revision 6434.
  • Revision ID: v.ladeuil+lp@free.fr-20120105130231-grtl31ovy72doqp9
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006, 2007, 2009, 2010 Canonical Ltd
 
1
# Copyright (C) 2006, 2007, 2009-2012 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
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,
31
27
from bzrlib.tests import (
32
28
    TestCaseWithTransport,
33
29
    )
34
 
from bzrlib.tests import (
 
30
from bzrlib.tests.matchers import ContainsNoVfsCalls
 
31
from bzrlib.tests.features import (
35
32
    HardlinkFeature,
36
 
    KnownFailure,
37
33
    )
38
34
 
39
35
 
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
71
        out, err = self.run_bzr(['checkout','--lightweight', '-r', '-2',
78
74
        # from 1.
79
75
        result = bzrdir.BzrDir.open('checkout')
80
76
        self.assertEqual(['1'], result.open_workingtree().get_parent_ids())
81
 
        self.failIfExists('checkout/added_in_2')
 
77
        self.assertPathDoesNotExist('checkout/added_in_2')
82
78
 
83
79
    def test_checkout_reconstitutes_working_trees(self):
84
80
        # doing a 'bzr checkout' in the directory of a branch with no tree
124
120
            cmd.append('--lightweight')
125
121
        self.run_bzr('checkout source target')
126
122
        # files with unique content should be moved
127
 
        self.failUnlessExists('target/file2.moved')
 
123
        self.assertPathExists('target/file2.moved')
128
124
        # files with content matching tree should not be moved
129
 
        self.failIfExists('target/file1.moved')
 
125
        self.assertPathDoesNotExist('target/file1.moved')
130
126
 
131
127
    def test_checkout_existing_dir_heavy(self):
132
128
        self._test_checkout_existing_dir(False)
137
133
    def test_checkout_in_branch_with_r(self):
138
134
        branch = _mod_branch.Branch.open('branch')
139
135
        branch.bzrdir.destroy_workingtree()
140
 
        os.chdir('branch')
141
 
        self.run_bzr('checkout -r 1')
142
 
        tree = workingtree.WorkingTree.open('.')
 
136
        self.run_bzr('checkout -r 1', working_dir='branch')
 
137
        tree = workingtree.WorkingTree.open('branch')
143
138
        self.assertEqual('1', tree.last_revision())
144
139
        branch.bzrdir.destroy_workingtree()
145
 
        self.run_bzr('checkout -r 0')
 
140
        self.run_bzr('checkout -r 0', working_dir='branch')
146
141
        self.assertEqual('null:', tree.last_revision())
147
142
 
148
143
    def test_checkout_files_from(self):
173
168
        second_stat = os.stat('second/file1')
174
169
        target_stat = os.stat('target/file1')
175
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'), 'target'])
 
182
        # This figure represent the amount of work to perform this use case. It
 
183
        # is entirely ok to reduce this number if a test fails due to rpc_count
 
184
        # being too low. If rpc_count increases, more network roundtrips have
 
185
        # become necessary for this use case. Please do not adjust this number
 
186
        # upwards without agreement from bzr's network support maintainers.
 
187
        self.assertLength(10, self.hpss_calls)
 
188
        self.assertLength(1, self.hpss_connections)
 
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)