~bzr-pqm/bzr/bzr.dev

6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
1
# Copyright (C) 2005-2012 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
4634.124.3 by Martin Pool
Give a warning from pulling across the network from a different format
23
from bzrlib import (
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
24
    branch,
4634.124.3 by Martin Pool
Give a warning from pulling across the network from a different format
25
    debug,
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
26
    osutils,
4634.124.3 by Martin Pool
Give a warning from pulling across the network from a different format
27
    remote,
6175.2.4 by Vincent Ladeuil
Add script tests and documentation.
28
    tests,
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
29
    uncommit,
4634.124.3 by Martin Pool
Give a warning from pulling across the network from a different format
30
    urlutils,
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
31
    workingtree,
4634.124.3 by Martin Pool
Give a warning from pulling across the network from a different format
32
    )
33
3251.4.10 by Aaron Bentley
Pull of launchpad locations works (abentley, #181945)
34
from bzrlib.directory_service import directories
5651.5.3 by Andrew Bennetts
Use new fixture in more tests.
35
from bzrlib.tests import (
36
    fixtures,
6175.2.4 by Vincent Ladeuil
Add script tests and documentation.
37
    script,
5651.5.3 by Andrew Bennetts
Use new fixture in more tests.
38
    )
1614.2.8 by Olaf Conradi
Added testcases for using pull with --remember. Moved remember code to
39
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
40
6175.2.4 by Vincent Ladeuil
Add script tests and documentation.
41
class TestPull(tests.TestCaseWithTransport):
1185.50.7 by John Arbash Meinel
Fix broken test from refactoring blackbox/test_pull
42
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
43
    def example_branch(self, path='.'):
44
        tree = self.make_branch_and_tree(path)
45
        self.build_tree_contents([
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
46
            (osutils.pathjoin(path, 'hello'),   'foo'),
47
            (osutils.pathjoin(path, 'goodbye'), 'baz')])
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
48
        tree.add('hello')
49
        tree.commit(message='setup')
50
        tree.add('goodbye')
51
        tree.commit(message='setup')
52
        return tree
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
53
54
    def test_pull(self):
55
        """Pull changes from one branch to another."""
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
56
        a_tree = self.example_branch('a')
6165.4.7 by Jelmer Vernooij
More fixes.
57
        base_rev = a_tree.branch.last_revision()
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
58
        self.run_bzr('pull', retcode=3, working_dir='a')
59
        self.run_bzr('missing', retcode=3, working_dir='a')
60
        self.run_bzr('missing .', working_dir='a')
61
        self.run_bzr('missing', working_dir='a')
1666.1.5 by Robert Collins
Merge bound branch test performance improvements.
62
        # this will work on windows because we check for the same branch
63
        # in pull - if it fails, it is a regression
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
64
        self.run_bzr('pull', working_dir='a')
65
        self.run_bzr('pull /', retcode=3, working_dir='a')
1185.31.31 by John Arbash Meinel
avoiding 'bzr pull .' means all tests pass under cygwin
66
        if sys.platform not in ('win32', 'cygwin'):
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
67
            self.run_bzr('pull', working_dir='a')
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
68
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
69
        b_tree = a_tree.bzrdir.sprout('b').open_workingtree()
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
70
        self.run_bzr('pull', working_dir='b')
71
        os.mkdir('b/subdir')
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
72
        b_tree.add('subdir')
6165.4.7 by Jelmer Vernooij
More fixes.
73
        new_rev = b_tree.commit(message='blah', allow_pointless=True)
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
74
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
75
        a = branch.Branch.open('a')
76
        b = branch.Branch.open('b')
6165.4.7 by Jelmer Vernooij
More fixes.
77
        self.assertEqual(a.last_revision(), base_rev)
78
        self.assertEqual(b.last_revision(), new_rev)
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
79
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
80
        self.run_bzr('pull ../b', working_dir='a')
6165.4.6 by Jelmer Vernooij
Avoid more uses of revision_history.
81
        self.assertEqual(a.last_revision(), b.last_revision())
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
82
        a_tree.commit(message='blah2', allow_pointless=True)
83
        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)
84
        # no overwrite
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
85
        self.run_bzr('pull ../a', retcode=3, working_dir='b')
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
86
        b_tree.bzrdir.sprout('overwriteme')
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
87
        self.run_bzr('pull --overwrite ../a', working_dir='overwriteme')
88
        overwritten = branch.Branch.open('overwriteme')
6165.4.4 by Jelmer Vernooij
Avoid .revision_history().
89
        self.assertEqual(overwritten.last_revision(),
90
                         a.last_revision())
2738.2.6 by Daniel Watkins
Now use internal merging.
91
        a_tree.merge_from_branch(b_tree.branch)
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
92
        a_tree.commit(message="blah4", allow_pointless=True)
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
93
94
        self.run_bzr('pull ../../a', working_dir='b/subdir')
6165.4.1 by Jelmer Vernooij
Avoid using revision_history.
95
        self.assertEqual(a.last_revision(), b.last_revision())
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
96
        sub_tree = workingtree.WorkingTree.open_containing('b/subdir')[0]
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
97
        sub_tree.commit(message="blah5", allow_pointless=True)
