mirror of https://github.com/python/cpython
reportdiff(): print a "plain diff" style diff.
XXX This should really be a unified diff, but I can't be bothered.
This commit is contained in:
parent
0a07639779
commit
cf691935bb
|
@ -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():
|
||||
|
|
Loading…
Reference in New Issue