def _apply_processors(self, opcodes): if self.interfilediff: # Filter out any lines unrelated to these changes from the # interdiff. This will get rid of any merge information. opcodes = filter_interdiff_opcodes(opcodes, self.filediff.diff, self.interfilediff.diff) # From the filtered content, we may have ended up with consecutive # "equal" chunks, so merge them. opcodes = merge_adjacent_chunks(opcodes) for opcode in opcodes: yield opcode
def test_merge_adjacent_chunks(self): """Testing merge_adjacent_chunks""" opcodes = [ ('equal', 0, 0, 0, 1), ('equal', 0, 5, 1, 5), ('delete', 5, 10, 5, 5), ('equal', 10, 25, 5, 20), ('replace', 25, 26, 20, 26), ('equal', 26, 40, 26, 40), ('equal', 40, 40, 40, 45), ] new_opcodes = list(merge_adjacent_chunks(opcodes)) self.assertEqual(new_opcodes, [ ('equal', 0, 5, 0, 5), ('delete', 5, 10, 5, 5), ('equal', 10, 25, 5, 20), ('replace', 25, 26, 20, 26), ('equal', 26, 40, 26, 45), ])