/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
4060.1.1 by Robert Collins
Add ratcheted acceptance test for branching from a smart server.
1
# Copyright (C) 2005, 2006, 2008, 2009 Canonical Ltd
1711.2.5 by John Arbash Meinel
Factoring blackbox tests into their own file.
2
#
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
4183.7.1 by Sabin Iacob
update FSF mailing address
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
1711.2.5 by John Arbash Meinel
Factoring blackbox tests into their own file.
16
17
18
"""Black-box tests for bzr branch."""
19
20
import os
21
3696.2.4 by Daniel Watkins
Fixed test to cope with trailing slashes.
22
from bzrlib import (branch, bzrdir, errors, repository)
2241.1.6 by Martin Pool
Move Knit repositories into the submodule bzrlib.repofmt.knitrepo and
23
from bzrlib.repofmt.knitrepo import RepositoryFormatKnit1
1711.2.5 by John Arbash Meinel
Factoring blackbox tests into their own file.
24
from bzrlib.tests.blackbox import ExternalBase
4580.4.2 by Martin Pool
Add KnownFailure for branch --hardlink
25
from bzrlib.tests import (
26
    KnownFailure,
27
    HardlinkFeature,
28
    )
2485.8.59 by Vincent Ladeuil
Update from review comments.
29
from bzrlib.tests.test_sftp_transport import TestCaseWithSFTPServer
3696.2.4 by Daniel Watkins
Fixed test to cope with trailing slashes.
30
from bzrlib.urlutils import local_path_to_url, strip_trailing_slash
1711.2.6 by John Arbash Meinel
Creating a test case for bug 43713, bzr branch does the right thing
31
from bzrlib.workingtree import WorkingTree
1711.2.5 by John Arbash Meinel
Factoring blackbox tests into their own file.
32
33
34
class TestBranch(ExternalBase):
35
2664.8.2 by Daniel Watkins
tests.blackbox.test_branch now uses internals where appropriate.
36
    def example_branch(self, path='.'):
37
        tree = self.make_branch_and_tree(path)
38
        self.build_tree_contents([(path + '/hello', 'foo')])
39
        tree.add('hello')
40
        tree.commit(message='setup')
41
        self.build_tree_contents([(path + '/goodbye', 'baz')])
42
        tree.add('goodbye')
43
        tree.commit(message='setup')
1711.2.5 by John Arbash Meinel
Factoring blackbox tests into their own file.
44
45
    def test_branch(self):
46
        """Branch from one branch to another."""
2664.8.2 by Daniel Watkins
tests.blackbox.test_branch now uses internals where appropriate.
47
        self.example_branch('a')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
48
        self.run_bzr('branch a b')
1773.4.1 by Martin Pool
Add pyflakes makefile target; fix many warnings
49
        b = branch.Branch.open('b')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
50
        self.run_bzr('branch a c -r 1')
3400.1.3 by Martin Pool
Merge trunk
51
        # previously was erroneously created by branching
3407.2.14 by Martin Pool
Remove more cases of getting transport via control_files
52
        self.assertFalse(b._transport.has('branch-name'))
2664.8.2 by Daniel Watkins
tests.blackbox.test_branch now uses internals where appropriate.
53
        b.bzrdir.open_workingtree().commit(message='foo', allow_pointless=True)
1711.2.5 by John Arbash Meinel
Factoring blackbox tests into their own file.
54
1711.2.6 by John Arbash Meinel
Creating a test case for bug 43713, bzr branch does the right thing
55
    def test_branch_only_copies_history(self):
56
        # Knit branches should only push the history for the current revision.
1773.4.1 by Martin Pool
Add pyflakes makefile target; fix many warnings
57
        format = bzrdir.BzrDirMetaFormat1()
1711.2.6 by John Arbash Meinel
Creating a test case for bug 43713, bzr branch does the right thing
58
        format.repository_format = RepositoryFormatKnit1()
59
        shared_repo = self.make_repository('repo', format=format, shared=True)
60
        shared_repo.set_make_working_trees(True)
61
62
        def make_shared_tree(path):
