fixed testing infrastructure

This commit is contained in:
Wenzel Jakob 2015-10-01 17:34:26 +02:00
parent be0e834b82
commit 6d6fd099db
2 changed files with 36 additions and 4 deletions

View File

@ -113,6 +113,6 @@ endif()
enable_testing() enable_testing()
set(RUN_TEST ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/example/run_test.py) set(RUN_TEST ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/example/run_test.py)
foreach(i RANGE 1 7) foreach(i RANGE 1 12)
add_test(NAME example${i} COMMAND ${RUN_TEST} example${i}) add_test(NAME example${i} COMMAND ${RUN_TEST} example${i})
endforeach() endforeach()

View File

@ -1,12 +1,44 @@
import subprocess, sys, os import sys
import os
import re
import subprocess
remove_unicode_marker = re.compile(r'u(\'[^\']*\')')
remove_long_marker = re.compile(r'([0-9])L')
remove_hex = re.compile(r'0x[0-9a-f]+')
shorten_floats = re.compile(r'([1-9][0-9]*\.[0-9]{4})[0-9]*')
def sanitize(lines):
lines = lines.split('\n')
for i in range(len(lines)):
line = lines[i]
if line.startswith(" |"):
line = ""
line = remove_unicode_marker.sub(r'\1', line)
line = remove_long_marker.sub(r'\1', line)
line = remove_hex.sub(r'0xHEX', line)
line = shorten_floats.sub(r'\1', line)
line = line.replace('__builtin__', 'builtins')
line = line.replace('example.', '')
line = line.replace('method of builtins.PyCapsule instance', '')
line = line.strip()
lines[i] = line
lines = '\n'.join(sorted([l for l in lines if l != ""]))
print('==================')
print(lines)
return lines
path = os.path.dirname(__file__) path = os.path.dirname(__file__)
if path != '': if path != '':
os.chdir(path) os.chdir(path)
name = sys.argv[1] name = sys.argv[1]
output = subprocess.check_output([sys.executable, name + ".py"]).decode('utf-8') output_bytes = subprocess.check_output([sys.executable, name + ".py"])
reference = open(name + '.ref', 'r').read() output = sanitize(output_bytes.decode('utf-8'))
reference = sanitize(open(name + '.ref', 'r').read())
if output == reference: if output == reference:
print('Test "%s" succeeded.' % name) print('Test "%s" succeeded.' % name)