Don't do anything with the diff parser if nothing changes.

This commit is contained in:
Dave Halter
2017-01-29 22:12:24 +01:00
parent e5af996829
commit 68a3a9cf41
2 changed files with 8 additions and 2 deletions

View File

@@ -155,9 +155,15 @@ class DiffParser(object):
line_length = len(lines_new)
lines_old = splitlines(self._parser.source, keepends=True)
sm = difflib.SequenceMatcher(None, lines_old, self._parser_lines_new)
opcodes = sm.get_opcodes()
debug.speed('diff parser calculated')
debug.dbg('diff: line_lengths old: %s, new: %s' % (len(lines_old), line_length))
for operation, i1, i2, j1, j2 in sm.get_opcodes():
if len(opcodes) == 1 and opcodes[0][0] == 'equal':
self._copy_count = 1
return self._module
for operation, i1, i2, j1, j2 in opcodes:
debug.dbg('diff %s old[%s:%s] new[%s:%s]',
operation, i1 + 1, i2, j1 + 1, j2)

View File

@@ -420,7 +420,7 @@ def test_whitespace_at_end(differ):
code = dedent('str\n\n')
differ.initialize(code)
differ.parse(code, parsers=1, copies=1)
differ.parse(code + '\n', parsers=1, copies=1)
def test_in_class_movements(differ):