aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2015-07-08 17:50:52 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2015-07-08 17:50:52 -0700
commit3becc272597f8054c41678265575280e866eeb06 (patch)
tree90c213ae27034a86b2e45840f631b787f24f264c /test
parent6aac96474d622a634989daa3afcae1e958082707 (diff)
spec_test.py: write to stdout instead of using 'print' throughout.
Combining direct stdout buffer writes and print doesn't work well; results are out of order.
Diffstat (limited to 'test')
-rwxr-xr-xtest/spec_tests.py27
1 files changed, 15 insertions, 12 deletions
diff --git a/test/spec_tests.py b/test/spec_tests.py
index 11b271c..182368b 100755
--- a/test/spec_tests.py
+++ b/test/spec_tests.py
@@ -32,8 +32,11 @@ if __name__ == "__main__":
help='only consider the test with the given number')
args = parser.parse_args(sys.argv[1:])
+def out(str):
+ sys.stdout.buffer.write(str.encode('utf-8'))
+
def print_test_header(headertext, example_number, start_line, end_line):
- print("Example %d (lines %d-%d) %s" % (example_number,start_line,end_line,headertext))
+ out("Example %d (lines %d-%d) %s\n" % (example_number,start_line,end_line,headertext))
def do_test(test, normalize, result_counts):
[retcode, actual_html, err] = cmark.to_html(test['markdown'])
@@ -52,23 +55,23 @@ def do_test(test, normalize, result_counts):
result_counts['pass'] += 1
else:
print_test_header(test['section'], test['example'], test['start_line'], test['end_line'])
- sys.stdout.buffer.write(test['markdown'].encode('utf-8'))
+ out(test['markdown'] + '\n')
if unicode_error:
- print("Unicode error: " + str(unicode_error))
- print("Expected: " + repr(expected_html))
- print("Got: " + repr(actual_html))
+ out("Unicode error: " + str(unicode_error) + '\n')
+ out("Expected: " + repr(expected_html) + '\n')
+ out("Got: " + repr(actual_html) + '\n')
else:
expected_html_lines = expected_html.splitlines(True)
actual_html_lines = actual_html.splitlines(True)
for diffline in unified_diff(expected_html_lines, actual_html_lines,
"expected HTML", "actual HTML"):
- sys.stdout.buffer.write(diffline.encode('utf-8'))
- sys.stdout.write('\n')
+ out(diffline)
+ out('\n')
result_counts['fail'] += 1
else:
print_test_header(test['section'], test['example'], test['start_line'], test['end_line'])
- print("program returned error code %d" % retcode)
- print(err)
+ out("program returned error code %d\n" % retcode)
+ out(err + '\n')
result_counts['error'] += 1
def get_tests(specfile):
@@ -114,7 +117,7 @@ def get_tests(specfile):
if __name__ == "__main__":
if args.debug_normalization:
- print(normalize_html(sys.stdin.read()))
+ out(normalize_html(sys.stdin.read()))
exit(0)
all_tests = get_tests(args.spec)
@@ -124,7 +127,7 @@ if __name__ == "__main__":
pattern_re = re.compile('.')
tests = [ test for test in all_tests if re.search(pattern_re, test['section']) and (not args.number or test['example'] == args.number) ]
if args.dump_tests:
- sys.stdout.buffer.write(json.dumps(tests, ensure_ascii=False, indent=2).encode('utf-8'))
+ out(json.dumps(tests, ensure_ascii=False, indent=2))
exit(0)
else:
skipped = len(all_tests) - len(tests)
@@ -132,7 +135,7 @@ if __name__ == "__main__":
result_counts = {'pass': 0, 'fail': 0, 'error': 0, 'skip': skipped}
for test in tests:
do_test(test, args.normalize, result_counts)
- print("{pass} passed, {fail} failed, {error} errored, {skip} skipped".format(**result_counts))
+ out("{pass} passed, {fail} failed, {error} errored, {skip} skipped\n".format(**result_counts))
if result_counts['fail'] == 0 and result_counts['error'] == 0:
exit(0)
else: