/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
3136.1.3 by Aaron Bentley
Implement hard-link support for branch and checkout
25
from bzrlib.tests import HardlinkFeature
2485.8.59 by Vincent Ladeuil
Update from review comments.
26
from bzrlib.tests.test_sftp_transport import TestCaseWithSFTPServer
3696.2.4 by Daniel Watkins
Fixed test to cope with trailing slashes.
27
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
28
from bzrlib.workingtree import WorkingTree
1711.2.5 by John Arbash Meinel
Factoring blackbox tests into their own file.
29
30
31
class TestBranch(ExternalBase):
32
2664.8.2 by Daniel Watkins
tests.blackbox.test_branch now uses internals where appropriate.
33
    def example_branch(self, path='.'):
34
        tree = self.make_branch_and_tree(path)
35
        self.build_tree_contents([(path + '/hello', 'foo')])
36
        tree.add('hello')
37
        tree.commit(message='setup')
38
        self.build_tree_contents([(path + '/goodbye', 'baz')])
39
        tree.add('goodbye')
40
        tree.commit(message='setup')
1711.2.5 by John Arbash Meinel
Factoring blackbox tests into their own file.
41
42
    def test_branch(self):
43
        """Branch from one branch to another."""
2664.8.2 by Daniel Watkins
tests.blackbox.test_branch now uses internals where appropriate.
44
        self.example_branch('a')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
45
        self.run_bzr('branch a b')
1773.4.1 by Martin Pool
Add pyflakes makefile target; fix many warnings
46
        b = branch.Branch.open('b')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
47
        self.run_bzr('branch a c -r 1')
3400.1.3 by Martin Pool
Merge trunk
48
        # previously was erroneously created by branching
3407.2.14 by Martin Pool
Remove more cases of getting transport via control_files
49
        self.assertFalse(b._transport.has('branch-name'))
2664.8.2 by Daniel Watkins
tests.blackbox.test_branch now uses internals where appropriate.
50
        b.bzrdir.open_workingtree().commit(message='foo', allow_pointless=True)
1711.2.5 by John Arbash Meinel
Factoring blackbox tests into their own file.
51
1711.2.6 by John Arbash Meinel
Creating a test case for bug 43713, bzr branch does the right thing
52
    def test_branch_only_copies_history(self):
53
        # Knit branches should only push the history for the current revision.
1773.4.1 by Martin Pool
Add pyflakes makefile target; fix many warnings
54
        format = bzrdir.BzrDirMetaFormat1()
1711.2.6 by John Arbash Meinel
Creating a test case for bug 43713, bzr branch does the right thing
55
        format.repository_format = RepositoryFormatKnit1()
56
        shared_repo = self.make_repository('repo', format=format, shared=True)
57
        shared_repo.set_make_working_trees(True)
58
59
        def make_shared_tree(path):
60
            shared_repo.bzrdir.root_transport.mkdir(path)
61
            shared_repo.bzrdir.create_branch_convenience('repo/' + path)
62
            return WorkingTree.open('repo/' + path)
63
        tree_a = make_shared_tree('a')
64
        self.build_tree(['repo/a/file'])
65
        tree_a.add('file')
66
        tree_a.commit('commit a-1', rev_id='a-1')
67
        f = open('repo/a/file', 'ab')
68
        f.write('more stuff\n')
69
        f.close()
70
        tree_a.commit('commit a-2', rev_id='a-2')
71
72
        tree_b = make_shared_tree('b')
73
        self.build_tree(['repo/b/file'])
74
        tree_b.add('file')
75
        tree_b.commit('commit b-1', rev_id='b-1')
76
77
        self.assertTrue(shared_repo.has_revision('a-1'))
78
        self.assertTrue(shared_repo.has_revision('a-2'))
79
        self.assertTrue(shared_repo.has_revision('b-1'))
80
81
        # Now that we have a repository with shared files, make sure
82
        # that things aren't copied out by a 'branch'
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
83
        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
84
        pushed_tree = WorkingTree.open('branch-b')
85
        pushed_repo = pushed_tree.branch.repository
86
        self.assertFalse(pushed_repo.has_revision('a-1'))
87
        self.assertFalse(pushed_repo.has_revision('a-2'))
88
        self.assertTrue(pushed_repo.has_revision('b-1'))
