14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24
from bzrlib.missing import (
21
from ..missing import (
25
22
iter_log_revisions,
27
from bzrlib.tests import TestCaseWithTransport
28
from bzrlib.workingtree import WorkingTree
24
from . import TestCaseWithTransport
31
27
class TestMissing(TestCaseWithTransport):
72
68
base_tree.add(['a'], ['a-id'])
73
69
base_tree.commit('add a', rev_id='b-1')
75
child_tree = base_tree.bzrdir.sprout('child').open_workingtree()
71
child_tree = base_tree.controldir.sprout('child').open_workingtree()
77
73
self.build_tree(['child/b'])
78
74
child_tree.add(['b'], ['b-id'])
138
134
class TestFindUnmerged(tests.TestCaseWithTransport):
140
136
def assertUnmerged(self, local, remote, local_branch, remote_branch,
141
restrict='all', include_merges=False, backward=False,
137
restrict='all', include_merged=False, backward=False,
142
138
local_revid_range=None, remote_revid_range=None):
143
139
"""Check the output of find_unmerged_mainline_revisions"""
144
140
local_extra, remote_extra = missing.find_unmerged(
145
141
local_branch, remote_branch, restrict,
146
include_merges=include_merges, backward=backward,
142
include_merged=include_merged, backward=backward,
147
143
local_revid_range=local_revid_range,
148
144
remote_revid_range=remote_revid_range)
149
145
self.assertEqual(local, local_extra)
161
157
def test_one_ahead(self):
162
158
tree = self.make_branch_and_tree('tree')
163
159
rev1 = tree.commit('one')
164
tree2 = tree.bzrdir.sprout('tree2').open_workingtree()
160
tree2 = tree.controldir.sprout('tree2').open_workingtree()
165
161
rev2 = tree2.commit('two')
166
162
self.assertUnmerged([], [('2', rev2)], tree.branch, tree2.branch)
167
163
self.assertUnmerged([('2', rev2)], [], tree2.branch, tree.branch)
169
165
def test_restrict(self):
170
166
tree = self.make_branch_and_tree('tree')
171
167
rev1 = tree.commit('one')
172
tree2 = tree.bzrdir.sprout('tree2').open_workingtree()
168
tree2 = tree.controldir.sprout('tree2').open_workingtree()
173
169
rev2 = tree2.commit('two')
174
170
self.assertUnmerged([], [('2', rev2)], tree.branch, tree2.branch)
175
171
self.assertUnmerged([], None, tree.branch, tree2.branch, 'local')
191
187
self.assertUnmerged([], [], tree.branch, tree2.branch,
192
188
local_revid_range=(rev1, rev1))
194
def test_include_merges(self):
190
def test_include_merged(self):
195
191
tree = self.make_branch_and_tree('tree')
196
192
rev1 = tree.commit('one', rev_id='rev1')
198
tree2 = tree.bzrdir.sprout('tree2').open_workingtree()
194
tree2 = tree.controldir.sprout('tree2').open_workingtree()
199
195
rev2 = tree2.commit('two', rev_id='rev2')
200
196
rev3 = tree2.commit('three', rev_id='rev3')
202
tree3 = tree2.bzrdir.sprout('tree3').open_workingtree()
198
tree3 = tree2.controldir.sprout('tree3').open_workingtree()
203
199
rev4 = tree3.commit('four', rev_id='rev4')
204
200
rev5 = tree3.commit('five', rev_id='rev5')
211
207
('3.1.1', 'rev4', 1), ('3.1.2', 'rev5', 1),
213
209
tree.branch, tree2.branch,
216
212
self.assertUnmerged([], [('4', 'rev6', 0),
217
213
('3.1.2', 'rev5', 1), ('3.1.1', 'rev4', 1),
218
214
('3', 'rev3', 0), ('2', 'rev2', 0),
220
216
tree.branch, tree2.branch,
224
220
self.assertUnmerged([], [('4', 'rev6', 0)],
225
221
tree.branch, tree2.branch,
226
include_merges=True, remote_revid_range=(rev6, rev6))
222
include_merged=True, remote_revid_range=(rev6, rev6))
228
224
self.assertUnmerged([], [('3', 'rev3', 0), ('3.1.1', 'rev4', 1)],
229
225
tree.branch, tree2.branch,
230
include_merges=True, remote_revid_range=(rev3, rev4))
226
include_merged=True, remote_revid_range=(rev3, rev4))
232
228
self.assertUnmerged([], [('4', 'rev6', 0), ('3.1.2', 'rev5', 1)],
233
229
tree.branch, tree2.branch,
234
include_merges=True, remote_revid_range=(rev5, rev6))
230
include_merged=True, remote_revid_range=(rev5, rev6))
236
232
def test_revision_range(self):
237
233
local = self.make_branch_and_tree('local')
238
234
lrevid1 = local.commit('one')
239
remote = local.bzrdir.sprout('remote').open_workingtree()
235
remote = local.controldir.sprout('remote').open_workingtree()
240
236
rrevid2 = remote.commit('two')
241
237
rrevid3 = remote.commit('three')
242
238
rrevid4 = remote.commit('four')