~bzr-pqm/bzr/bzr.dev

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
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
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
2220.2.9 by Martin Pool
Add specific tests for push -d and pull -d
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.'
242
                    ' Use the merge command to reconcile them.\n'))
2738.2.4 by Daniel Watkins
Changed assertEquals to assertEqual.
243
        self.assertEqual(branch_b.get_parent(), parent)
1614.2.8 by Olaf Conradi
Added testcases for using pull with --remember. Moved remember code to
244
        # test implicit --remember after resolving previous failure
1614.2.16 by Olaf Conradi
Modified blackbox test cases to use bzrlib API.
245
        uncommit(branch=branch_b, tree=tree_b)
246
        transport.delete('branch_b/d')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
247
        self.run_bzr('pull')
2738.2.4 by Daniel Watkins
Changed assertEquals to assertEqual.
248
        self.assertEqual(branch_b.get_parent(), parent)
1614.2.8 by Olaf Conradi
Added testcases for using pull with --remember. Moved remember code to
249
        # test explicit --remember
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
250
        self.run_bzr('pull ../branch_c --remember')
2738.2.4 by Daniel Watkins
Changed assertEquals to assertEqual.
251
        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
252
                          branch_c.bzrdir.root_transport.base)
1711.3.3 by John Arbash Meinel
Allow pull to use a bundle as a target,
253
254
    def test_pull_bundle(self):
255
        from bzrlib.testament import Testament
256
        # Build up 2 trees and prepare for a pull
257
        tree_a = self.make_branch_and_tree('branch_a')
258
        f = open('branch_a/a', 'wb')
259
        f.write('hello')
260
        f.close()
261
        tree_a.add('a')
262
        tree_a.commit('message')
263
264
        tree_b = tree_a.bzrdir.sprout('branch_b').open_workingtree()
265
266
        # Make a change to 'a' that 'b' can pull
267
        f = open('branch_a/a', 'wb')
268
        f.write('hey there')
269
        f.close()
270
        tree_a.commit('message')
271
272
        # Create the bundle for 'b' to pull
273
        os.chdir('branch_a')
2654.3.1 by Aaron Bentley
Rename submit to send, make -o required, support -o- for stdout
274
        self.run_bzr('bundle ../branch_b -o ../bundle')
1711.3.3 by John Arbash Meinel
Allow pull to use a bundle as a target,
275
276
        os.chdir('../branch_b')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
277
        out, err = self.run_bzr('pull ../bundle')
2220.2.39 by Martin Pool
Pull also merges tags and warns if they conflict
278
        self.assertEqual(out,
279
                         'Now on revision 2.\n')
280
        self.assertEqual(err,
281
                ' M  a\nAll changes applied successfully.\n')
1711.3.3 by John Arbash Meinel
Allow pull to use a bundle as a target,
282
283
        self.assertEqualDiff(tree_a.branch.revision_history(),
284
                             tree_b.branch.revision_history())
285
1908.7.6 by Robert Collins
Deprecate WorkingTree.last_revision.
286
        testament_a = Testament.from_revision(tree_a.branch.repository,
287
                                              tree_a.get_parent_ids()[0])
1711.3.3 by John Arbash Meinel
Allow pull to use a bundle as a target,
288
        testament_b = Testament.from_revision(tree_b.branch.repository,
1908.7.6 by Robert Collins
Deprecate WorkingTree.last_revision.
289
                                              tree_b.get_parent_ids()[0])
1711.3.3 by John Arbash Meinel
Allow pull to use a bundle as a target,
290
        self.assertEqualDiff(testament_a.as_text(),
291
                             testament_b.as_text())
292
293
        # 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.
294
        out, err = self.run_bzr('pull ../bundle')
2220.2.39 by Martin Pool
Pull also merges tags and warns if they conflict
295
        self.assertEqual(err, '')
296
        self.assertEqual(out, 'No revisions to pull.\n')
1551.17.2 by Aaron Bentley
Stop showing deltas in pull -v output
297
298
    def test_pull_verbose_no_files(self):
299
        """Pull --verbose should not list modified files"""
300
        tree_a = self.make_branch_and_tree('tree_a')
301
        self.build_tree(['tree_a/foo'])
302
        tree_a.add('foo')
303
        tree_a.commit('bar')
304
        tree_b = self.make_branch_and_tree('tree_b')
305
        out = self.run_bzr('pull --verbose -d tree_b tree_a')[0]
306
        self.assertContainsRe(out, 'bar')
307
        self.assertNotContainsRe(out, 'added:')
308
        self.assertNotContainsRe(out, 'foo')
3200.1.1 by James Westby
Make pull --quiet more quiet. Fixes #185907.
309
310
    def test_pull_quiet(self):
311
        """Check that bzr pull --quiet does not print anything"""
312
        tree_a = self.make_branch_and_tree('tree_a')
313
        self.build_tree(['tree_a/foo'])
314
        tree_a.add('foo')
3200.1.2 by James Westby
Check that the pull succeeds even when printing nothing.
315
        revision_id = tree_a.commit('bar')
3200.1.1 by James Westby
Make pull --quiet more quiet. Fixes #185907.
316
        tree_b = tree_a.bzrdir.sprout('tree_b').open_workingtree()
317
        out, err = self.run_bzr('pull --quiet -d tree_b')
318
        self.assertEqual(out, '')
319
        self.assertEqual(err, '')
3200.1.2 by James Westby
Check that the pull succeeds even when printing nothing.
320
        self.assertEqual(tree_b.last_revision(), revision_id)
3200.1.1 by James Westby
Make pull --quiet more quiet. Fixes #185907.
321
        self.build_tree(['tree_a/moo'])
322
        tree_a.add('moo')
3200.1.2 by James Westby
Check that the pull succeeds even when printing nothing.
323
        revision_id = tree_a.commit('quack')
3200.1.1 by James Westby
Make pull --quiet more quiet. Fixes #185907.
324
        out, err = self.run_bzr('pull --quiet -d tree_b')
325
        self.assertEqual(out, '')
326
        self.assertEqual(err, '')
3200.1.2 by James Westby
Check that the pull succeeds even when printing nothing.
327
        self.assertEqual(tree_b.last_revision(), revision_id)
3251.4.10 by Aaron Bentley
Pull of launchpad locations works (abentley, #181945)
328
3251.4.12 by Aaron Bentley
Updates from review
329
    def test_pull_from_directory_service(self):
3251.4.10 by Aaron Bentley
Pull of launchpad locations works (abentley, #181945)
330
        source = self.make_branch_and_tree('source')
331
        source.commit('commit 1')
332
        target = source.bzrdir.sprout('target').open_workingtree()
333
        source_last = source.commit('commit 2')
334
        class FooService(object):
335
            """A directory service that always returns source"""
336
337
            def look_up(self, name, url):
338
                return 'source'
3251.4.12 by Aaron Bentley
Updates from review
339
        directories.register('foo:', FooService, 'Testing directory service')
3251.4.10 by Aaron Bentley
Pull of launchpad locations works (abentley, #181945)
340
        self.addCleanup(lambda: directories.remove('foo:'))
341
        self.run_bzr('pull foo:bar -d target')
342
        self.assertEqual(source_last, target.last_revision())