63
            shared_repo.bzrdir.root_transport.mkdir(path)
64
            shared_repo.bzrdir.create_branch_convenience('repo/' + path)
65
            return WorkingTree.open('repo/' + path)
66
        tree_a = make_shared_tree('a')
67
        self.build_tree(['repo/a/file'])
68
        tree_a.add('file')
69
        tree_a.commit('commit a-1', rev_id='a-1')
70
        f = open('repo/a/file', 'ab')
71
        f.write('more stuff\n')
72
        f.close()
73
        tree_a.commit('commit a-2', rev_id='a-2')
74
75
        tree_b = make_shared_tree('b')
76
        self.build_tree(['repo/b/file'])
77
        tree_b.add('file')
78
        tree_b.commit('commit b-1', rev_id='b-1')
79
80
        self.assertTrue(shared_repo.has_revision('a-1'))
81
        self.assertTrue(shared_repo.has_revision('a-2'))
82
        self.assertTrue(shared_repo.has_revision('b-1'))
83
84
        # Now that we have a repository with shared files, make sure
85
        # that things aren't copied out by a 'branch'
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
86
        self.run_bzr('branch repo/b branch-b')
1711.2.6 by John Arbash Meinel
Creating a test case for bug 43713, bzr branch does the right thing
87
        pushed_tree = WorkingTree.open('branch-b')
88
        pushed_repo = pushed_tree.branch.repository
89
        self.assertFalse(pushed_repo.has_revision('a-1'))
90
        self.assertFalse(pushed_repo.has_revision('a-2'))
91
        self.assertTrue(pushed_repo.has_revision('b-1'))
92
3136.1.3 by Aaron Bentley
Implement hard-link support for branch and checkout
93
    def test_branch_hardlink(self):
94
        self.requireFeature(HardlinkFeature)
95
        source = self.make_branch_and_tree('source')
96
        self.build_tree(['source/file1'])
97
        source.add('file1')
98
        source.commit('added file')
4580.4.2 by Martin Pool
Add KnownFailure for branch --hardlink
99
        out, err = self.run_bzr(['branch', 'source', 'target', '--hardlink'])
3136.1.3 by Aaron Bentley
Implement hard-link support for branch and checkout
100
        source_stat = os.stat('source/file1')
101
        target_stat = os.stat('target/file1')
4580.4.2 by Martin Pool
Add KnownFailure for branch --hardlink
102
        same_file = (source_stat == target_stat)
103
        if same_file:
104
            pass
105
        else:
106
            # https://bugs.edge.launchpad.net/bzr/+bug/408193
107
            self.assertContainsRe(err, "hardlinking working copy files is "
108
                "not currently supported")
4580.4.3 by Martin Pool
KnownFailure for #408193 on checkout --hardlink
109
            raise KnownFailure("--hardlink doesn't work in formats "
4580.4.2 by Martin Pool
Add KnownFailure for branch --hardlink
110
                "that support content filtering (#408193)")
3136.1.3 by Aaron Bentley
Implement hard-link support for branch and checkout
111
3696.2.1 by Daniel Watkins
Added test for 'branch --standalone'.
112
    def test_branch_standalone(self):
113
        shared_repo = self.make_repository('repo', shared=True)
114
        self.example_branch('source')
115
        self.run_bzr('branch --standalone source repo/target')
116
        b = branch.Branch.open('repo/target')
117
        expected_repo_path = os.path.abspath('repo/target/.bzr/repository')
3696.2.4 by Daniel Watkins
Fixed test to cope with trailing slashes.
118
        self.assertEqual(strip_trailing_slash(b.repository.base),
119
            strip_trailing_slash(local_path_to_url(expected_repo_path)))
3696.2.1 by Daniel Watkins
Added test for 'branch --standalone'.
120
3983.1.5 by Daniel Watkins
Added blackbox test.
121
    def test_branch_no_tree(self):
122
        self.example_branch('source')
123
        self.run_bzr('branch --no-tree source target')
124
        self.failIfExists('target/hello')
125
        self.failIfExists('target/goodbye')
