/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
5557.1.15 by John Arbash Meinel
Merge bzr.dev 5597 to resolve NEWS, aka bzr-2.3.txt
1
# Copyright (C) 2005-2009, 2011 Canonical Ltd
1685.1.80 by Wouter van Heyst
more code cleanup
2
#
1185.54.23 by Aaron Bentley
Added unit tests for find_unmerged
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.
1685.1.80 by Wouter van Heyst
more code cleanup
7
#
1185.54.23 by Aaron Bentley
Added unit tests for find_unmerged
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.
1685.1.80 by Wouter van Heyst
more code cleanup
12
#
1185.54.23 by Aaron Bentley
Added unit tests for find_unmerged
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
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
16
6624 by Jelmer Vernooij
Merge Python3 porting work ('py3 pokes')
17
from .. import (
3427.3.1 by John Arbash Meinel
Add bzrlib.missing.find_unmerged_mainline_revisions
18
    missing,
19
    tests,
20
    )
6624 by Jelmer Vernooij
Merge Python3 porting work ('py3 pokes')
21
from ..missing import (
2466.8.1 by Kent Gibson
Reworked LogFormatter API to simplify extending the attributes of the revision being logged. Added support for begin_log() and end_log() hooks in LogFormatters.
22
    iter_log_revisions,
23
    )
6624 by Jelmer Vernooij
Merge Python3 porting work ('py3 pokes')
24
from . import TestCaseWithTransport
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
25
1534.4.28 by Robert Collins
first cut at merge from integration.
26
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
27
class TestMissing(TestCaseWithTransport):
28
3677.1.8 by Vincent Ladeuil
Fixed as per jam's review.
29
    def assertUnmerged(self, expected, source, target, restrict='all',
30
                       backward=False):
31
        unmerged = missing.find_unmerged(source, target, restrict=restrict,
32
                                         backward=backward)
3427.3.2 by John Arbash Meinel
switch find_unmerged to use the new function
33
        self.assertEqual(expected, unmerged)
3677.1.1 by Vincent Ladeuil
Begin fixing bug #233817.
34
1185.54.23 by Aaron Bentley
Added unit tests for find_unmerged
35
    def test_find_unmerged(self):
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
36
        original_tree = self.make_branch_and_tree('original')
37
        original = original_tree.branch
38
        puller_tree = self.make_branch_and_tree('puller')
39
        puller = puller_tree.branch
40
        merger_tree = self.make_branch_and_tree('merger')
41
        merger = merger_tree.branch
3427.3.2 by John Arbash Meinel
switch find_unmerged to use the new function
42
        self.assertUnmerged(([], []), original, puller)
6855.4.1 by Jelmer Vernooij
Yet more bees.
43
        original_tree.commit('a', rev_id=b'a')
7029.4.2 by Jelmer Vernooij
Fix more merge tests.
44
        self.assertUnmerged(([('1', b'a', 0)], []), original, puller)
1666.1.4 by Robert Collins
* 'Metadir' is now the default disk format. This improves behaviour in
45
        puller_tree.pull(original)
3427.3.2 by John Arbash Meinel
switch find_unmerged to use the new function
46
        self.assertUnmerged(([], []), original, puller)
1666.1.4 by Robert Collins
* 'Metadir' is now the default disk format. This improves behaviour in
47
        merger_tree.pull(original)
6855.4.1 by Jelmer Vernooij
Yet more bees.
48
        original_tree.commit('b', rev_id=b'b')
49
        original_tree.commit('c', rev_id=b'c')
7029.4.2 by Jelmer Vernooij
Fix more merge tests.
50
        self.assertUnmerged(([('2', b'b', 0), ('3', b'c', 0)], []),
3427.3.2 by John Arbash Meinel
switch find_unmerged to use the new function
51
                            original, puller)
