summaryrefslogtreecommitdiffstats
path: root/Lib/test/regrtest.py
diff options
context:
space:
mode:
authorTim Peters <tim.peters@gmail.com>2001-09-22 05:31:03 (GMT)
committerTim Peters <tim.peters@gmail.com>2001-09-22 05:31:03 (GMT)
commitc377b16d12ba325bb108eca575447d66f19294c0 (patch)
tree162c1102ac0407b7ef66f248832b68153473c88a /Lib/test/regrtest.py
parent58b072d53f48081111f6b6dd8ab1bea0d02eb459 (diff)
downloadcpython-c377b16d12ba325bb108eca575447d66f19294c0.zip
cpython-c377b16d12ba325bb108eca575447d66f19294c0.tar.gz
cpython-c377b16d12ba325bb108eca575447d66f19294c0.tar.bz2
Since the most likely failure mode for an expected-output test is a change
somewhere inside a line, use ndiff so that intraline difference marking can point out what changed within a line. I don't remember diff-style abbreviations either (haven't used it since '94, except to produce patches), so say the rest in English too.
Diffstat (limited to 'Lib/test/regrtest.py')
-rwxr-xr-xLib/test/regrtest.py37
1 files changed, 22 insertions, 15 deletions
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index 79ee3b1..d13ff4c 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -349,38 +349,45 @@ def runtest(test, generate, verbose, quiet, testdir = None):
return 0
def reportdiff(expected, output):
- print "*" * 70
import difflib
- a = expected.splitlines()
- b = output.splitlines()
+ print "*" * 70
+ a = expected.splitlines(1)
+ b = output.splitlines(1)
sm = difflib.SequenceMatcher(a=a, b=b)
tuples = sm.get_opcodes()
+
def pair(x0, x1):
+ # x0:x1 are 0-based slice indices; convert to 1-based line indices.
x0 += 1
if x0 >= x1:
- return str(x0)
+ return "line " + str(x0)
else:
- return "%d,%d" % (x0, x1)
+ return "lines %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)
+ print "***", pair(a0, a1), "of expected output missing:"
for line in a[a0:a1]:
- print "<", line
+ 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
+ print "*** mismatch between", pair(a0, a1), "of expected", \
+ "output and", pair(b0, b1), "of actual output:"
+ for line in difflib.ndiff(a[a0:a1], b[b0:b1]):
+ print line,
+
elif op == 'insert':
- print str(a0) + "a" + pair(b0, b1)
+ print "***", pair(b0, b1), "of actual output doesn't appear", \
+ "in expected output after line", str(a1)+":"
for line in b[b0:b1]:
- print ">", line
+ print "+", line,
+
else:
print "get_opcodes() returned bad tuple?!?!", (op, a0, a1, b0, b1)
+
print "*" * 70
def findtestdir():