126
4479.2.1 by Alexander Belchenko
branch command now has new flag --use-existing-dir to force branching into existing directory if there is no branch yet.
127
    def test_branch_into_existing_dir(self):
128
        self.example_branch('a')
4479.2.2 by Vincent Ladeuil
Fix typos and add NEWS entry.
129
        # existing dir with similar files but no .bzr dir
130
        self.build_tree_contents([('b/',)])
4479.2.1 by Alexander Belchenko
branch command now has new flag --use-existing-dir to force branching into existing directory if there is no branch yet.
131
        self.build_tree_contents([('b/hello', 'bar')])  # different content
4479.2.2 by Vincent Ladeuil
Fix typos and add NEWS entry.
132
        self.build_tree_contents([('b/goodbye', 'baz')])# same content
133
        # fails without --use-existing-dir
4479.2.1 by Alexander Belchenko
branch command now has new flag --use-existing-dir to force branching into existing directory if there is no branch yet.
134
        out,err = self.run_bzr('branch a b', retcode=3)
135
        self.assertEqual('', out)
136
        self.assertEqual('bzr: ERROR: Target directory "b" already exists.\n',
137
            err)
138
        # force operation
139
        self.run_bzr('branch a b --use-existing-dir')
140
        # check conflicts
141
        self.failUnlessExists('b/hello.moved')
142
        self.failIfExists('b/godbye.moved')
143
        # we can't branch into branch
144
        out,err = self.run_bzr('branch a b --use-existing-dir', retcode=3)
145
        self.assertEqual('', out)
146
        self.assertEqual('bzr: ERROR: Already a branch: "b".\n', err)
147
3665.2.5 by John Arbash Meinel
Test that we alert the user to the upgrade.
148
3575.2.2 by Martin Pool
branch --stacked should force a stacked format
149
class TestBranchStacked(ExternalBase):
150
    """Tests for branch --stacked"""
151
3517.4.11 by Martin Pool
Improved blackbox tests for stacked branches
152
    def assertRevisionInRepository(self, repo_path, revid):
153
        """Check that a revision is in a repository, disregarding stacking."""
154
        repo = bzrdir.BzrDir.open(repo_path).open_repository()
155
        self.assertTrue(repo.has_revision(revid))
156
157
    def assertRevisionNotInRepository(self, repo_path, revid):
158
        """Check that a revision is not in a repository, disregarding stacking."""
159
        repo = bzrdir.BzrDir.open(repo_path).open_repository()
160
        self.assertFalse(repo.has_revision(revid))
3221.11.19 by Robert Collins
Branching a shallow branch gets a shallow branch.
161
3549.1.4 by Martin Pool
Branching a stacked branch should not automatically turn on stacking
162
    def assertRevisionsInBranchRepository(self, revid_list, branch_path):
163
        repo = branch.Branch.open(branch_path).repository
164
        self.assertEqual(set(revid_list),
165
            repo.has_revisions(revid_list))
166
167
    def test_branch_stacked_branch_not_stacked(self):
168
        """Branching a stacked branch is not stacked by default"""
3221.11.19 by Robert Collins
Branching a shallow branch gets a shallow branch.
169
        # We have a mainline
170
        trunk_tree = self.make_branch_and_tree('target',
4241.6.8 by Robert Collins, John Arbash Meinel, Ian Clatworthy, Vincent Ladeuil
Add --development6-rich-root, disabling the legacy and unneeded development2 format, and activating the tests for CHK features disabled pending this format. (Robert Collins, John Arbash Meinel, Ian Clatworthy, Vincent Ladeuil)
171
            format='1.9')
3221.11.19 by Robert Collins
Branching a shallow branch gets a shallow branch.
172
        trunk_tree.commit('mainline')
3221.20.3 by Ian Clatworthy
shallow -> stacked
173
        # and a branch from it which is stacked