7029.4.2 by Jelmer Vernooij
Fix more merge tests.
52
        self.assertUnmerged(([('3', b'c', 0), ('2', b'b', 0)], []),
3677.1.8 by Vincent Ladeuil
Fixed as per jam's review.
53
                            original, puller, backward=True)
1185.54.23 by Aaron Bentley
Added unit tests for find_unmerged
54
1666.1.4 by Robert Collins
* 'Metadir' is now the default disk format. This improves behaviour in
55
        puller_tree.pull(original)
3427.3.2 by John Arbash Meinel
switch find_unmerged to use the new function
56
        self.assertUnmerged(([], []), original, puller)
7029.4.2 by Jelmer Vernooij
Fix more merge tests.
57
        self.assertUnmerged(([('2', b'b', 0), ('3', b'c', 0)], []),
3427.3.2 by John Arbash Meinel
switch find_unmerged to use the new function
58
                            original, merger)
1551.15.70 by Aaron Bentley
Avoid using builtins.merge
59
        merger_tree.merge_from_branch(original)
7029.4.2 by Jelmer Vernooij
Fix more merge tests.
60
        self.assertUnmerged(([('2', b'b', 0), ('3', b'c', 0)], []),
3427.3.2 by John Arbash Meinel
switch find_unmerged to use the new function
61
                            original, merger)
6855.4.1 by Jelmer Vernooij
Yet more bees.
62
        merger_tree.commit('d', rev_id=b'd')
7029.4.2 by Jelmer Vernooij
Fix more merge tests.
63
        self.assertUnmerged(([], [('2', b'd', 0)]), original, merger)
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
64
2466.8.1 by Kent Gibson
Reworked LogFormatter API to simplify extending the attributes of the revision being logged. Added support for begin_log() and end_log() hooks in LogFormatters.
65
    def test_iter_log_revisions(self):
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
66
        base_tree = self.make_branch_and_tree('base')
67
        self.build_tree(['base/a'])
6855.4.1 by Jelmer Vernooij
Yet more bees.
68
        base_tree.add(['a'], [b'a-id'])
69
        base_tree.commit('add a', rev_id=b'b-1')
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
70
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
71
        child_tree = base_tree.controldir.sprout('child').open_workingtree()
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
72
73
        self.build_tree(['child/b'])
6855.4.1 by Jelmer Vernooij
Yet more bees.
74
        child_tree.add(['b'], [b'b-id'])
75
        child_tree.commit('adding b', rev_id=b'c-2')
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
76
77
        child_tree.remove(['a'])
6855.4.1 by Jelmer Vernooij
Yet more bees.
78
        child_tree.commit('removing a', rev_id=b'c-3')
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
79
6855.4.1 by Jelmer Vernooij
Yet more bees.
80
        self.build_tree_contents([('child/b', b'new contents for b\n')])
81
        child_tree.commit('modifying b', rev_id=b'c-4')
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
82
83
        child_tree.rename_one('b', 'c')
6855.4.1 by Jelmer Vernooij
Yet more bees.
84
        child_tree.commit('rename b=>c', rev_id=b'c-5')
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
85
3427.3.2 by John Arbash Meinel
switch find_unmerged to use the new function
86
        base_extra, child_extra = missing.find_unmerged(base_tree.branch,
3677.1.4 by Vincent Ladeuil
Replace 'reverse' by 'backward' when talking about revision order.
87
                                                        child_tree.branch)
3677.1.1 by Vincent Ladeuil
Begin fixing bug #233817.
88
        results = list(iter_log_revisions(base_extra,
7143.15.2 by Jelmer Vernooij
Run autopep8.
89
                                          base_tree.branch.repository,
90
                                          verbose=True))
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
91
        self.assertEqual([], results)
92
2466.8.1 by Kent Gibson
Reworked LogFormatter API to simplify extending the attributes of the revision being logged. Added support for begin_log() and end_log() hooks in LogFormatters.
93
        results = list(iter_log_revisions(child_extra,
7143.15.2 by Jelmer Vernooij
Run autopep8.
94
                                          child_tree.branch.repository,
95
                                          verbose=True))
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
96
        self.assertEqual(4, len(results))