89
3136.1.3 by Aaron Bentley
Implement hard-link support for branch and checkout
90
    def test_branch_hardlink(self):
91
        self.requireFeature(HardlinkFeature)
92
        source = self.make_branch_and_tree('source')
93
        self.build_tree(['source/file1'])
94
        source.add('file1')
95
        source.commit('added file')
96
        self.run_bzr(['branch', 'source', 'target', '--hardlink'])
97
        source_stat = os.stat('source/file1')
98
        target_stat = os.stat('target/file1')
99
        self.assertEqual(source_stat, target_stat)
100
3696.2.1 by Daniel Watkins
Added test for 'branch --standalone'.
101
    def test_branch_standalone(self):
102
        shared_repo = self.make_repository('repo', shared=True)
103
        self.example_branch('source')
104
        self.run_bzr('branch --standalone source repo/target')
105
        b = branch.Branch.open('repo/target')
106
        expected_repo_path = os.path.abspath('repo/target/.bzr/repository')
3696.2.4 by Daniel Watkins
Fixed test to cope with trailing slashes.
107
        self.assertEqual(strip_trailing_slash(b.repository.base),
108
            strip_trailing_slash(local_path_to_url(expected_repo_path)))
3696.2.1 by Daniel Watkins
Added test for 'branch --standalone'.
109
3983.1.5 by Daniel Watkins
Added blackbox test.
110
    def test_branch_no_tree(self):
111
        self.example_branch('source')
112
        self.run_bzr('branch --no-tree source target')
113
        self.failIfExists('target/hello')
114
        self.failIfExists('target/goodbye')
115
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.
116
    def test_branch_into_existing_dir(self):
117
        self.example_branch('a')
4479.2.2 by Vincent Ladeuil
Fix typos and add NEWS entry.
118
        # existing dir with similar files but no .bzr dir
119
        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.
120
        self.build_tree_contents([('b/hello', 'bar')])  # different content
4479.2.2 by Vincent Ladeuil
Fix typos and add NEWS entry.
121
        self.build_tree_contents([('b/goodbye', 'baz')])# same content
122
        # 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.
123
        out,err = self.run_bzr('branch a b', retcode=3)
124
        self.assertEqual('', out)
125
        self.assertEqual('bzr: ERROR: Target directory "b" already exists.\n',
126
            err)
127
        # force operation
128
        self.run_bzr('branch a b --use-existing-dir')
129
        # check conflicts
130
        self.failUnlessExists('b/hello.moved')
131
        self.failIfExists('b/godbye.moved')
132
        # we can't branch into branch
133
        out,err = self.run_bzr('branch a b --use-existing-dir', retcode=3)
134
        self.assertEqual('', out)
135
        self.assertEqual('bzr: ERROR: Already a branch: "b".\n', err)
136
3665.2.5 by John Arbash Meinel
Test that we alert the user to the upgrade.
137
3575.2.2 by Martin Pool
branch --stacked should force a stacked format
138
class TestBranchStacked(ExternalBase):
139
    """Tests for branch --stacked"""
140
3517.4.11 by Martin Pool
Improved blackbox tests for stacked branches
141
    def check_shallow_branch(self, branch_revid, stacked_on):
3517.4.6 by Martin Pool
Adjust test for commit into stacked branches
142
        """Assert that the branch 'newbranch' has been published correctly.
3665.2.5 by John Arbash Meinel
Test that we alert the user to the upgrade.
143
3517.4.6 by Martin Pool
Adjust test for commit into stacked branches
144
        :param stacked_on: url of a branch this one is stacked upon.
3665.2.5 by John Arbash Meinel
Test that we alert the user to the upgrade.
145
        :param branch_revid: a revision id that should be the only
3517.4.11 by Martin Pool
Improved blackbox tests for stacked branches
146
            revision present in the stacked branch, and it should not be in
147
            the reference branch.
3517.4.6 by Martin Pool
Adjust test for commit into stacked branches
148
        """
3221.11.19 by Robert Collins
Branching a shallow branch gets a shallow branch.
149
        new_branch = branch.Branch.open('newbranch')
150
        # The branch refers to the mainline
3537.3.1 by Martin Pool
Rename branch.get_stacked_on to get_stacked_on_url
151
        self.assertEqual(stacked_on, new_branch.get_stacked_on_url())
3221.11.19 by Robert Collins
Branching a shallow branch gets a shallow branch.
152
        # and the branch's work was pushed
