/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
2220.2.9 by Martin Pool
Add specific tests for push -d and pull -d
1
# Copyright (C) 2005, 2006 Canonical Ltd
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
2
#
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
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.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
7
#
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
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.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
12
#
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
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
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
16
17
1666.1.5 by Robert Collins
Merge bound branch test performance improvements.
18
"""Black-box tests for bzr pull."""
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
19
20
import os
21
import sys
22
23
from bzrlib.branch import Branch
3251.4.10 by Aaron Bentley
Pull of launchpad locations works (abentley, #181945)
24
from bzrlib.directory_service import directories
2738.2.5 by Daniel Watkins
Now use pathjoin in test_pull.
25
from bzrlib.osutils import pathjoin
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
26
from bzrlib.tests.blackbox import ExternalBase
1614.2.16 by Olaf Conradi
Modified blackbox test cases to use bzrlib API.
27
from bzrlib.uncommit import uncommit
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
28
from bzrlib.workingtree import WorkingTree
3848.1.2 by Aaron Bentley
Make test stricter
29
from bzrlib import urlutils
1614.2.8 by Olaf Conradi
Added testcases for using pull with --remember. Moved remember code to
30
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
31
1185.50.7 by John Arbash Meinel
Fix broken test from refactoring blackbox/test_pull
32
class TestPull(ExternalBase):
33
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
34
    def example_branch(self, path='.'):
35
        tree = self.make_branch_and_tree(path)
36
        self.build_tree_contents([
2738.2.5 by Daniel Watkins
Now use pathjoin in test_pull.
37
            (pathjoin(path, 'hello'),   'foo'),
38
            (pathjoin(path, 'goodbye'), 'baz')])
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
39
        tree.add('hello')
40
        tree.commit(message='setup')
41
        tree.add('goodbye')
42
        tree.commit(message='setup')
43
        return tree
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
44
45
    def test_pull(self):
46
        """Pull changes from one branch to another."""
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
47
        a_tree = self.example_branch('a')
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
48
        os.chdir('a')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
49
        self.run_bzr('pull', retcode=3)
50
        self.run_bzr('missing', retcode=3)
51
        self.run_bzr('missing .')
52
        self.run_bzr('missing')
1666.1.5 by Robert Collins
Merge bound branch test performance improvements.
53
        # this will work on windows because we check for the same branch
54
        # in pull - if it fails, it is a regression
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
55
        self.run_bzr('pull')
56
        self.run_bzr('pull /', retcode=3)
1185.31.31 by John Arbash Meinel
avoiding 'bzr pull .' means all tests pass under cygwin
57
        if sys.platform not in ('win32', 'cygwin'):
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
58
            self.run_bzr('pull')
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
59
60
        os.chdir('..')
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
61
        b_tree = a_tree.bzrdir.sprout('b').open_workingtree()
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
62
        os.chdir('b')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
63
        self.run_bzr('pull')
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
64
        os.mkdir('subdir')
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
65
        b_tree.add('subdir')
66
        b_tree.commit(message='blah', allow_pointless=True)
67
68
        os.chdir('..')
69
        a = Branch.open('a')
70
        b = Branch.open('b')
2738.2.4 by Daniel Watkins
Changed assertEquals to assertEqual.
71
        self.assertEqual(a.revision_history(), b.revision_history()[:-1])
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
72
73
        os.chdir('a')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
74
        self.run_bzr('pull ../b')
2738.2.4 by Daniel Watkins
Changed assertEquals to assertEqual.
75
        self.assertEqual(a.revision_history(), b.revision_history())
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
76
        a_tree.commit(message='blah2', allow_pointless=True)
77
        b_tree.commit(message='blah3', allow_pointless=True)
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
78
        # no overwrite
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
79
        os.chdir('../b')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
80
        self.run_bzr('pull ../a', retcode=3)
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
81
        os.chdir('..')
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
82
        b_tree.bzrdir.sprout('overwriteme')
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
83
        os.chdir('overwriteme')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
84
        self.run_bzr('pull --overwrite ../a')
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
85
        overwritten = Branch.open('.')
86
        self.assertEqual(overwritten.revision_history(),
87
                         a.revision_history())
2738.2.6 by Daniel Watkins
Now use internal merging.
88
        a_tree.merge_from_branch(b_tree.branch)
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
89
        a_tree.commit(message="blah4", allow_pointless=True)
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
90
        os.chdir('../b/subdir')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
91
        self.run_bzr('pull ../../a')
2738.2.4 by Daniel Watkins
Changed assertEquals to assertEqual.
92
        self.assertEqual(a.revision_history()[-1], b.revision_history()[-1])
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
93
        sub_tree = WorkingTree.open_containing('.')[0]
94
        sub_tree.commit(message="blah5", allow_pointless=True)
95
        sub_tree.commit(message="blah6", allow_pointless=True)
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
96
        os.chdir('..')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
97
        self.run_bzr('pull ../a')
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
98
        os.chdir('../a')
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
99
        a_tree.commit(message="blah7", allow_pointless=True)
100
        a_tree.merge_from_branch(b_tree.branch)
101
        a_tree.commit(message="blah8", allow_pointless=True)
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
102
        self.run_bzr('pull ../b')
103
        self.run_bzr('pull ../b')
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
104
2220.2.9 by Martin Pool
Add specific tests for push -d and pull -d
105
    def test_pull_dash_d(self):
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
106
        self.example_branch('a')
107
        self.make_branch_and_tree('b')
108
        self.make_branch_and_tree('c')
2220.2.9 by Martin Pool
Add specific tests for push -d and pull -d
109
        # pull into that branch
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
110
        self.run_bzr('pull -d b a')
2220.2.9 by Martin Pool
Add specific tests for push -d and pull -d
111
        # pull into a branch specified by a url
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
112
        c_url = urlutils.local_path_to_url('c')
2220.2.9 by Martin Pool
Add specific tests for push -d and pull -d
113
        self.assertStartsWith(c_url, 'file://')
2738.2.3 by Daniel Watkins
Fixed jam's concerns.
114
        self.run_bzr(['pull', '-d', c_url, 'a'])
2220.2.9 by Martin Pool
Add specific tests for push -d and pull -d
115
1185.76.2 by Erik Bågfors
test for pull --revision
116
    def test_pull_revision(self):
117
        """Pull some changes from one branch to another."""
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
118
        a_tree = self.example_branch('a')
119
        self.build_tree_contents([
120
            ('a/hello2',   'foo'),
121
            ('a/goodbye2', 'baz')])
122
        a_tree.add('hello2')
123
        a_tree.commit(message="setup")
124
        a_tree.add('goodbye2')
125
        a_tree.commit(message="setup")
126
127
        b_tree = a_tree.bzrdir.sprout('b',
128
                   revision_id=a_tree.branch.get_rev_id(1)).open_workingtree()
1185.76.2 by Erik Bågfors
test for pull --revision
129
        os.chdir('b')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
130
        self.run_bzr('pull -r 2')
1185.76.2 by Erik Bågfors
test for pull --revision
131
        a = Branch.open('../a')
132
        b = Branch.open('.')
2738.2.4 by Daniel Watkins
Changed assertEquals to assertEqual.
133
        self.assertEqual(a.revno(),4)
134
        self.assertEqual(b.revno(),2)
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
135
        self.run_bzr('pull -r 3')
2738.2.4 by Daniel Watkins
Changed assertEquals to assertEqual.
136
        self.assertEqual(b.revno(),3)
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
137
        self.run_bzr('pull -r 4')
2738.2.4 by Daniel Watkins
Changed assertEquals to assertEqual.
138
        self.assertEqual(a.revision_history(), b.revision_history())
1185.76.2 by Erik Bågfors
test for pull --revision
139
140
1185.50.7 by John Arbash Meinel
Fix broken test from refactoring blackbox/test_pull
141
    def test_overwrite_uptodate(self):
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
142
        # Make sure pull --overwrite overwrites
143
        # even if the target branch has merged
144
        # everything already.
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
145
        a_tree = self.make_branch_and_tree('a')
146
        self.build_tree_contents([('a/foo', 'original\n')])
147
        a_tree.add('foo')
148
        a_tree.commit(message='initial commit')
149
150
        b_tree = a_tree.bzrdir.sprout('b').open_workingtree()
151
152
        self.build_tree_contents([('a/foo', 'changed\n')])
153
        a_tree.commit(message='later change')
154
155
        self.build_tree_contents([('a/foo', 'a third change')])
156
        a_tree.commit(message='a third change')
157
2738.2.1 by Daniel Watkins
Merged original fixes.
158
        rev_history_a = a_tree.branch.revision_history()
159
        self.assertEqual(len(rev_history_a), 3)
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
160
161
        b_tree.merge_from_branch(a_tree.branch)
162
        b_tree.commit(message='merge')
163
164
        self.assertEqual(len(b_tree.branch.revision_history()), 2)
165
166
        os.chdir('b')
167
        self.run_bzr('pull --overwrite ../a')
2738.2.1 by Daniel Watkins
Merged original fixes.
168
        rev_history_b = b_tree.branch.revision_history()
169
        self.assertEqual(len(rev_history_b), 3)
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
170
171
        self.assertEqual(rev_history_b, rev_history_a)
172
1185.50.7 by John Arbash Meinel
Fix broken test from refactoring blackbox/test_pull
173
    def test_overwrite_children(self):
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
174
        # Make sure pull --overwrite sets the revision-history
175
        # to be identical to the pull source, even if we have convergence
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
176
        a_tree = self.make_branch_and_tree('a')
177
        self.build_tree_contents([('a/foo', 'original\n')])
178
        a_tree.add('foo')
179
        a_tree.commit(message='initial commit')
180
181
        b_tree = a_tree.bzrdir.sprout('b').open_workingtree()
182
183
        self.build_tree_contents([('a/foo', 'changed\n')])
184
        a_tree.commit(message='later change')
185
186
        self.build_tree_contents([('a/foo', 'a third change')])
187
        a_tree.commit(message='a third change')
188
189
        self.assertEqual(len(a_tree.branch.revision_history()), 3)
190
191
        b_tree.merge_from_branch(a_tree.branch)
192
        b_tree.commit(message='merge')
193
194
        self.assertEqual(len(b_tree.branch.revision_history()), 2)
195
196
        self.build_tree_contents([('a/foo', 'a fourth change\n')])
197
        a_tree.commit(message='a fourth change')
198
2738.2.1 by Daniel Watkins
Merged original fixes.
199
        rev_history_a = a_tree.branch.revision_history()
200
        self.assertEqual(len(rev_history_a), 4)
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
201
202
        # With convergence, we could just pull over the
203
        # new change, but with --overwrite, we want to switch our history
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
204
        os.chdir('b')
205
        self.run_bzr('pull --overwrite ../a')
2738.2.1 by Daniel Watkins
Merged original fixes.
206
        rev_history_b = b_tree.branch.revision_history()
207
        self.assertEqual(len(rev_history_b), 4)
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
208
209
        self.assertEqual(rev_history_b, rev_history_a)
210
1614.2.8 by Olaf Conradi
Added testcases for using pull with --remember. Moved remember code to
211
    def test_pull_remember(self):
212
        """Pull changes from one branch to another and test parent location."""
1614.2.16 by Olaf Conradi
Modified blackbox test cases to use bzrlib API.
213
        transport = self.get_transport()
214
        tree_a = self.make_branch_and_tree('branch_a')
215
        branch_a = tree_a.branch
216
        self.build_tree(['branch_a/a'])
217
        tree_a.add('a')
218
        tree_a.commit('commit a')
1666.1.4 by Robert Collins
* 'Metadir' is now the default disk format. This improves behaviour in
219
        tree_b = branch_a.bzrdir.sprout('branch_b').open_workingtree()
220
        branch_b = tree_b.branch
221
        tree_c = branch_a.bzrdir.sprout('branch_c').open_workingtree()
222
        branch_c = tree_c.branch
1614.2.16 by Olaf Conradi
Modified blackbox test cases to use bzrlib API.
223
        self.build_tree(['branch_a/b'])
224
        tree_a.add('b')
225
        tree_a.commit('commit b')
1614.2.8 by Olaf Conradi
Added testcases for using pull with --remember. Moved remember code to
226
        # reset parent
1614.2.16 by Olaf Conradi
Modified blackbox test cases to use bzrlib API.
227
        parent = branch_b.get_parent()
228
        branch_b.set_parent(None)
229
        self.assertEqual(None, branch_b.get_parent())
1614.2.8 by Olaf Conradi
Added testcases for using pull with --remember. Moved remember code to
230
        # test pull for failure without parent set
1614.2.16 by Olaf Conradi
Modified blackbox test cases to use bzrlib API.
231
        os.chdir('branch_b')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
232
        out = self.run_bzr('pull', retcode=3)
2738.2.4 by Daniel Watkins
Changed assertEquals to assertEqual.
233
        self.assertEqual(out,
1614.2.8 by Olaf Conradi
Added testcases for using pull with --remember. Moved remember code to
234
                ('','bzr: ERROR: No pull location known or specified.\n'))
235
        # test implicit --remember when no parent set, this pull conflicts
1614.2.16 by Olaf Conradi
Modified blackbox test cases to use bzrlib API.
236
        self.build_tree(['d'])
237
        tree_b.add('d')
238
        tree_b.commit('commit d')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
239
        out = self.run_bzr('pull ../branch_a', retcode=3)
2738.2.4 by Daniel Watkins
Changed assertEquals to assertEqual.
240
        self.assertEqual(out,
2221.5.13 by Dmitry Vasiliev
Fixed expected message in test
241
                ('','bzr: ERROR: These branches have diverged.'
4297.3.3 by Jelmer Vernooij
Fix pull --remember test.
242
                    ' Use the missing command to see how.\n'
243
                    'Use the merge command to reconcile them.\n'))
2738.2.4 by Daniel Watkins
Changed assertEquals to assertEqual.
244
        self.assertEqual(branch_b.get_parent(), parent)
1614.2.8 by Olaf Conradi
Added testcases for using pull with --remember. Moved remember code to
245
        # test implicit --remember after resolving previous failure
1614.2.16 by Olaf Conradi
Modified blackbox test cases to use bzrlib API.
246
        uncommit(branch=branch_b, tree=tree_b)
247
        transport.delete('branch_b/d')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
248
        self.run_bzr('pull')
2738.2.4 by Daniel Watkins
Changed assertEquals to assertEqual.
249
        self.assertEqual(branch_b.get_parent(), parent)
1614.2.8 by Olaf Conradi
Added testcases for using pull with --remember. Moved remember code to
250
        # test explicit --remember
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
251
        self.run_bzr('pull ../branch_c --remember')
2738.2.4 by Daniel Watkins
Changed assertEquals to assertEqual.
252
        self.assertEqual(branch_b.get_parent(),
1685.1.19 by John Arbash Meinel
pull/merge/branch/missing should all save the absolute path to the other branch, not the relative one
253
                          branch_c.bzrdir.root_transport.base)
1711.3.3 by John Arbash Meinel
Allow pull to use a bundle as a target,
254
255
    def test_pull_bundle(self):
256
        from bzrlib.testament import Testament
257
        # Build up 2 trees and prepare for a pull
258
        tree_a = self.make_branch_and_tree('branch_a')
259
        f = open('branch_a/a', 'wb')
260
        f.write('hello')
261
        f.close()
262
        tree_a.add('a')
263
        tree_a.commit('message')
264
265
        tree_b = tree_a.bzrdir.sprout('branch_b').open_workingtree()
266
267
        # Make a change to 'a' that 'b' can pull
268
        f = open('branch_a/a', 'wb')
269
        f.write('hey there')
270
        f.close()
271
        tree_a.commit('message')
272
273
        # Create the bundle for 'b' to pull
274
        os.chdir('branch_a')
2654.3.1 by Aaron Bentley
Rename submit to send, make -o required, support -o- for stdout
275
        self.run_bzr('bundle ../branch_b -o ../bundle')
1711.3.3 by John Arbash Meinel
Allow pull to use a bundle as a target,
276
277
        os.chdir('../branch_b')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
278
        out, err = self.run_bzr('pull ../bundle')
2220.2.39 by Martin Pool
Pull also merges tags and warns if they conflict
279
        self.assertEqual(out,
280
                         'Now on revision 2.\n')
281
        self.assertEqual(err,
282
                ' M  a\nAll changes applied successfully.\n')
1711.3.3 by John Arbash Meinel
Allow pull to use a bundle as a target,
283
284
        self.assertEqualDiff(tree_a.branch.revision_history(),
285
                             tree_b.branch.revision_history())
286
1908.7.6 by Robert Collins
Deprecate WorkingTree.last_revision.
287
        testament_a = Testament.from_revision(tree_a.branch.repository,
288
                                              tree_a.get_parent_ids()[0])
1711.3.3 by John Arbash Meinel
Allow pull to use a bundle as a target,
289
        testament_b = Testament.from_revision(tree_b.branch.repository,
1908.7.6 by Robert Collins
Deprecate WorkingTree.last_revision.
290
                                              tree_b.get_parent_ids()[0])
1711.3.3 by John Arbash Meinel
Allow pull to use a bundle as a target,
291
        self.assertEqualDiff(testament_a.as_text(),
292
                             testament_b.as_text())
293
294
        # it is legal to attempt to pull an already-merged bundle
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
295
        out, err = self.run_bzr('pull ../bundle')
2220.2.39 by Martin Pool
Pull also merges tags and warns if they conflict
296
        self.assertEqual(err, '')
297
        self.assertEqual(out, 'No revisions to pull.\n')
1551.17.2 by Aaron Bentley
Stop showing deltas in pull -v output
298
299
    def test_pull_verbose_no_files(self):
300
        """Pull --verbose should not list modified files"""
301
        tree_a = self.make_branch_and_tree('tree_a')
302
        self.build_tree(['tree_a/foo'])
303
        tree_a.add('foo')
304
        tree_a.commit('bar')
305
        tree_b = self.make_branch_and_tree('tree_b')
306
        out = self.run_bzr('pull --verbose -d tree_b tree_a')[0]
307
        self.assertContainsRe(out, 'bar')
308
        self.assertNotContainsRe(out, 'added:')
309
        self.assertNotContainsRe(out, 'foo')
3200.1.1 by James Westby
Make pull --quiet more quiet. Fixes #185907.
310
311
    def test_pull_quiet(self):
312
        """Check that bzr pull --quiet does not print anything"""
313
        tree_a = self.make_branch_and_tree('tree_a')
314
        self.build_tree(['tree_a/foo'])
315
        tree_a.add('foo')
3200.1.2 by James Westby
Check that the pull succeeds even when printing nothing.
316
        revision_id = tree_a.commit('bar')
3200.1.1 by James Westby
Make pull --quiet more quiet. Fixes #185907.
317
        tree_b = tree_a.bzrdir.sprout('tree_b').open_workingtree()
318
        out, err = self.run_bzr('pull --quiet -d tree_b')
319
        self.assertEqual(out, '')
320
        self.assertEqual(err, '')
3200.1.2 by James Westby
Check that the pull succeeds even when printing nothing.
321
        self.assertEqual(tree_b.last_revision(), revision_id)
3200.1.1 by James Westby
Make pull --quiet more quiet. Fixes #185907.
322
        self.build_tree(['tree_a/moo'])
323
        tree_a.add('moo')
3200.1.2 by James Westby
Check that the pull succeeds even when printing nothing.
324
        revision_id = tree_a.commit('quack')
3200.1.1 by James Westby
Make pull --quiet more quiet. Fixes #185907.
325
        out, err = self.run_bzr('pull --quiet -d tree_b')
326
        self.assertEqual(out, '')
327
        self.assertEqual(err, '')
3200.1.2 by James Westby
Check that the pull succeeds even when printing nothing.
328
        self.assertEqual(tree_b.last_revision(), revision_id)
3251.4.10 by Aaron Bentley
Pull of launchpad locations works (abentley, #181945)
329
3251.4.12 by Aaron Bentley
Updates from review
330
    def test_pull_from_directory_service(self):
3251.4.10 by Aaron Bentley
Pull of launchpad locations works (abentley, #181945)
331
        source = self.make_branch_and_tree('source')
332
        source.commit('commit 1')
333
        target = source.bzrdir.sprout('target').open_workingtree()
334
        source_last = source.commit('commit 2')
335
        class FooService(object):
336
            """A directory service that always returns source"""
337
338
            def look_up(self, name, url):
339
                return 'source'
3251.4.12 by Aaron Bentley
Updates from review
340
        directories.register('foo:', FooService, 'Testing directory service')
3251.4.10 by Aaron Bentley
Pull of launchpad locations works (abentley, #181945)
341
        self.addCleanup(lambda: directories.remove('foo:'))
342
        self.run_bzr('pull foo:bar -d target')
343
        self.assertEqual(source_last, target.last_revision())
3848.1.1 by Aaron Bentley
Use default log format in pull -v
344
345
    def test_pull_verbose_defaults_to_long(self):
346
        tree = self.example_branch('source')
347
        target = self.make_branch_and_tree('target')
348
        out = self.run_bzr('pull -v source -d target')[0]
349
        self.assertContainsRe(out,
350
                              r'revno: 1\ncommitter: .*\nbranch nick: source')
3848.1.5 by Aaron Bentley
Updates from review
351
        self.assertNotContainsRe(out, r'\n {4}1 .*\n {6}setup\n')
3848.1.1 by Aaron Bentley
Use default log format in pull -v
352
353
    def test_pull_verbose_uses_default_log(self):
354
        tree = self.example_branch('source')
355
        target = self.make_branch_and_tree('target')
3848.1.2 by Aaron Bentley
Make test stricter
356
        target_config = target.branch.get_config()
357
        target_config.set_user_option('log_format', 'short')
3848.1.1 by Aaron Bentley
Use default log format in pull -v
358
        out = self.run_bzr('pull -v source -d target')[0]
359
        self.assertContainsRe(out, r'\n {4}1 .*\n {6}setup\n')
3848.1.5 by Aaron Bentley
Updates from review
360
        self.assertNotContainsRe(
361
            out, r'revno: 1\ncommitter: .*\nbranch nick: source')
4419.1.1 by Andrew Bennetts
Failing blackbox acceptance test for bug 380314.
362
363
    def test_pull_smart_stacked_streaming_acceptance(self):
4419.1.6 by Andrew Bennetts
Add comments requested by Martin's review.
364
        """'bzr pull -r 123' works on stacked, smart branches, even when the
365
        revision specified by the revno is only present in the fallback
366
        repository.
367
368
        See <https://launchpad.net/bugs/380314>
369
        """
4419.1.1 by Andrew Bennetts
Failing blackbox acceptance test for bug 380314.
370
        self.setup_smart_server_with_call_log()
4419.2.4 by Andrew Bennetts
Add Repository.get_rev_id_for_revno RPC, removes VFS calls from 'pull -r 123' case.
371
        # Make a stacked-on branch with two commits so that the
372
        # revision-history can't be determined just by looking at the parent
373
        # field in the revision in the stacked repo.
4419.1.1 by Andrew Bennetts
Failing blackbox acceptance test for bug 380314.
374
        parent = self.make_branch_and_tree('parent', format='1.9')
375
        parent.commit(message='first commit')
4419.2.4 by Andrew Bennetts
Add Repository.get_rev_id_for_revno RPC, removes VFS calls from 'pull -r 123' case.
376
        parent.commit(message='second commit')
4419.1.1 by Andrew Bennetts
Failing blackbox acceptance test for bug 380314.
377
        local = parent.bzrdir.sprout('local').open_workingtree()
378
        local.commit(message='local commit')
379
        local.branch.create_clone_on_transport(
380
            self.get_transport('stacked'), stacked_on=self.get_url('parent'))
381
        empty = self.make_branch_and_tree('empty', format='1.9')
382
        self.reset_smart_call_log()
383
        self.run_bzr(['pull', '-r', '1', self.get_url('stacked')],
384
            working_dir='empty')
385
        # This figure represent the amount of work to perform this use case. It
386
        # is entirely ok to reduce this number if a test fails due to rpc_count
387
        # being too low. If rpc_count increases, more network roundtrips have
388
        # become necessary for this use case. Please do not adjust this number
389
        # upwards without agreement from bzr's network support maintainers.
4419.2.4 by Andrew Bennetts
Add Repository.get_rev_id_for_revno RPC, removes VFS calls from 'pull -r 123' case.
390
        self.assertLength(18, self.hpss_calls)
4419.1.1 by Andrew Bennetts
Failing blackbox acceptance test for bug 380314.
391
        remote = Branch.open('stacked')
392
        self.assertEndsWith(remote.get_stacked_on_url(), '/parent')
393