97
6809.1.1 by Martin
Apply 2to3 ws_comma fixer
98
        r0, r1, r2, r3 = results
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
99
7029.4.2 by Jelmer Vernooij
Fix more merge tests.
100
        self.assertEqual([('2', b'c-2'), ('3', b'c-3'),
7143.15.2 by Jelmer Vernooij
Run autopep8.
101
                          ('4', b'c-4'), ('5', b'c-5'), ],
3677.1.2 by Vincent Ladeuil
Fix tests broken by previous commit.
102
                         [(r.revno, r.rev.revision_id) for r in results])
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
103
2466.8.1 by Kent Gibson
Reworked LogFormatter API to simplify extending the attributes of the revision being logged. Added support for begin_log() and end_log() hooks in LogFormatters.
104
        delta0 = r0.delta
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
105
        self.assertNotEqual(None, delta0)
7358.11.3 by Jelmer Vernooij
TreeDelta holds TreeChange objects rather than tuples of various sizes.
106
        self.assertEqual([('b', 'file')], [(c.path[1], c.kind[1]) for c in delta0.added])
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
107
        self.assertEqual([], delta0.removed)
108
        self.assertEqual([], delta0.renamed)
7358.17.1 by Jelmer Vernooij
Add TreeDelta.copied and TreeChange.copied fields.
109
        self.assertEqual([], delta0.copied)
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
110
        self.assertEqual([], delta0.modified)
111
2466.8.1 by Kent Gibson
Reworked LogFormatter API to simplify extending the attributes of the revision being logged. Added support for begin_log() and end_log() hooks in LogFormatters.
112
        delta1 = r1.delta
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
113
        self.assertNotEqual(None, delta1)
114
        self.assertEqual([], delta1.added)
7358.11.3 by Jelmer Vernooij
TreeDelta holds TreeChange objects rather than tuples of various sizes.
115
        self.assertEqual([('a', 'file')], [(c.path[0], c.kind[0]) for c in delta1.removed])
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
116
        self.assertEqual([], delta1.renamed)
7358.17.1 by Jelmer Vernooij
Add TreeDelta.copied and TreeChange.copied fields.
117
        self.assertEqual([], delta1.copied)
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
118
        self.assertEqual([], delta1.modified)
119
2466.8.1 by Kent Gibson
Reworked LogFormatter API to simplify extending the attributes of the revision being logged. Added support for begin_log() and end_log() hooks in LogFormatters.
120
        delta2 = r2.delta
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
121
        self.assertNotEqual(None, delta2)
122
        self.assertEqual([], delta2.added)
123
        self.assertEqual([], delta2.removed)
124
        self.assertEqual([], delta2.renamed)
7358.17.1 by Jelmer Vernooij
Add TreeDelta.copied and TreeChange.copied fields.
125
        self.assertEqual([], delta2.copied)
7143.15.2 by Jelmer Vernooij
Run autopep8.
126
        self.assertEqual(
7358.11.3 by Jelmer Vernooij
TreeDelta holds TreeChange objects rather than tuples of various sizes.
127
            [('b', 'file', True, False)],
128
            [(c.path[1], c.kind[1], c.changed_content, c.meta_modified()) for c in delta2.modified])
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
129
2466.8.1 by Kent Gibson
Reworked LogFormatter API to simplify extending the attributes of the revision being logged. Added support for begin_log() and end_log() hooks in LogFormatters.
130
        delta3 = r3.delta
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
131
        self.assertNotEqual(None, delta3)
132
        self.assertEqual([], delta3.added)
7358.17.1 by Jelmer Vernooij
Add TreeDelta.copied and TreeChange.copied fields.
133
        self.assertEqual([], delta3.copied)
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
134
        self.assertEqual([], delta3.removed)