153
        self.assertTrue(new_branch.repository.has_revision(branch_revid))
3517.4.11 by Martin Pool
Improved blackbox tests for stacked branches
154
        # The newly committed revision shoud be present in the stacked branch,
155
        # but not in the stacked-on branch.  Because stacking is set up by the
156
        # branch object, if we open the stacked branch's repository directly,
157
        # bypassing the branch, we see only what's in the stacked repository.
158
        stacked_repo = bzrdir.BzrDir.open('newbranch').open_repository()
159
        stacked_repo_revisions = set(stacked_repo.all_revision_ids())
160
        if len(stacked_repo_revisions) != 1:
161
            self.fail("wrong revisions in stacked repository: %r"
162
                % (stacked_repo_revisions,))
163
164
    def assertRevisionInRepository(self, repo_path, revid):
165
        """Check that a revision is in a repository, disregarding stacking."""
166
        repo = bzrdir.BzrDir.open(repo_path).open_repository()
167
        self.assertTrue(repo.has_revision(revid))
168
169
    def assertRevisionNotInRepository(self, repo_path, revid):
170
        """Check that a revision is not in a repository, disregarding stacking."""
171
        repo = bzrdir.BzrDir.open(repo_path).open_repository()
172
        self.assertFalse(repo.has_revision(revid))
3221.11.19 by Robert Collins
Branching a shallow branch gets a shallow branch.
173
3549.1.4 by Martin Pool
Branching a stacked branch should not automatically turn on stacking
174
    def assertRevisionsInBranchRepository(self, revid_list, branch_path):
175
        repo = branch.Branch.open(branch_path).repository
176
        self.assertEqual(set(revid_list),
177
            repo.has_revisions(revid_list))
178
179
    def test_branch_stacked_branch_not_stacked(self):
180
        """Branching a stacked branch is not stacked by default"""
3221.11.19 by Robert Collins
Branching a shallow branch gets a shallow branch.
181
        # We have a mainline
182
        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)
183
            format='1.9')
3221.11.19 by Robert Collins
Branching a shallow branch gets a shallow branch.
184
        trunk_tree.commit('mainline')
3221.20.3 by Ian Clatworthy
shallow -> stacked
185
        # and a branch from it which is stacked
3221.11.19 by Robert Collins
Branching a shallow branch gets a shallow branch.
186
        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)
187
            format='1.9')
3537.3.3 by Martin Pool
Rename Branch.set_stacked_on to set_stacked_on_url
188
        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.
189
        # with some work on it
190
        branch_tree.commit('moar work plz')
191
        # branching our local branch gives us a new stacked branch pointing at
192
        # mainline.
193
        out, err = self.run_bzr(['branch', 'branch', 'newbranch'])
194
        self.assertEqual('', out)
3549.1.4 by Martin Pool
Branching a stacked branch should not automatically turn on stacking
195
        self.assertEqual('Branched 1 revision(s).\n',
196
            err)
3575.2.2 by Martin Pool
branch --stacked should force a stacked format
197
        # it should have preserved the branch format, and so it should be
198
        # capable of supporting stacking, but not actually have a stacked_on
199
        # branch configured
3549.1.4 by Martin Pool
Branching a stacked branch should not automatically turn on stacking
200
        self.assertRaises(errors.NotStacked,
201
            bzrdir.BzrDir.open('newbranch').open_branch().get_stacked_on_url)
202
203
    def test_branch_stacked_branch_stacked(self):
204
        """Asking to stack on a stacked branch does work"""
205
        # We have a mainline
206
        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)
207
            format='1.9')
3549.1.4 by Martin Pool
Branching a stacked branch should not automatically turn on stacking
208
        trunk_revid = trunk_tree.commit('mainline')
209
        # and a branch from it which is stacked
210
        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)
211
            format='1.9')
3549.1.4 by Martin Pool
Branching a stacked branch should not automatically turn on stacking
212
        branch_tree.branch.set_stacked_on_url(trunk_tree.branch.base)
213
        # with some work on it
214
        branch_revid = branch_tree.commit('moar work plz')
215
        # you can chain branches on from there
216
        out, err = self.run_bzr(['branch', 'branch', '--stacked', 'branch2'])
217
        self.assertEqual('', out)
3221.20.3 by Ian Clatworthy
shallow -> stacked
218
        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