3221.11.19 by Robert Collins
Branching a shallow branch gets a shallow branch.
174
        branch_tree = self.make_branch_and_tree('branch',
4241.6.8 by Robert Collins, John Arbash Meinel, Ian Clatworthy, Vincent Ladeuil
Add --development6-rich-root, disabling the legacy and unneeded development2 format, and activating the tests for CHK features disabled pending this format. (Robert Collins, John Arbash Meinel, Ian Clatworthy, Vincent Ladeuil)
175
            format='1.9')
3537.3.3 by Martin Pool
Rename Branch.set_stacked_on to set_stacked_on_url
176
        branch_tree.branch.set_stacked_on_url(trunk_tree.branch.base)
3221.11.19 by Robert Collins
Branching a shallow branch gets a shallow branch.
177
        # with some work on it
4595.4.4 by Robert Collins
Disable committing directly to stacked branches from lightweight checkouts.
178
        work_tree = trunk_tree.branch.bzrdir.sprout('local').open_workingtree()
179
        work_tree.commit('moar work plz')
180
        work_tree.branch.push(branch_tree.branch)
3221.11.19 by Robert Collins
Branching a shallow branch gets a shallow branch.
181
        # branching our local branch gives us a new stacked branch pointing at
182
        # mainline.
183
        out, err = self.run_bzr(['branch', 'branch', 'newbranch'])
184
        self.assertEqual('', out)
4595.4.4 by Robert Collins
Disable committing directly to stacked branches from lightweight checkouts.
185
        self.assertEqual('Branched 2 revision(s).\n',
3549.1.4 by Martin Pool
Branching a stacked branch should not automatically turn on stacking
186
            err)
3575.2.2 by Martin Pool
branch --stacked should force a stacked format
187
        # it should have preserved the branch format, and so it should be
188
        # capable of supporting stacking, but not actually have a stacked_on
189
        # branch configured
3549.1.4 by Martin Pool
Branching a stacked branch should not automatically turn on stacking
190
        self.assertRaises(errors.NotStacked,
191
            bzrdir.BzrDir.open('newbranch').open_branch().get_stacked_on_url)
192
193
    def test_branch_stacked_branch_stacked(self):
194
        """Asking to stack on a stacked branch does work"""
195
        # We have a mainline
196
        trunk_tree = self.make_branch_and_tree('target',
4241.6.8 by Robert Collins, John Arbash Meinel, Ian Clatworthy, Vincent Ladeuil
Add --development6-rich-root, disabling the legacy and unneeded development2 format, and activating the tests for CHK features disabled pending this format. (Robert Collins, John Arbash Meinel, Ian Clatworthy, Vincent Ladeuil)
197
            format='1.9')
3549.1.4 by Martin Pool
Branching a stacked branch should not automatically turn on stacking
198
        trunk_revid = trunk_tree.commit('mainline')
199
        # and a branch from it which is stacked
200
        branch_tree = self.make_branch_and_tree('branch',
4241.6.8 by Robert Collins, John Arbash Meinel, Ian Clatworthy, Vincent Ladeuil
Add --development6-rich-root, disabling the legacy and unneeded development2 format, and activating the tests for CHK features disabled pending this format. (Robert Collins, John Arbash Meinel, Ian Clatworthy, Vincent Ladeuil)
201
            format='1.9')
3549.1.4 by Martin Pool
Branching a stacked branch should not automatically turn on stacking
202
        branch_tree.branch.set_stacked_on_url(trunk_tree.branch.base)
203
        # with some work on it
4595.4.4 by Robert Collins
Disable committing directly to stacked branches from lightweight checkouts.
204
        work_tree = trunk_tree.branch.bzrdir.sprout('local').open_workingtree()
205
        branch_revid = work_tree.commit('moar work plz')
206
        work_tree.branch.push(branch_tree.branch)
3549.1.4 by Martin Pool
Branching a stacked branch should not automatically turn on stacking
207
        # you can chain branches on from there
208
        out, err = self.run_bzr(['branch', 'branch', '--stacked', 'branch2'])
209
        self.assertEqual('', out)
3221.20.3 by Ian Clatworthy
shallow -> stacked
210
        self.assertEqual('Created new stacked branch referring to %s.\n' %
3549.1.4 by Martin Pool
Branching a stacked branch should not automatically turn on stacking
211
            branch_tree.branch.base, err)