7358.11.3 by Jelmer Vernooij
TreeDelta holds TreeChange objects rather than tuples of various sizes.
135
        self.assertEqual(
136
            [('b', 'c', 'file', False, False)],
137
            [(c.path[0], c.path[1], c.kind[1], c.changed_content, c.meta_modified())
138
                for c in delta3.renamed])
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
139
        self.assertEqual([], delta3.modified)
3427.3.1 by John Arbash Meinel
Add bzrlib.missing.find_unmerged_mainline_revisions
140
141
3427.3.2 by John Arbash Meinel
switch find_unmerged to use the new function
142
class TestFindUnmerged(tests.TestCaseWithTransport):
3427.3.1 by John Arbash Meinel
Add bzrlib.missing.find_unmerged_mainline_revisions
143
144
    def assertUnmerged(self, local, remote, local_branch, remote_branch,
7143.15.2 by Jelmer Vernooij
Run autopep8.
145
                       restrict='all', include_merged=False, backward=False,
146
                       local_revid_range=None, remote_revid_range=None):
3427.3.1 by John Arbash Meinel
Add bzrlib.missing.find_unmerged_mainline_revisions
147
        """Check the output of find_unmerged_mainline_revisions"""
3427.3.2 by John Arbash Meinel
switch find_unmerged to use the new function
148
        local_extra, remote_extra = missing.find_unmerged(
3921.3.7 by Marius Kruger
just filter the missing revisions once all have been calculated.
149
            local_branch, remote_branch, restrict,
6123.11.14 by Martin von Gagern
Avoid using deprecated api in the unit tests for bzrlib.missing.
150
            include_merged=include_merged, backward=backward,
3921.3.7 by Marius Kruger
just filter the missing revisions once all have been calculated.
151
            local_revid_range=local_revid_range,
152
            remote_revid_range=remote_revid_range)
3427.3.1 by John Arbash Meinel
Add bzrlib.missing.find_unmerged_mainline_revisions
153
        self.assertEqual(local, local_extra)
154
        self.assertEqual(remote, remote_extra)
155
156
    def test_same_branch(self):
157
        tree = self.make_branch_and_tree('tree')
158
        rev1 = tree.commit('one')
159
        tree.lock_read()
160
        self.addCleanup(tree.unlock)
3921.3.1 by Marius Kruger
* add support for specifying a revision range to missing.find_unmerged
161
        self.assertUnmerged([], [], tree.branch, tree.branch)
3921.3.2 by Marius Kruger
* rename _get_revid_in_bounds() -> _get_revid_in_range()
162
        self.assertUnmerged([], [], tree.branch, tree.branch,
7143.15.2 by Jelmer Vernooij
Run autopep8.
163
                            local_revid_range=(rev1, rev1))
3427.3.1 by John Arbash Meinel
Add bzrlib.missing.find_unmerged_mainline_revisions
164
165
    def test_one_ahead(self):
166
        tree = self.make_branch_and_tree('tree')
7143.15.5 by Jelmer Vernooij
More PEP8 fixes.
167
        tree.commit('one')
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
168
        tree2 = tree.controldir.sprout('tree2').open_workingtree()
3427.3.1 by John Arbash Meinel
Add bzrlib.missing.find_unmerged_mainline_revisions
169
        rev2 = tree2.commit('two')
6719.1.4 by Jelmer Vernooij
Fix remaining tests.
170
        self.assertUnmerged([], [('2', rev2, 0)], tree.branch, tree2.branch)
171
        self.assertUnmerged([('2', rev2, 0)], [], tree2.branch, tree.branch)
3427.3.1 by John Arbash Meinel
Add bzrlib.missing.find_unmerged_mainline_revisions
172
173
    def test_restrict(self):
174
        tree = self.make_branch_and_tree('tree')
7143.15.5 by Jelmer Vernooij
More PEP8 fixes.
175
        tree.commit('one')
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
176
        tree2 = tree.controldir.sprout('tree2').open_workingtree()