219
            branch_tree.branch.base, err)
220
        self.assertEqual(branch_tree.branch.base,
221
            branch.Branch.open('branch2').get_stacked_on_url())
222
        branch2_tree = WorkingTree.open('branch2')
223
        branch2_revid = branch2_tree.commit('work on second stacked branch')
224
        self.assertRevisionInRepository('branch2', branch2_revid)
225
        self.assertRevisionsInBranchRepository(
226
            [trunk_revid, branch_revid, branch2_revid],
227
            'branch2')
3221.11.19 by Robert Collins
Branching a shallow branch gets a shallow branch.
228
3221.20.3 by Ian Clatworthy
shallow -> stacked
229
    def test_branch_stacked(self):
3221.11.20 by Robert Collins
Support --shallow on branch.
230
        # We have a mainline
231
        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)
232
            format='1.9')
3517.4.11 by Martin Pool
Improved blackbox tests for stacked branches
233
        original_revid = trunk_tree.commit('mainline')
234
        self.assertRevisionInRepository('mainline', original_revid)
3221.20.3 by Ian Clatworthy
shallow -> stacked
235
        # and a branch from it which is stacked
236
        out, err = self.run_bzr(['branch', '--stacked', 'mainline',
3221.20.1 by Ian Clatworthy
tweaks by igc during review
237
            'newbranch'])
3221.11.20 by Robert Collins
Support --shallow on branch.
238
        self.assertEqual('', out)
3221.20.3 by Ian Clatworthy
shallow -> stacked
239
        self.assertEqual('Created new stacked branch referring to %s.\n' %
3221.11.20 by Robert Collins
Support --shallow on branch.
240
            trunk_tree.branch.base, err)
3517.4.11 by Martin Pool
Improved blackbox tests for stacked branches
241
        self.assertRevisionNotInRepository('newbranch', original_revid)
3221.11.20 by Robert Collins
Support --shallow on branch.
242
        new_tree = WorkingTree.open('newbranch')
243
        new_revid = new_tree.commit('new work')
3517.4.11 by Martin Pool
Improved blackbox tests for stacked branches
244
        self.check_shallow_branch(new_revid, trunk_tree.branch.base)
3221.11.20 by Robert Collins
Support --shallow on branch.
245
3221.15.10 by Robert Collins
Add test that we can stack on a smart server from Jonathan Lange.
246
    def test_branch_stacked_from_smart_server(self):
247
        # We can branch stacking on a smart server
248
        from bzrlib.smart.server import SmartTCPServer_for_testing
249
        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)
250
        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.
251
        out, err = self.run_bzr(
252
            ['branch', '--stacked', self.get_url('mainline'), 'shallow'])
253
3575.2.2 by Martin Pool
branch --stacked should force a stacked format
254
    def test_branch_stacked_from_non_stacked_format(self):
255
        """The origin format doesn't support stacking"""
256
        trunk = self.make_branch('trunk', format='pack-0.92')
257
        out, err = self.run_bzr(
258
            ['branch', '--stacked', 'trunk', 'shallow'])
3665.2.5 by John Arbash Meinel
Test that we alert the user to the upgrade.
259
        # 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.
260
        self.assertEqualDiff(
4401.1.3 by John Arbash Meinel
Change back to defaulting to --1.6 format, and update the blackbox tests.
261
            '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.
262
            '  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.
263
            'Source branch format does not support stacking, using format:\n'
264
            '  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.
265
            'Created new stacked branch referring to %s.\n' % (trunk.base,),
266
            err)
267
268
    def test_branch_stacked_from_rich_root_non_stackable(self):
269
        trunk = self.make_branch('trunk', format='rich-root-pack')
270
        out, err = self.run_bzr(
271
            ['branch', '--stacked', 'trunk', 'shallow'])
272
        # We should notify the user that we upgraded their format
273
        self.assertEqualDiff(
4401.1.3 by John Arbash Meinel
Change back to defaulting to --1.6 format, and update the blackbox tests.
274
            '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.
275
            '  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.
276
            'Source branch format does not support stacking, using format:\n'
277
            '  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.
278
            'Created new stacked branch referring to %s.\n' % (trunk.base,),
279
            err)