212
        self.assertEqual(branch_tree.branch.base,
213
            branch.Branch.open('branch2').get_stacked_on_url())
214
        branch2_tree = WorkingTree.open('branch2')
4595.4.4 by Robert Collins
Disable committing directly to stacked branches from lightweight checkouts.
215
        branch2_revid = work_tree.commit('work on second stacked branch')
216
        work_tree.branch.push(branch2_tree.branch)
3549.1.4 by Martin Pool
Branching a stacked branch should not automatically turn on stacking
217
        self.assertRevisionInRepository('branch2', branch2_revid)
218
        self.assertRevisionsInBranchRepository(
219
            [trunk_revid, branch_revid, branch2_revid],
220
            'branch2')
3221.11.19 by Robert Collins
Branching a shallow branch gets a shallow branch.
221
3221.20.3 by Ian Clatworthy
shallow -> stacked
222
    def test_branch_stacked(self):
3221.11.20 by Robert Collins
Support --shallow on branch.
223
        # We have a mainline
224
        trunk_tree = self.make_branch_and_tree('mainline',
4241.6.8 by Robert Collins, John Arbash Meinel, Ian Clatworthy, Vincent Ladeuil
Add --development6-rich-root, disabling the legacy and unneeded development2 format, and activating the tests for CHK features disabled pending this format. (Robert Collins, John Arbash Meinel, Ian Clatworthy, Vincent Ladeuil)
225
            format='1.9')
3517.4.11 by Martin Pool
Improved blackbox tests for stacked branches
226
        original_revid = trunk_tree.commit('mainline')
227
        self.assertRevisionInRepository('mainline', original_revid)
3221.20.3 by Ian Clatworthy
shallow -> stacked
228
        # and a branch from it which is stacked
229
        out, err = self.run_bzr(['branch', '--stacked', 'mainline',
3221.20.1 by Ian Clatworthy
tweaks by igc during review
230
            'newbranch'])
3221.11.20 by Robert Collins
Support --shallow on branch.
231
        self.assertEqual('', out)
3221.20.3 by Ian Clatworthy
shallow -> stacked
232
        self.assertEqual('Created new stacked branch referring to %s.\n' %
3221.11.20 by Robert Collins
Support --shallow on branch.
233
            trunk_tree.branch.base, err)
3517.4.11 by Martin Pool
Improved blackbox tests for stacked branches
234
        self.assertRevisionNotInRepository('newbranch', original_revid)
4595.4.4 by Robert Collins
Disable committing directly to stacked branches from lightweight checkouts.
235
        new_branch = branch.Branch.open('newbranch')
236
        self.assertEqual(trunk_tree.branch.base, new_branch.get_stacked_on_url())
3221.11.20 by Robert Collins
Support --shallow on branch.
237
3221.15.10 by Robert Collins
Add test that we can stack on a smart server from Jonathan Lange.
238
    def test_branch_stacked_from_smart_server(self):
239
        # We can branch stacking on a smart server
240
        from bzrlib.smart.server import SmartTCPServer_for_testing
241
        self.transport_server = SmartTCPServer_for_testing
4241.6.8 by Robert Collins, John Arbash Meinel, Ian Clatworthy, Vincent Ladeuil
Add --development6-rich-root, disabling the legacy and unneeded development2 format, and activating the tests for CHK features disabled pending this format. (Robert Collins, John Arbash Meinel, Ian Clatworthy, Vincent Ladeuil)
242
        trunk = self.make_branch('mainline', format='1.9')
3221.15.10 by Robert Collins
Add test that we can stack on a smart server from Jonathan Lange.
243
        out, err = self.run_bzr(
244
            ['branch', '--stacked', self.get_url('mainline'), 'shallow'])
245
3575.2.2 by Martin Pool
branch --stacked should force a stacked format
246
    def test_branch_stacked_from_non_stacked_format(self):
247
        """The origin format doesn't support stacking"""
248
        trunk = self.make_branch('trunk', format='pack-0.92')
249
        out, err = self.run_bzr(
250
            ['branch', '--stacked', 'trunk', 'shallow'])
