/brz/remove-bazaar

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