98
        sub_tree.commit(message="blah6", allow_pointless=True)
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
99
        self.run_bzr('pull ../a', working_dir='b')
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
100
        a_tree.commit(message="blah7", allow_pointless=True)
101
        a_tree.merge_from_branch(b_tree.branch)
102
        a_tree.commit(message="blah8", allow_pointless=True)
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
103
        self.run_bzr('pull ../b', working_dir='a')
104
        self.run_bzr('pull ../b', working_dir='a')
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
105
2220.2.9 by Martin Pool
Add specific tests for push -d and pull -d
106
    def test_pull_dash_d(self):
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
107
        self.example_branch('a')
108
        self.make_branch_and_tree('b')
109
        self.make_branch_and_tree('c')
2220.2.9 by Martin Pool
Add specific tests for push -d and pull -d
110
        # pull into that branch
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
111
        self.run_bzr('pull -d b a')
2220.2.9 by Martin Pool
Add specific tests for push -d and pull -d
112
        # pull into a branch specified by a url
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
113
        c_url = urlutils.local_path_to_url('c')
2220.2.9 by Martin Pool
Add specific tests for push -d and pull -d
114
        self.assertStartsWith(c_url, 'file://')
2738.2.3 by Daniel Watkins
Fixed jam's concerns.
115
        self.run_bzr(['pull', '-d', c_url, 'a'])
2220.2.9 by Martin Pool
Add specific tests for push -d and pull -d
116
1185.76.2 by Erik Bågfors
test for pull --revision
117
    def test_pull_revision(self):
118
        """Pull some changes from one branch to another."""
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
119
        a_tree = self.example_branch('a')
120
        self.build_tree_contents([
121
            ('a/hello2',   'foo'),
122
            ('a/goodbye2', 'baz')])
123
        a_tree.add('hello2')
124
        a_tree.commit(message="setup")
125
        a_tree.add('goodbye2')
126
        a_tree.commit(message="setup")
127
128
        b_tree = a_tree.bzrdir.sprout('b',
129
                   revision_id=a_tree.branch.get_rev_id(1)).open_workingtree()
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
130
        self.run_bzr('pull -r 2', working_dir='b')
131
        a = branch.Branch.open('a')
132
        b = branch.Branch.open('b')
2738.2.4 by Daniel Watkins
Changed assertEquals to assertEqual.
133
        self.assertEqual(a.revno(),4)
134
        self.assertEqual(b.revno(),2)
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
135
        self.run_bzr('pull -r 3', working_dir='b')
2738.2.4 by Daniel Watkins
Changed assertEquals to assertEqual.
136
        self.assertEqual(b.revno(),3)
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
137
        self.run_bzr('pull -r 4', working_dir='b')
6165.4.4 by Jelmer Vernooij
Avoid .revision_history().
138
        self.assertEqual(a.last_revision(), b.last_revision())
1185.76.2 by Erik Bågfors
test for pull --revision
139
5535.3.28 by Andrew Bennetts
Implement fetching tags during branch pull. Needs more tests.
140
    def test_pull_tags(self):
141
        """Tags are updated by pull, and revisions named in those tags are
142
        fetched.
143
        """
144
        # Make a source, sprout a target off it
145
        builder = self.make_branch_builder('source')
5651.5.3 by Andrew Bennetts
Use new fixture in more tests.
146
        source = fixtures.build_branch_with_non_ancestral_rev(builder)
6404.6.7 by Vincent Ladeuil
Change set/remove to require a lock for the branch config files.
147
        source.get_config_stack().set('branch.fetch_tags', True)
5535.3.28 by Andrew Bennetts
Implement fetching tags during branch pull. Needs more tests.
148
        target_bzrdir = source.bzrdir.sprout('target')
149
        source.tags.set_tag('tag-a', 'rev-2')
150
        # Pull from source
151
        self.run_bzr('pull -d target source')
152
        target = target_bzrdir.open_branch()
153
        # The tag is present, and so is its revision.
154
        self.assertEqual('rev-2', target.tags.lookup_tag('tag-a'))
155
        target.repository.get_revision('rev-2')
156
1185.50.7 by John Arbash Meinel
Fix broken test from refactoring blackbox/test_pull
157
    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)
158
        # Make sure pull --overwrite overwrites
159
        # even if the target branch has merged
160
        # everything already.
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
161
        a_tree = self.make_branch_and_tree('a')
162
        self.build_tree_contents([('a/foo', 'original\n')])
163
        a_tree.add('foo')
164
        a_tree.commit(message='initial commit')
165
166
        b_tree = a_tree.bzrdir.sprout('b').open_workingtree()
167
168
        self.build_tree_contents([('a/foo', 'changed\n')])
169
        a_tree.commit(message='later change')
170
171
        self.build_tree_contents([('a/foo', 'a third change')])
172
        a_tree.commit(message='a third change')