3665.2.5 by John Arbash Meinel
Test that we alert the user to the upgrade.
251
        # We should notify the user that we upgraded their format
3665.2.6 by John Arbash Meinel
Change the text a bit, and point to the explicit --1.6 or --1.6.1-rich-root bzrdir format.
252
        self.assertEqualDiff(
4401.1.3 by John Arbash Meinel
Change back to defaulting to --1.6 format, and update the blackbox tests.
253
            'Source repository format does not support stacking, using format:\n'
3665.2.6 by John Arbash Meinel
Change the text a bit, and point to the explicit --1.6 or --1.6.1-rich-root bzrdir format.
254
            '  Packs 5 (adds stacking support, requires bzr 1.6)\n'
4401.1.3 by John Arbash Meinel
Change back to defaulting to --1.6 format, and update the blackbox tests.
255
            'Source branch format does not support stacking, using format:\n'
256
            '  Branch format 7\n'
3665.2.6 by John Arbash Meinel
Change the text a bit, and point to the explicit --1.6 or --1.6.1-rich-root bzrdir format.
257
            'Created new stacked branch referring to %s.\n' % (trunk.base,),
258
            err)
259
260
    def test_branch_stacked_from_rich_root_non_stackable(self):
261
        trunk = self.make_branch('trunk', format='rich-root-pack')
262
        out, err = self.run_bzr(
263
            ['branch', '--stacked', 'trunk', 'shallow'])
264
        # We should notify the user that we upgraded their format
265
        self.assertEqualDiff(
4401.1.3 by John Arbash Meinel
Change back to defaulting to --1.6 format, and update the blackbox tests.
266
            'Source repository format does not support stacking, using format:\n'
3665.2.6 by John Arbash Meinel
Change the text a bit, and point to the explicit --1.6 or --1.6.1-rich-root bzrdir format.
267
            '  Packs 5 rich-root (adds stacking support, requires bzr 1.6.1)\n'
4401.1.3 by John Arbash Meinel
Change back to defaulting to --1.6 format, and update the blackbox tests.
268
            'Source branch format does not support stacking, using format:\n'
269
            '  Branch format 7\n'
3665.2.6 by John Arbash Meinel
Change the text a bit, and point to the explicit --1.6 or --1.6.1-rich-root bzrdir format.
270
            'Created new stacked branch referring to %s.\n' % (trunk.base,),
271
            err)
272
3575.2.2 by Martin Pool
branch --stacked should force a stacked format
273
4060.1.1 by Robert Collins
Add ratcheted acceptance test for branching from a smart server.
274
class TestSmartServerBranching(ExternalBase):
275
4060.1.4 by Robert Collins
Streaming fetch from remote servers.
276
    def test_branch_from_trivial_branch_to_same_server_branch_acceptance(self):
277
        self.setup_smart_server_with_call_log()
278
        t = self.make_branch_and_tree('from')
279
        for count in range(9):
280
            t.commit(message='commit %d' % count)
281
        self.reset_smart_call_log()
282
        out, err = self.run_bzr(['branch', self.get_url('from'),
283
            self.get_url('target')])
284
        # This figure represent the amount of work to perform this use case. It
285
        # is entirely ok to reduce this number if a test fails due to rpc_count
286
        # being too low. If rpc_count increases, more network roundtrips have
287
        # become necessary for this use case. Please do not adjust this number
288
        # upwards without agreement from bzr's network support maintainers.
4454.2.2 by John Arbash Meinel
turns out the new code removes a round trip to the server, which bumps an acceptance test.
289
        self.assertLength(38, self.hpss_calls)
4060.1.4 by Robert Collins
Streaming fetch from remote servers.
290
4060.1.1 by Robert Collins
Add ratcheted acceptance test for branching from a smart server.
291
    def test_branch_from_trivial_branch_streaming_acceptance(self):
292
        self.setup_smart_server_with_call_log()
293
        t = self.make_branch_and_tree('from')
294
        for count in range(9):
295
            t.commit(message='commit %d' % count)
