]> granicus.if.org Git - python/commitdiff
reportdiff(): print a "plain diff" style diff.
authorGuido van Rossum <guido@python.org>
Fri, 21 Sep 2001 21:06:22 +0000 (21:06 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 21 Sep 2001 21:06:22 +0000 (21:06 +0000)
XXX This should really be a unified diff, but I can't be bothered.

Lib/test/regrtest.py

index c8c916760cae2abd4b74c37d2c9d05a2865f589d..79ee3b1d3d62a0cb71d2960ada59225b29b7e32e 100755 (executable)
@@ -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():