173
6165.4.4 by Jelmer Vernooij
Avoid .revision_history().
174
        self.assertEqual(a_tree.branch.last_revision_info()[0], 3)
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
175
176
        b_tree.merge_from_branch(a_tree.branch)
177
        b_tree.commit(message='merge')
178
6165.4.4 by Jelmer Vernooij
Avoid .revision_history().
179
        self.assertEqual(b_tree.branch.last_revision_info()[0], 2)
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
180
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
181
        self.run_bzr('pull --overwrite ../a', working_dir='b')
6165.4.4 by Jelmer Vernooij
Avoid .revision_history().
182
        (last_revinfo_b) = b_tree.branch.last_revision_info()
183
        self.assertEqual(last_revinfo_b[0], 3)
184
        self.assertEqual(last_revinfo_b[1], a_tree.branch.last_revision())
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
185
1185.50.7 by John Arbash Meinel
Fix broken test from refactoring blackbox/test_pull
186
    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)
187
        # Make sure pull --overwrite sets the revision-history
188
        # 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.
189
        a_tree = self.make_branch_and_tree('a')
190
        self.build_tree_contents([('a/foo', 'original\n')])
191
        a_tree.add('foo')
192
        a_tree.commit(message='initial commit')
193
194
        b_tree = a_tree.bzrdir.sprout('b').open_workingtree()
195
196
        self.build_tree_contents([('a/foo', 'changed\n')])
197
        a_tree.commit(message='later change')
198
199
        self.build_tree_contents([('a/foo', 'a third change')])
200
        a_tree.commit(message='a third change')
201
6165.4.4 by Jelmer Vernooij
Avoid .revision_history().
202
        self.assertEqual(a_tree.branch.last_revision_info()[0], 3)
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
203
204
        b_tree.merge_from_branch(a_tree.branch)
205
        b_tree.commit(message='merge')
206
6165.4.4 by Jelmer Vernooij
Avoid .revision_history().
207
        self.assertEqual(b_tree.branch.last_revision_info()[0], 2)
2664.11.2 by Daniel Watkins
tests.blackbox.test_pull now uses internals where appropriate.
208
209
        self.build_tree_contents([('a/foo', 'a fourth change\n')])
210
        a_tree.commit(message='a fourth change')
211
6165.4.4 by Jelmer Vernooij
Avoid .revision_history().
212
        rev_info_a = a_tree.branch.last_revision_info()
6165.4.7 by Jelmer Vernooij
More fixes.
213
        self.assertEqual(rev_info_a[0], 4)
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
214
215
        # With convergence, we could just pull over the
216
        # new change, but with --overwrite, we want to switch our history
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
217
        self.run_bzr('pull --overwrite ../a', working_dir='b')
6165.4.4 by Jelmer Vernooij
Avoid .revision_history().
218
        rev_info_b = b_tree.branch.last_revision_info()
219
        self.assertEqual(rev_info_b[0], 4)
220
        self.assertEqual(rev_info_b, rev_info_a)
1185.50.5 by John Arbash Meinel
pull --overwrite should always overwrite, not just if diverged. (Test case from Robey Pointer)
221
1614.2.8 by Olaf Conradi
Added testcases for using pull with --remember. Moved remember code to
222
    def test_pull_remember(self):
223
        """Pull changes from one branch to another and test parent location."""
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
224
        t = self.get_transport()
1614.2.16 by Olaf Conradi
Modified blackbox test cases to use bzrlib API.
225
        tree_a = self.make_branch_and_tree('branch_a')
226
        branch_a = tree_a.branch
227
        self.build_tree(['branch_a/a'])
228
        tree_a.add('a')
229
        tree_a.commit('commit a')
1666.1.4 by Robert Collins
* 'Metadir' is now the default disk format. This improves behaviour in
230
        tree_b = branch_a.bzrdir.sprout('branch_b').open_workingtree()
231
        branch_b = tree_b.branch
232
        tree_c = branch_a.bzrdir.sprout('branch_c').open_workingtree()
233
        branch_c = tree_c.branch
1614.2.16 by Olaf Conradi
Modified blackbox test cases to use bzrlib API.
234
        self.build_tree(['branch_a/b'])
235
        tree_a.add('b')
236
        tree_a.commit('commit b')
1614.2.8 by Olaf Conradi
Added testcases for using pull with --remember. Moved remember code to
237
        # reset parent
1614.2.16 by Olaf Conradi
Modified blackbox test cases to use bzrlib API.
238
        parent = branch_b.get_parent()
6404.6.1 by Vincent Ladeuil
Tests passing for a first rough version of a cached branch config store. The changes here are too invasive and several parallel proposals have been made.
239
        branch_b = branch.Branch.open('branch_b')
6404.6.7 by Vincent Ladeuil
Change set/remove to require a lock for the branch config files.
240
        branch_b.set_parent(None)
1614.2.16 by Olaf Conradi
Modified blackbox test cases to use bzrlib API.
241
        self.assertEqual(None, branch_b.get_parent())
1614.2.8 by Olaf Conradi
Added testcases for using pull with --remember. Moved remember code to
242
        # test pull for failure without parent set
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
243
        out = self.run_bzr('pull', retcode=3, working_dir='branch_b')