296
        self.reset_smart_call_log()
4060.1.2 by Robert Collins
Get RemoteToOther inter repository logic using the generic fetch code, to permit eventual streaming from smart servers.
297
        out, err = self.run_bzr(['branch', self.get_url('from'),
298
            'local-target'])
4060.1.1 by Robert Collins
Add ratcheted acceptance test for branching from a smart server.
299
        # This figure represent the amount of work to perform this use case. It
300
        # is entirely ok to reduce this number if a test fails due to rpc_count
301
        # being too low. If rpc_count increases, more network roundtrips have
302
        # become necessary for this use case. Please do not adjust this number
303
        # upwards without agreement from bzr's network support maintainers.
4226.1.5 by Robert Collins
Reinstate the use of the Branch.get_config_file verb.
304
        self.assertLength(10, self.hpss_calls)
4060.1.1 by Robert Collins
Add ratcheted acceptance test for branching from a smart server.
305
4152.1.2 by Robert Collins
Add streaming from a stacked branch when the sort order is compatible with doing so.
306
    def test_branch_from_trivial_stacked_branch_streaming_acceptance(self):
307
        self.setup_smart_server_with_call_log()
308
        t = self.make_branch_and_tree('trunk')
309
        for count in range(8):
310
            t.commit(message='commit %d' % count)
311
        tree2 = t.branch.bzrdir.sprout('feature', stacked=True
312
            ).open_workingtree()
4595.4.1 by Robert Collins
Fix test_branch_from_trivial_stacked_branch_streaming_acceptance to work with rich root formats, pending work on bug 375013.
313
        local_tree = t.branch.bzrdir.sprout('local-working').open_workingtree()
314
        local_tree.commit('feature change')
315
        local_tree.branch.push(tree2.branch)
4152.1.2 by Robert Collins
Add streaming from a stacked branch when the sort order is compatible with doing so.
316
        self.reset_smart_call_log()
317
        out, err = self.run_bzr(['branch', self.get_url('feature'),
318
            'local-target'])
319
        # This figure represent the amount of work to perform this use case. It
320
        # is entirely ok to reduce this number if a test fails due to rpc_count
321
        # being too low. If rpc_count increases, more network roundtrips have
322
        # become necessary for this use case. Please do not adjust this number
323
        # upwards without agreement from bzr's network support maintainers.
4226.1.1 by Robert Collins
RemoteRepository.add_fallback_repository no longer calls ensure_real. (Robert Collins, Andrew Bennetts)
324
        self.assertLength(15, self.hpss_calls)
4152.1.2 by Robert Collins
Add streaming from a stacked branch when the sort order is compatible with doing so.
325
1711.2.5 by John Arbash Meinel
Factoring blackbox tests into their own file.
326
2485.8.59 by Vincent Ladeuil
Update from review comments.
327
class TestRemoteBranch(TestCaseWithSFTPServer):
328
329
    def setUp(self):
330
        super(TestRemoteBranch, self).setUp()
331
        tree = self.make_branch_and_tree('branch')
332
        self.build_tree_contents([('branch/file', 'file content\n')])
333
        tree.add('file')
334
        tree.commit('file created')
335
336
    def test_branch_local_remote(self):
337
        self.run_bzr(['branch', 'branch', self.get_url('remote')])
338
        t = self.get_transport()
2485.8.62 by Vincent Ladeuil
From review comments, fix typos and deprecate some functions.
339
        # Ensure that no working tree what created remotely
2485.8.59 by Vincent Ladeuil
Update from review comments.
340
        self.assertFalse(t.has('remote/file'))
341
342
    def test_branch_remote_remote(self):
343
        # Light cheat: we access the branch remotely
344
        self.run_bzr(['branch', self.get_url('branch'),
345
                      self.get_url('remote')])
346
        t = self.get_transport()
2485.8.62 by Vincent Ladeuil
From review comments, fix typos and deprecate some functions.
347
        # Ensure that no working tree what created remotely
2485.8.59 by Vincent Ladeuil
Update from review comments.
348
        self.assertFalse(t.has('remote/file'))
349