280
3575.2.2 by Martin Pool
branch --stacked should force a stacked format
281
4060.1.1 by Robert Collins
Add ratcheted acceptance test for branching from a smart server.
282
class TestSmartServerBranching(ExternalBase):
283
4060.1.4 by Robert Collins
Streaming fetch from remote servers.
284
    def test_branch_from_trivial_branch_to_same_server_branch_acceptance(self):
285
        self.setup_smart_server_with_call_log()
286
        t = self.make_branch_and_tree('from')
287
        for count in range(9):
288
            t.commit(message='commit %d' % count)
289
        self.reset_smart_call_log()
290
        out, err = self.run_bzr(['branch', self.get_url('from'),
291
            self.get_url('target')])
292
        # This figure represent the amount of work to perform this use case. It
293
        # is entirely ok to reduce this number if a test fails due to rpc_count
294
        # being too low. If rpc_count increases, more network roundtrips have
295
        # become necessary for this use case. Please do not adjust this number
296
        # 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.
297
        self.assertLength(38, self.hpss_calls)
4060.1.4 by Robert Collins
Streaming fetch from remote servers.
298
4060.1.1 by Robert Collins
Add ratcheted acceptance test for branching from a smart server.
299
    def test_branch_from_trivial_branch_streaming_acceptance(self):
300
        self.setup_smart_server_with_call_log()
301
        t = self.make_branch_and_tree('from')
302
        for count in range(9):
303
            t.commit(message='commit %d' % count)
304
        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.
305
        out, err = self.run_bzr(['branch', self.get_url('from'),
306
            'local-target'])
4060.1.1 by Robert Collins
Add ratcheted acceptance test for branching from a smart server.
307
        # This figure represent the amount of work to perform this use case. It
308
        # is entirely ok to reduce this number if a test fails due to rpc_count
309
        # being too low. If rpc_count increases, more network roundtrips have
310
        # become necessary for this use case. Please do not adjust this number
311
        # 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.
312
        self.assertLength(10, self.hpss_calls)
4060.1.1 by Robert Collins
Add ratcheted acceptance test for branching from a smart server.
313
4152.1.2 by Robert Collins
Add streaming from a stacked branch when the sort order is compatible with doing so.
314
    def test_branch_from_trivial_stacked_branch_streaming_acceptance(self):
315
        self.setup_smart_server_with_call_log()
316
        t = self.make_branch_and_tree('trunk')
317
        for count in range(8):
318
            t.commit(message='commit %d' % count)
319
        tree2 = t.branch.bzrdir.sprout('feature', stacked=True
320
            ).open_workingtree()
321
        tree2.commit('feature change')
322
        self.reset_smart_call_log()
323
        out, err = self.run_bzr(['branch', self.get_url('feature'),
324
            'local-target'])
325
        # This figure represent the amount of work to perform this use case. It
326
        # is entirely ok to reduce this number if a test fails due to rpc_count
327
        # being too low. If rpc_count increases, more network roundtrips have
328
        # become necessary for this use case. Please do not adjust this number
329
        # 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)
330
        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.
331
1711.2.5 by John Arbash Meinel
Factoring blackbox tests into their own file.
332
2485.8.59 by Vincent Ladeuil
Update from review comments.
333
class TestRemoteBranch(TestCaseWithSFTPServer):
334
335
    def setUp(self):
336
        super(TestRemoteBranch, self).setUp()
337
        tree = self.make_branch_and_tree('branch')
338
        self.build_tree_contents([('branch/file', 'file content\n')])
339
        tree.add('file')
340
        tree.commit('file created')
341
342
    def test_branch_local_remote(self):
343
        self.run_bzr(['branch', 'branch', self.get_url('remote')])
344
        t = self.get_transport()
2485.8.62 by Vincent Ladeuil
From review comments, fix typos and deprecate some functions.
345
        # Ensure that no working tree what created remotely
2485.8.59 by Vincent Ladeuil
Update from review comments.
346
        self.assertFalse(t.has('remote/file'))
347
348
    def test_branch_remote_remote(self):
349
        # Light cheat: we access the branch remotely
350
        self.run_bzr(['branch', self.get_url('branch'),
351
                      self.get_url('remote')])
352
        t = self.get_transport()
2485.8.62 by Vincent Ladeuil
From review comments, fix typos and deprecate some functions.
353
        # Ensure that no working tree what created remotely
2485.8.59 by Vincent Ladeuil
Update from review comments.
354
        self.assertFalse(t.has('remote/file'))
355