2738.2.4 by Daniel Watkins
Changed assertEquals to assertEqual.
244
        self.assertEqual(out,
1614.2.8 by Olaf Conradi
Added testcases for using pull with --remember. Moved remember code to
245
                ('','bzr: ERROR: No pull location known or specified.\n'))
246
        # test implicit --remember when no parent set, this pull conflicts
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
247
        self.build_tree(['branch_b/d'])
1614.2.16 by Olaf Conradi
Modified blackbox test cases to use bzrlib API.
248
        tree_b.add('d')
249
        tree_b.commit('commit d')
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
250
        out = self.run_bzr('pull ../branch_a', retcode=3,
251
                           working_dir='branch_b')
2738.2.4 by Daniel Watkins
Changed assertEquals to assertEqual.
252
        self.assertEqual(out,
2221.5.13 by Dmitry Vasiliev
Fixed expected message in test
253
                ('','bzr: ERROR: These branches have diverged.'
4297.3.3 by Jelmer Vernooij
Fix pull --remember test.
254
                    ' Use the missing command to see how.\n'
255
                    'Use the merge command to reconcile them.\n'))
6404.6.5 by Vincent Ladeuil
Missed fallouts from the previous trunk merge.
256
        tree_b = tree_b.bzrdir.open_workingtree()
257
        branch_b = tree_b.branch
6404.6.1 by Vincent Ladeuil
Tests passing for a first rough version of a cached branch config store. The changes here are too invasive and several parallel proposals have been made.
258
        self.assertEqual(parent, branch_b.get_parent())
1614.2.8 by Olaf Conradi
Added testcases for using pull with --remember. Moved remember code to
259
        # test implicit --remember after resolving previous failure
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
260
        uncommit.uncommit(branch=branch_b, tree=tree_b)
261
        t.delete('branch_b/d')
262
        self.run_bzr('pull', working_dir='branch_b')
6404.6.6 by Vincent Ladeuil
Use idioms coherently and add comments to make their purpose clearer.
263
        # Refresh the branch object as 'pull' modified it
6404.6.5 by Vincent Ladeuil
Missed fallouts from the previous trunk merge.
264
        branch_b = branch_b.bzrdir.open_branch()
2738.2.4 by Daniel Watkins
Changed assertEquals to assertEqual.
265
        self.assertEqual(branch_b.get_parent(), parent)
1614.2.8 by Olaf Conradi
Added testcases for using pull with --remember. Moved remember code to
266
        # test explicit --remember
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
267
        self.run_bzr('pull ../branch_c --remember', working_dir='branch_b')
6404.6.6 by Vincent Ladeuil
Use idioms coherently and add comments to make their purpose clearer.
268
        # Refresh the branch object as 'pull' modified it
6404.6.5 by Vincent Ladeuil
Missed fallouts from the previous trunk merge.
269
        branch_b = branch_b.bzrdir.open_branch()
6404.6.1 by Vincent Ladeuil
Tests passing for a first rough version of a cached branch config store. The changes here are too invasive and several parallel proposals have been made.
270
        self.assertEqual(branch_c.bzrdir.root_transport.base,
271
                         branch_b.get_parent())
1711.3.3 by John Arbash Meinel
Allow pull to use a bundle as a target,
272
273
    def test_pull_bundle(self):
274
        from bzrlib.testament import Testament
275
        # Build up 2 trees and prepare for a pull
276
        tree_a = self.make_branch_and_tree('branch_a')
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
277
        with open('branch_a/a', 'wb') as f:
278
            f.write('hello')
1711.3.3 by John Arbash Meinel
Allow pull to use a bundle as a target,
279
        tree_a.add('a')
280
        tree_a.commit('message')
281
282
        tree_b = tree_a.bzrdir.sprout('branch_b').open_workingtree()
283
284
        # Make a change to 'a' that 'b' can pull
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
285
        with open('branch_a/a', 'wb') as f:
286
            f.write('hey there')
1711.3.3 by John Arbash Meinel
Allow pull to use a bundle as a target,
287
        tree_a.commit('message')
288
289
        # Create the bundle for 'b' to pull
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
290
        self.run_bzr('bundle ../branch_b -o ../bundle', working_dir='branch_a')
1711.3.3 by John Arbash Meinel
Allow pull to use a bundle as a target,
291
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
292
        out, err = self.run_bzr('pull ../bundle', working_dir='branch_b')
2220.2.39 by Martin Pool
Pull also merges tags and warns if they conflict
293
        self.assertEqual(out,
294
                         'Now on revision 2.\n')
295
        self.assertEqual(err,
296
                ' M  a\nAll changes applied successfully.\n')
1711.3.3 by John Arbash Meinel
Allow pull to use a bundle as a target,
297
6165.4.4 by Jelmer Vernooij
Avoid .revision_history().
298
        self.assertEqualDiff(tree_a.branch.last_revision(),
299
                             tree_b.branch.last_revision())
