run_test.py 1.35 KB
Newer Older
Wenzel Jakob's avatar
Wenzel Jakob committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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)
20
        line = remove_hex.sub(r'0', line)
Wenzel Jakob's avatar
Wenzel Jakob committed
21
22
23
24
25
26
27
28
29
30
31
32
        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
Wenzel Jakob's avatar
Wenzel Jakob committed
33
34
35
36
37
38

path = os.path.dirname(__file__)
if path != '':
    os.chdir(path)

name = sys.argv[1]
Wenzel Jakob's avatar
Wenzel Jakob committed
39
40
41
output_bytes = subprocess.check_output([sys.executable, name + ".py"])
output    = sanitize(output_bytes.decode('utf-8'))
reference = sanitize(open(name + '.ref', 'r').read())
Wenzel Jakob's avatar
Wenzel Jakob committed
42
43
44
45
46
47
48

if output == reference:
    print('Test "%s" succeeded.' % name)
    exit(0)
else:
    print('Test "%s" FAILED!' % name)
    exit(-1)