3427.3.1 by John Arbash Meinel
Add bzrlib.missing.find_unmerged_mainline_revisions
177
        rev2 = tree2.commit('two')
6719.1.4 by Jelmer Vernooij
Fix remaining tests.
178
        self.assertUnmerged([], [('2', rev2, 0)], tree.branch, tree2.branch)
3427.3.1 by John Arbash Meinel
Add bzrlib.missing.find_unmerged_mainline_revisions
179
        self.assertUnmerged([], None, tree.branch, tree2.branch, 'local')
6719.1.4 by Jelmer Vernooij
Fix remaining tests.
180
        self.assertUnmerged(None, [('2', rev2, 0)], tree.branch, tree2.branch,
7143.15.2 by Jelmer Vernooij
Run autopep8.
181
                            'remote')
3427.3.1 by John Arbash Meinel
Add bzrlib.missing.find_unmerged_mainline_revisions
182
3427.3.2 by John Arbash Meinel
switch find_unmerged to use the new function
183
    def test_merged(self):
184
        tree = self.make_branch_and_tree('tree')
185
        rev1 = tree.commit('one')
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
186
        tree2 = tree.controldir.sprout('tree2').open_workingtree()
7143.15.5 by Jelmer Vernooij
More PEP8 fixes.
187
        tree2.commit('two')
188
        tree2.commit('three')
3427.3.2 by John Arbash Meinel
switch find_unmerged to use the new function
189
        tree.merge_from_branch(tree2.branch)
190
        rev4 = tree.commit('four')
191
6719.1.4 by Jelmer Vernooij
Fix remaining tests.
192
        self.assertUnmerged([('2', rev4, 0)], [], tree.branch, tree2.branch)
193
        self.assertUnmerged([('2', rev4, 0)], [], tree.branch, tree2.branch,
7143.15.2 by Jelmer Vernooij
Run autopep8.
194
                            local_revid_range=(rev4, rev4))
3921.3.2 by Marius Kruger
* rename _get_revid_in_bounds() -> _get_revid_in_range()
195
        self.assertUnmerged([], [], tree.branch, tree2.branch,
7143.15.2 by Jelmer Vernooij
Run autopep8.
196
                            local_revid_range=(rev1, rev1))
3677.1.1 by Vincent Ladeuil
Begin fixing bug #233817.
197
6123.11.14 by Martin von Gagern
Avoid using deprecated api in the unit tests for bzrlib.missing.
198
    def test_include_merged(self):
3677.1.1 by Vincent Ladeuil
Begin fixing bug #233817.
199
        tree = self.make_branch_and_tree('tree')
7143.15.5 by Jelmer Vernooij
More PEP8 fixes.
200
        tree.commit('one', rev_id=b'rev1')
3677.1.1 by Vincent Ladeuil
Begin fixing bug #233817.
201
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
202
        tree2 = tree.controldir.sprout('tree2').open_workingtree()
7143.15.5 by Jelmer Vernooij
More PEP8 fixes.
203
        tree2.commit('two', rev_id=b'rev2')
6855.4.1 by Jelmer Vernooij
Yet more bees.
204
        rev3 = tree2.commit('three', rev_id=b'rev3')
3677.1.1 by Vincent Ladeuil
Begin fixing bug #233817.
205
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
206
        tree3 = tree2.controldir.sprout('tree3').open_workingtree()
6855.4.1 by Jelmer Vernooij
Yet more bees.
207
        rev4 = tree3.commit('four', rev_id=b'rev4')
208
        rev5 = tree3.commit('five', rev_id=b'rev5')
3677.1.1 by Vincent Ladeuil
Begin fixing bug #233817.
209
210
        tree2.merge_from_branch(tree3.branch)
6855.4.1 by Jelmer Vernooij
Yet more bees.
211
        rev6 = tree2.commit('six', rev_id=b'rev6')