1711.3.3 by John Arbash Meinel
Allow pull to use a bundle as a target,
300
1908.7.6 by Robert Collins
Deprecate WorkingTree.last_revision.
301
        testament_a = Testament.from_revision(tree_a.branch.repository,
302
                                              tree_a.get_parent_ids()[0])
1711.3.3 by John Arbash Meinel
Allow pull to use a bundle as a target,
303
        testament_b = Testament.from_revision(tree_b.branch.repository,
1908.7.6 by Robert Collins
Deprecate WorkingTree.last_revision.
304
                                              tree_b.get_parent_ids()[0])
1711.3.3 by John Arbash Meinel
Allow pull to use a bundle as a target,
305
        self.assertEqualDiff(testament_a.as_text(),
306
                             testament_b.as_text())
307
308
        # it is legal to attempt to pull an already-merged bundle
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
309
        out, err = self.run_bzr('pull ../bundle', working_dir='branch_b')
2220.2.39 by Martin Pool
Pull also merges tags and warns if they conflict
310
        self.assertEqual(err, '')
6112.4.1 by Jelmer Vernooij
Show how many tags have been updated in bzr pull.
311
        self.assertEqual(out, 'No revisions or tags to pull.\n')
1551.17.2 by Aaron Bentley
Stop showing deltas in pull -v output
312
313
    def test_pull_verbose_no_files(self):
314
        """Pull --verbose should not list modified files"""
315
        tree_a = self.make_branch_and_tree('tree_a')
316
        self.build_tree(['tree_a/foo'])
317
        tree_a.add('foo')
318
        tree_a.commit('bar')
319
        tree_b = self.make_branch_and_tree('tree_b')
320
        out = self.run_bzr('pull --verbose -d tree_b tree_a')[0]
321
        self.assertContainsRe(out, 'bar')
322
        self.assertNotContainsRe(out, 'added:')
323
        self.assertNotContainsRe(out, 'foo')
3200.1.1 by James Westby
Make pull --quiet more quiet. Fixes #185907.
324
325
    def test_pull_quiet(self):
326
        """Check that bzr pull --quiet does not print anything"""
327
        tree_a = self.make_branch_and_tree('tree_a')
328
        self.build_tree(['tree_a/foo'])
329
        tree_a.add('foo')
3200.1.2 by James Westby
Check that the pull succeeds even when printing nothing.
330
        revision_id = tree_a.commit('bar')
3200.1.1 by James Westby
Make pull --quiet more quiet. Fixes #185907.
331
        tree_b = tree_a.bzrdir.sprout('tree_b').open_workingtree()
332
        out, err = self.run_bzr('pull --quiet -d tree_b')
333
        self.assertEqual(out, '')
334
        self.assertEqual(err, '')
3200.1.2 by James Westby
Check that the pull succeeds even when printing nothing.
335
        self.assertEqual(tree_b.last_revision(), revision_id)
3200.1.1 by James Westby
Make pull --quiet more quiet. Fixes #185907.
336
        self.build_tree(['tree_a/moo'])
337
        tree_a.add('moo')
3200.1.2 by James Westby
Check that the pull succeeds even when printing nothing.
338
        revision_id = tree_a.commit('quack')
3200.1.1 by James Westby
Make pull --quiet more quiet. Fixes #185907.
339
        out, err = self.run_bzr('pull --quiet -d tree_b')
340
        self.assertEqual(out, '')
341
        self.assertEqual(err, '')
3200.1.2 by James Westby
Check that the pull succeeds even when printing nothing.
342
        self.assertEqual(tree_b.last_revision(), revision_id)
