From cf691935bb1a59bd7ff680b26b0b0040b7e25449 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Fri, 21 Sep 2001 21:06:22 +0000 Subject: [PATCH] reportdiff(): print a "plain diff" style diff. XXX This should really be a unified diff, but I can't be bothered. --- Lib/test/regrtest.py | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py index c8c916760ca..79ee3b1d3d6 100755 --- a/Lib/test/regrtest.py +++ b/Lib/test/regrtest.py @@ -351,10 +351,36 @@ def runtest(test, generate, verbose, quiet, testdir = None): def reportdiff(expected, output): print "*" * 70 import difflib - a = expected.splitlines(1) - b = output.splitlines(1) - diff = difflib.ndiff(a, b) - print ''.join(diff), + a = expected.splitlines() + b = output.splitlines() + sm = difflib.SequenceMatcher(a=a, b=b) + tuples = sm.get_opcodes() + def pair(x0, x1): + x0 += 1 + if x0 >= x1: + return str(x0) + else: + return "%d,%d" % (x0, x1) + for op, a0, a1, b0, b1 in tuples: + if op == 'equal': + pass + elif op == 'delete': + print pair(a0, a1) + "d" + pair(b0, b1) + for line in a[a0:a1]: + print "<", line + elif op == 'replace': + print pair(a0, a1) + "c" + pair(b0, b1) + for line in a[a0:a1]: + print "<", line + print "---" + for line in b[b0:b1]: + print ">", line + elif op == 'insert': + print str(a0) + "a" + pair(b0, b1) + for line in b[b0:b1]: + print ">", line + else: + print "get_opcodes() returned bad tuple?!?!", (op, a0, a1, b0, b1) print "*" * 70 def findtestdir():