207
207
self.ann.annotate_flat(self.ff_key))
209
209
def test_annotate_flat_respects_break_ann_tie(self):
210
tiebreaker = annotate._break_annotation_tie
213
def custom_tiebreaker(annotated_lines):
214
self.assertEqual(2, len(annotated_lines))
215
left = annotated_lines[0]
216
self.assertEqual(2, len(left))
217
self.assertEqual(b'new content\n', left[1])
218
right = annotated_lines[1]
219
self.assertEqual(2, len(right))
220
self.assertEqual(b'new content\n', right[1])
221
calls.append((left[0], right[0]))
222
# Our custom tiebreaker takes the *largest* value, rather than
223
# the *smallest* value
224
if left[0] < right[0]:
228
annotate._break_annotation_tie = custom_tiebreaker
229
self.make_many_way_common_merge_text()
230
self.assertEqual([(self.fa_key, b'simple\n'),
231
(self.fe_key, b'new content\n')],
232
self.ann.annotate_flat(self.ff_key))
233
self.assertEqual([(self.fe_key, self.fc_key),
234
(self.fe_key, self.fb_key)], calls)
236
annotate._break_annotation_tie = tiebreaker
211
def custom_tiebreaker(annotated_lines):
212
self.assertEqual(2, len(annotated_lines))
213
left = annotated_lines[0]
214
self.assertEqual(2, len(left))
215
self.assertEqual(b'new content\n', left[1])
216
right = annotated_lines[1]
217
self.assertEqual(2, len(right))
218
self.assertEqual(b'new content\n', right[1])
219
seen.update([left[0], right[0]])
220
# Our custom tiebreaker takes the *largest* value, rather than
221
# the *smallest* value
222
if left[0] < right[0]:
226
self.overrideAttr(annotate, '_break_annotation_tie', custom_tiebreaker)
227
self.make_many_way_common_merge_text()
228
self.assertEqual([(self.fa_key, b'simple\n'),
229
(self.fe_key, b'new content\n')],
230
self.ann.annotate_flat(self.ff_key))
231
# Calls happen in set iteration order but should keys should be seen
232
self.assertEqual({self.fb_key, self.fc_key, self.fe_key}, seen)
239
234
def test_needed_keys_simple(self):
240
235
self.make_simple_text()