3251.4.10 by Aaron Bentley
Pull of launchpad locations works (abentley, #181945)
343
3251.4.12 by Aaron Bentley
Updates from review
344
    def test_pull_from_directory_service(self):
3251.4.10 by Aaron Bentley
Pull of launchpad locations works (abentley, #181945)
345
        source = self.make_branch_and_tree('source')
346
        source.commit('commit 1')
347
        target = source.bzrdir.sprout('target').open_workingtree()
348
        source_last = source.commit('commit 2')
349
        class FooService(object):
350
            """A directory service that always returns source"""
351
352
            def look_up(self, name, url):
353
                return 'source'
3251.4.12 by Aaron Bentley
Updates from review
354
        directories.register('foo:', FooService, 'Testing directory service')
4985.2.1 by Vincent Ladeuil
Deploy addAttrCleanup on the whole test suite.
355
        self.addCleanup(directories.remove, 'foo:')
3251.4.10 by Aaron Bentley
Pull of launchpad locations works (abentley, #181945)
356
        self.run_bzr('pull foo:bar -d target')
357
        self.assertEqual(source_last, target.last_revision())
3848.1.1 by Aaron Bentley
Use default log format in pull -v
358
359
    def test_pull_verbose_defaults_to_long(self):
360
        tree = self.example_branch('source')
361
        target = self.make_branch_and_tree('target')
362
        out = self.run_bzr('pull -v source -d target')[0]
363
        self.assertContainsRe(out,
364
                              r'revno: 1\ncommitter: .*\nbranch nick: source')
3848.1.5 by Aaron Bentley
Updates from review
365
        self.assertNotContainsRe(out, r'\n {4}1 .*\n {6}setup\n')
3848.1.1 by Aaron Bentley
Use default log format in pull -v
366
367
    def test_pull_verbose_uses_default_log(self):
368
        tree = self.example_branch('source')
369
        target = self.make_branch_and_tree('target')
6404.6.7 by Vincent Ladeuil
Change set/remove to require a lock for the branch config files.
370
        target.branch.get_config_stack().set('log_format', 'short')
3848.1.1 by Aaron Bentley
Use default log format in pull -v
371
        out = self.run_bzr('pull -v source -d target')[0]
372
        self.assertContainsRe(out, r'\n {4}1 .*\n {6}setup\n')
3848.1.5 by Aaron Bentley
Updates from review
373
        self.assertNotContainsRe(
374
            out, r'revno: 1\ncommitter: .*\nbranch nick: source')
4419.1.1 by Andrew Bennetts
Failing blackbox acceptance test for bug 380314.
375
6110.1.1 by John Arbash Meinel
Merge MvG's bugfix for #483661. Needs a couple small tweaks.
376
    def test_pull_smart_bound_branch(self):
6105.2.1 by Martin von Gagern
Added blackbox testcase for pull to bound branch over smart medium.
377
        self.setup_smart_server_with_call_log()
378
        parent = self.make_branch_and_tree('parent')
379
        parent.commit(message='first commit')
380
        child = parent.bzrdir.sprout('child').open_workingtree()
381
        child.commit(message='second commit')
382
        checkout = parent.branch.create_checkout('checkout')
383
        self.run_bzr(['pull', self.get_url('child')], working_dir='checkout')
384
4419.1.1 by Andrew Bennetts
Failing blackbox acceptance test for bug 380314.
385
    def test_pull_smart_stacked_streaming_acceptance(self):
4419.1.6 by Andrew Bennetts
Add comments requested by Martin's review.
386
        """'bzr pull -r 123' works on stacked, smart branches, even when the
387
        revision specified by the revno is only present in the fallback
388
        repository.
389
390
        See <https://launchpad.net/bugs/380314>
391
        """
4419.1.1 by Andrew Bennetts
Failing blackbox acceptance test for bug 380314.
392
        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.
393
        # Make a stacked-on branch with two commits so that the
394
        # revision-history can't be determined just by looking at the parent
395
        # field in the revision in the stacked repo.
4419.1.1 by Andrew Bennetts
Failing blackbox acceptance test for bug 380314.
396
        parent = self.make_branch_and_tree('parent', format='1.9')
397
        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.
398
        parent.commit(message='second commit')
4419.1.1 by Andrew Bennetts
Failing blackbox acceptance test for bug 380314.
399
        local = parent.bzrdir.sprout('local').open_workingtree()
400
        local.commit(message='local commit')
401
        local.branch.create_clone_on_transport(
402
            self.get_transport('stacked'), stacked_on=self.get_url('parent'))
403
        empty = self.make_branch_and_tree('empty', format='1.9')
404
        self.reset_smart_call_log()
405
        self.run_bzr(['pull', '-r', '1', self.get_url('stacked')],
406
            working_dir='empty')
407
        # This figure represent the amount of work to perform this use case. It
408
        # is entirely ok to reduce this number if a test fails due to rpc_count
409
        # being too low. If rpc_count increases, more network roundtrips have
410
        # become necessary for this use case. Please do not adjust this number
411
        # upwards without agreement from bzr's network support maintainers.
6015.15.7 by John Arbash Meinel
Fix the 11 tests that still failed.
412
        self.assertLength(19, self.hpss_calls)
6366.1.4 by Jelmer Vernooij
Test connection count calls for most blackbox commands.
413
        self.assertLength(1, self.hpss_connections)
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
414
        remote = branch.Branch.open('stacked')
4419.1.1 by Andrew Bennetts
Failing blackbox acceptance test for bug 380314.
415
        self.assertEndsWith(remote.get_stacked_on_url(), '/parent')
6175.2.4 by Vincent Ladeuil
Add script tests and documentation.
416
4634.124.2 by Martin Pool
Add a test and news for warning about local cross-forrmat fetch
417
    def test_pull_cross_format_warning(self):
418
        """You get a warning for probably slow cross-format pulls.
419
        """
4634.124.3 by Martin Pool
Give a warning from pulling across the network from a different format
420
        # this is assumed to be going through InterDifferingSerializer
4634.124.2 by Martin Pool
Add a test and news for warning about local cross-forrmat fetch
421
        from_tree = self.make_branch_and_tree('from', format='2a')
422
        to_tree = self.make_branch_and_tree('to', format='1.14-rich-root')
423
        from_tree.commit(message='first commit')
424
        out, err = self.run_bzr(['pull', '-d', 'to', 'from'])
425
        self.assertContainsRe(err,
4634.124.4 by Martin Pool
Centralize warning about cross-format fetch into UIFactory
426
            "(?m)Doing on-the-fly conversion")
4634.124.3 by Martin Pool
Give a warning from pulling across the network from a different format
427
428
    def test_pull_cross_format_warning_no_IDS(self):
429
        """You get a warning for probably slow cross-format pulls.
430
        """
431
        # this simulates what would happen across the network, where
432
        # interdifferingserializer is not active
433
434
        debug.debug_flags.add('IDS_never')
435
        # TestCase take care of restoring them
436
437
        from_tree = self.make_branch_and_tree('from', format='2a')
438
        to_tree = self.make_branch_and_tree('to', format='1.14-rich-root')
439
        from_tree.commit(message='first commit')
440
        out, err = self.run_bzr(['pull', '-d', 'to', 'from'])
441
        self.assertContainsRe(err,
4634.124.4 by Martin Pool
Centralize warning about cross-format fetch into UIFactory
442
            "(?m)Doing on-the-fly conversion")
4634.124.3 by Martin Pool
Give a warning from pulling across the network from a different format
443
444
    def test_pull_cross_format_from_network(self):
445
        self.setup_smart_server_with_call_log()
446
        from_tree = self.make_branch_and_tree('from', format='2a')
447
        to_tree = self.make_branch_and_tree('to', format='1.14-rich-root')
448
        self.assertIsInstance(from_tree.branch, remote.RemoteBranch)
449
        from_tree.commit(message='first commit')
450
        out, err = self.run_bzr(['pull', '-d', 'to',
451
            from_tree.branch.bzrdir.root_transport.base])
452
        self.assertContainsRe(err,
4634.124.4 by Martin Pool
Centralize warning about cross-format fetch into UIFactory
453
            "(?m)Doing on-the-fly conversion")
4988.9.2 by Jelmer Vernooij
Add warning when attempting to fetch into experimental formats.
454
455
    def test_pull_to_experimental_format_warning(self):
456
        """You get a warning for pulling into experimental formats.
457
        """
458
        from_tree = self.make_branch_and_tree('from', format='development-subtree')
459
        to_tree = self.make_branch_and_tree('to', format='development-subtree')
460
        from_tree.commit(message='first commit')
461
        out, err = self.run_bzr(['pull', '-d', 'to', 'from'])
462
        self.assertContainsRe(err,
463
            "(?m)Fetching into experimental format")
464
465
    def test_pull_cross_to_experimental_format_warning(self):
466
        """You get a warning for pulling into experimental formats.
467
        """
468
        from_tree = self.make_branch_and_tree('from', format='2a')
469
        to_tree = self.make_branch_and_tree('to', format='development-subtree')
470
        from_tree.commit(message='first commit')
471
        out, err = self.run_bzr(['pull', '-d', 'to', 'from'])
472
        self.assertContainsRe(err,
473
            "(?m)Fetching into experimental format")
5430.7.1 by Rory Yorke
Added --show-base to pull and update (bug 202374).
474
475
    def test_pull_show_base(self):
476
        """bzr pull supports --show-base
477
478
        see https://bugs.launchpad.net/bzr/+bug/202374"""
479
        # create two trees with conflicts, setup conflict, check that
480
        # conflicted file looks correct
481
        a_tree = self.example_branch('a')
482
        b_tree = a_tree.bzrdir.sprout('b').open_workingtree()
483
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
484
        with open(osutils.pathjoin('a', 'hello'),'wt') as f:
485
            f.write('fee')
5430.7.1 by Rory Yorke
Added --show-base to pull and update (bug 202374).
486
        a_tree.commit('fee')
5430.7.2 by Rory Yorke
Changes as per Martin [gz]'s review.
487
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
488
        with open(osutils.pathjoin('b', 'hello'),'wt') as f:
489
            f.write('fie')
5430.7.1 by Rory Yorke
Added --show-base to pull and update (bug 202374).
490
491
        out,err=self.run_bzr(['pull','-d','b','a','--show-base'])
492
493
        # check for message here
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
494
        self.assertEqual(
495
            err,
496
            ' M  hello\nText conflict in hello\n1 conflicts encountered.\n')
5430.7.1 by Rory Yorke
Added --show-base to pull and update (bug 202374).
497
498
        self.assertEqualDiff('<<<<<<< TREE\n'
499
                             'fie||||||| BASE-REVISION\n'
500
                             'foo=======\n'
501
                             'fee>>>>>>> MERGE-SOURCE\n',
6423.1.1 by Vincent Ladeuil
Cleanup old blackbox tests and then some. Remove os.chdir() calls, caught a few bugs, make sure we don't leave file handles opened.
502
                             open(osutils.pathjoin('b', 'hello')).read())
5430.7.1 by Rory Yorke
Added --show-base to pull and update (bug 202374).
503
6556.1.1 by Vincent Ladeuil
Warn instead of failing on pull --show-base in a treeless branch
504
    def test_pull_warns_about_show_base_when_no_working_tree(self):
505
        """--show-base is useless if there's no working tree
5430.7.1 by Rory Yorke
Added --show-base to pull and update (bug 202374).
506
6556.1.1 by Vincent Ladeuil
Warn instead of failing on pull --show-base in a treeless branch
507
        see https://bugs.launchpad.net/bzr/+bug/1022160"""
5430.7.1 by Rory Yorke
Added --show-base to pull and update (bug 202374).
508
        self.make_branch('from')
509
        self.make_branch('to')
6556.1.1 by Vincent Ladeuil
Warn instead of failing on pull --show-base in a treeless branch
510
        out = self.run_bzr(['pull','-d','to','from','--show-base'])
511
        self.assertEqual(out, ('No revisions or tags to pull.\n',
512
                               'No working tree, ignoring --show-base\n'))
5430.7.1 by Rory Yorke
Added --show-base to pull and update (bug 202374).
513
5616.6.1 by Jelmer Vernooij
Exit with 1 if there were tag conflicts during pull.
514
    def test_pull_tag_conflicts(self):
515
        """pulling tags with conflicts will change the exit code"""
516
        # create a branch, see that --show-base fails
517
        from_tree = self.make_branch_and_tree('from')
518
        from_tree.branch.tags.set_tag("mytag", "somerevid")
519
        to_tree = self.make_branch_and_tree('to')
520
        to_tree.branch.tags.set_tag("mytag", "anotherrevid")
521
        out = self.run_bzr(['pull','-d','to','from'],retcode=1)
522
        self.assertEqual(out,
523
            ('No revisions to pull.\nConflicting tags:\n    mytag\n', ''))
6112.4.1 by Jelmer Vernooij
Show how many tags have been updated in bzr pull.
524
525
    def test_pull_tag_notification(self):
526
        """pulling tags with conflicts will change the exit code"""
527
        # create a branch, see that --show-base fails
528
        from_tree = self.make_branch_and_tree('from')
529
        from_tree.branch.tags.set_tag("mytag", "somerevid")
530
        to_tree = self.make_branch_and_tree('to')
531
        out = self.run_bzr(['pull', '-d', 'to', 'from'])
532
        self.assertEqual(out,
533
            ('1 tag(s) updated.\n', ''))
6156.1.1 by Jelmer Vernooij
Don't report all tags as changed when --overwrite is specified.
534
6159.2.2 by Jelmer Vernooij
Add some tests for 'bzr pull --overwrite-tags'.
535
    def test_overwrite_tags(self):
536
        """--overwrite-tags only overwrites tags, not revisions."""
537
        from_tree = self.make_branch_and_tree('from')
538
        from_tree.branch.tags.set_tag("mytag", "somerevid")
539
        to_tree = self.make_branch_and_tree('to')
540
        to_tree.branch.tags.set_tag("mytag", "anotherrevid")
541
        revid1 = to_tree.commit('my commit')
542
        out = self.run_bzr(['pull', '-d', 'to', 'from'], retcode=1)
543
        self.assertEquals(out,
544
            ('No revisions to pull.\nConflicting tags:\n    mytag\n', ''))
545
        out = self.run_bzr(['pull', '-d', 'to', '--overwrite-tags', 'from'])
546
        self.assertEquals(out, ('1 tag(s) updated.\n', ''))
547
548
        self.assertEquals(to_tree.branch.tags.lookup_tag('mytag'),
549
                          'somerevid')
550
        self.assertEquals(to_tree.branch.last_revision(), revid1)
6159.2.5 by Jelmer Vernooij
Merge 2.5 branch.
551
6156.1.1 by Jelmer Vernooij
Don't report all tags as changed when --overwrite is specified.
552
    def test_pull_tag_overwrite(self):
553
        """pulling tags with --overwrite only reports changed tags."""
554
        # create a branch, see that --show-base fails
555
        from_tree = self.make_branch_and_tree('from')
556
        from_tree.branch.tags.set_tag("mytag", "somerevid")
557
        to_tree = self.make_branch_and_tree('to')
558
        to_tree.branch.tags.set_tag("mytag", "somerevid")
559
        out = self.run_bzr(['pull', '--overwrite', '-d', 'to', 'from'])
560
        self.assertEqual(out,
561
            ('No revisions or tags to pull.\n', ''))
6175.2.4 by Vincent Ladeuil
Add script tests and documentation.
562
563
564
class TestPullOutput(script.TestCaseWithTransportAndScript):
565
566
    def test_pull_log_format(self):
567
        self.run_script("""
568
            $ bzr init trunk
569
            Created a standalone tree (format: 2a)
570
            $ cd trunk
571
            $ echo foo > file
572
            $ bzr add
573
            adding file
574
            $ bzr commit -m 'we need some foo'
575
            2>Committing to:...trunk/
576
            2>added file
577
            2>Committed revision 1.
578
            $ cd ..
579
            $ bzr init feature
580
            Created a standalone tree (format: 2a)
581
            $ cd feature
582
            $ bzr pull -v ../trunk -Olog_format=line
583
            Now on revision 1.
584
            Added Revisions:
585
            1: jrandom@example.com ...we need some foo
586
            2>+N  file
587
            2>All changes applied successfully.
588
            """)