[PATCH] tests: asciify all output
Mads Kiilerich
mads at kiilerich.com
Wed Sep 1 09:48:55 CDT 2010
# HG changeset patch
# User Mads Kiilerich <mads at kiilerich.com>
# Date 1283352508 -7200
# Node ID 48e8c92c6f9ca78f986870482ff0d1ae3961d21a
# Parent a55e3c50868fc2e827f44187c7fd3f6c4e2f3f31
tests: asciify all output
This encodes all non-ascii and control code output from tests with python-style
\-escapes.
This avoids the problem with handling non-ascii test output as non-ascii.
This changes the output of some tests - but to the better, IMHO, even though it
makes it less sh-ish.
(Some people, when confronted with a problem, think "I know, I'll use regular
expressions." Now they have two problems.)
diff --git a/tests/run-tests.py b/tests/run-tests.py
--- a/tests/run-tests.py
+++ b/tests/run-tests.py
@@ -460,6 +460,15 @@
vlog("# Running", cmd)
return run(cmd, options)
+asciifyre = re.compile(r'[\x00-\x08\x0a-\x1f\\\x7f-\xff]', re.MULTILINE) # match \t=\x09 or not?
+def asciify(s):
+ def f(m):
+ c = m.group(0)
+ if c in '\r\n\t':
+ return {'\r': r'\r', '\n': '\n', '\t': r'\t'}[c]
+ return r'\x%02X' % ord(c)
+ return asciifyre.sub(f, s)
+
def tsttest(test, options):
t = open(test)
out = []
@@ -514,6 +523,7 @@
postout += after.pop(pos)
pos = int(l.split()[1])
else:
+ l = asciify(l)
el = None
if pos in expected and expected[pos]:
el = expected[pos].pop(0)
More information about the Mercurial-devel
mailing list