3677.1.1 by Vincent Ladeuil
Begin fixing bug #233817.
212
7029.4.2 by Jelmer Vernooij
Fix more merge tests.
213
        self.assertUnmerged([], [('2', b'rev2', 0), ('3', b'rev3', 0),
214
                                 ('4', b'rev6', 0),
215
                                 ('3.1.1', b'rev4', 1), ('3.1.2', b'rev5', 1),
3677.1.1 by Vincent Ladeuil
Begin fixing bug #233817.
216
                                 ],
3921.3.14 by Marius Kruger
put spaces after commas
217
                            tree.branch, tree2.branch,
6123.11.14 by Martin von Gagern
Avoid using deprecated api in the unit tests for bzrlib.missing.
218
                            include_merged=True)
3677.1.1 by Vincent Ladeuil
Begin fixing bug #233817.
219
7029.4.2 by Jelmer Vernooij
Fix more merge tests.
220
        self.assertUnmerged([], [('4', b'rev6', 0),
221
                                 ('3.1.2', b'rev5', 1), ('3.1.1', b'rev4', 1),
222
                                 ('3', b'rev3', 0), ('2', b'rev2', 0),
3677.1.8 by Vincent Ladeuil
Fixed as per jam's review.
223
                                 ],
3921.3.14 by Marius Kruger
put spaces after commas
224
                            tree.branch, tree2.branch,
6123.11.14 by Martin von Gagern
Avoid using deprecated api in the unit tests for bzrlib.missing.
225
                            include_merged=True,
3677.1.8 by Vincent Ladeuil
Fixed as per jam's review.
226
                            backward=True)
3921.3.1 by Marius Kruger
* add support for specifying a revision range to missing.find_unmerged
227
7143.15.5 by Jelmer Vernooij
More PEP8 fixes.
228
        self.assertUnmerged(
229
            [], [('4', b'rev6', 0)],
230
            tree.branch, tree2.branch,
231
            include_merged=True, remote_revid_range=(rev6, rev6))
232
233
        self.assertUnmerged(
234
            [], [('3', b'rev3', 0), ('3.1.1', b'rev4', 1)],
235
            tree.branch, tree2.branch,
236
            include_merged=True, remote_revid_range=(rev3, rev4))
237
238
        self.assertUnmerged(
239
            [], [('4', b'rev6', 0), ('3.1.2', b'rev5', 1)],
240
            tree.branch, tree2.branch,
241
            include_merged=True, remote_revid_range=(rev5, rev6))
3921.3.2 by Marius Kruger
* rename _get_revid_in_bounds() -> _get_revid_in_range()
242
243
    def test_revision_range(self):
3921.3.1 by Marius Kruger
* add support for specifying a revision range to missing.find_unmerged
244
        local = self.make_branch_and_tree('local')
245
        lrevid1 = local.commit('one')
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
246
        remote = local.controldir.sprout('remote').open_workingtree()
3921.3.1 by Marius Kruger
* add support for specifying a revision range to missing.find_unmerged
247
        rrevid2 = remote.commit('two')
248
        rrevid3 = remote.commit('three')
249
        rrevid4 = remote.commit('four')
250
        lrevid2 = local.commit('two')
251
        lrevid3 = local.commit('three')
252
        lrevid4 = local.commit('four')
6719.1.2 by Jelmer Vernooij
Fix some tests.
253
        local_extra = [('2', lrevid2, 0), ('3', lrevid3, 0), ('4', lrevid4, 0)]
7143.15.2 by Jelmer Vernooij
Run autopep8.
254
        remote_extra = [('2', rrevid2, 0), ('3', rrevid3, 0),
255
                        ('4', rrevid4, 0)]
3921.3.1 by Marius Kruger
* add support for specifying a revision range to missing.find_unmerged
256
3921.3.2 by Marius Kruger
* rename _get_revid_in_bounds() -> _get_revid_in_range()
257
        # control
3921.3.1 by Marius Kruger
* add support for specifying a revision range to missing.find_unmerged
258
        self.assertUnmerged(local_extra, remote_extra,
7143.15.2 by Jelmer Vernooij
Run autopep8.
259
                            local.branch, remote.branch)
3921.3.1 by Marius Kruger
* add support for specifying a revision range to missing.find_unmerged
260
        self.assertUnmerged(local_extra, remote_extra,
7143.15.2 by Jelmer Vernooij
Run autopep8.
261
                            local.branch, remote.branch, local_revid_range=(
262
                                None, None),
263
                            remote_revid_range=(None, None))
3921.3.1 by Marius Kruger
* add support for specifying a revision range to missing.find_unmerged
264
3921.3.2 by Marius Kruger
* rename _get_revid_in_bounds() -> _get_revid_in_range()
265
        # exclude local revisions
7143.15.5 by Jelmer Vernooij
More PEP8 fixes.
266
        self.assertUnmerged(
267
            [('2', lrevid2, 0)], remote_extra,
268
            local.branch, remote.branch, local_revid_range=(lrevid2, lrevid2))
269
        self.assertUnmerged(
270
            [('2', lrevid2, 0), ('3', lrevid3, 0)], remote_extra,
271
            local.branch, remote.branch, local_revid_range=(lrevid2, lrevid3))
272
        self.assertUnmerged(
273
            [('2', lrevid2, 0), ('3', lrevid3, 0)], None,
274
            local.branch, remote.branch, 'local',
275
            local_revid_range=(lrevid2, lrevid3))
3921.3.1 by Marius Kruger
* add support for specifying a revision range to missing.find_unmerged
276
3921.3.2 by Marius Kruger
* rename _get_revid_in_bounds() -> _get_revid_in_range()
277
        # exclude remote revisions
7143.15.5 by Jelmer Vernooij
More PEP8 fixes.
278
        self.assertUnmerged(
279
            local_extra, [('2', rrevid2, 0)],
280
            local.branch, remote.branch, remote_revid_range=(None, rrevid2))
281
        self.assertUnmerged(
282
            local_extra, [('2', rrevid2, 0)],
283
            local.branch, remote.branch, remote_revid_range=(lrevid1, rrevid2))
284
        self.assertUnmerged(
285
            local_extra, [('2', rrevid2, 0)],
286
            local.branch, remote.branch, remote_revid_range=(rrevid2, rrevid2))
287
        self.assertUnmerged(
288
            local_extra, [('2', rrevid2, 0), ('3', rrevid3, 0)],
289
            local.branch, remote.branch, remote_revid_range=(None, rrevid3))
290
        self.assertUnmerged(
291
            local_extra, [('2', rrevid2, 0), ('3', rrevid3, 0)],
292
            local.branch, remote.branch, remote_revid_range=(rrevid2, rrevid3))
293
        self.assertUnmerged(
294
            local_extra, [('3', rrevid3, 0)],
295
            local.branch, remote.branch, remote_revid_range=(rrevid3, rrevid3))
6719.1.2 by Jelmer Vernooij
Fix some tests.
296
        self.assertUnmerged(None, [('2', rrevid2, 0), ('3', rrevid3, 0)],
7143.15.2 by Jelmer Vernooij
Run autopep8.
297
                            local.branch, remote.branch, 'remote',
298
                            remote_revid_range=(rrevid2, rrevid3))
3921.3.7 by Marius Kruger
just filter the missing revisions once all have been calculated.
299
300
        # exclude local and remote revisions
6719.1.2 by Jelmer Vernooij
Fix some tests.
301
        self.assertUnmerged([('3', lrevid3, 0)], [('3', rrevid3, 0)],
7143.15.2 by Jelmer Vernooij
Run autopep8.
302
                            local.branch, remote.branch, local_revid_range=(
303
                                lrevid3, lrevid3),
304
                            remote_revid_range=(rrevid3, rrevid3))