blob: fcfce1428329fa4c84814c33cb90138e9de2cbec [file] [log] [blame]
Wenzel Jakob6d6fd092015-10-01 17:34:26 +02001import sys
2import os
3import re
4import subprocess
5
6remove_unicode_marker = re.compile(r'u(\'[^\']*\')')
7remove_long_marker = re.compile(r'([0-9])L')
Wenzel Jakob607654f2015-10-13 23:58:10 +02008remove_hex = re.compile(r'0x[0-9a-fA-F]+')
Wenzel Jakob6d6fd092015-10-01 17:34:26 +02009shorten_floats = re.compile(r'([1-9][0-9]*\.[0-9]{4})[0-9]*')
10
11
12def sanitize(lines):
13 lines = lines.split('\n')
14 for i in range(len(lines)):
15 line = lines[i]
16 if line.startswith(" |"):
17 line = ""
18 line = remove_unicode_marker.sub(r'\1', line)
19 line = remove_long_marker.sub(r'\1', line)
Wenzel Jakob3b806d42015-10-11 16:29:35 +020020 line = remove_hex.sub(r'0', line)
Wenzel Jakob6d6fd092015-10-01 17:34:26 +020021 line = shorten_floats.sub(r'\1', line)
22 line = line.replace('__builtin__', 'builtins')
23 line = line.replace('example.', '')
24 line = line.replace('method of builtins.PyCapsule instance', '')
25 line = line.strip()
Wenzel Jakob607654f2015-10-13 23:58:10 +020026 if sys.platform == 'win32':
27 lower = line.lower()
Wenzel Jakobfab881c2015-10-18 17:04:24 +020028 if 'constructor' in lower or 'destructor' in lower \
29 or 'ref' in lower:
Wenzel Jakob607654f2015-10-13 23:58:10 +020030 line = ""
Wenzel Jakob6d6fd092015-10-01 17:34:26 +020031 lines[i] = line
32
33 lines = '\n'.join(sorted([l for l in lines if l != ""]))
34
35 print('==================')
36 print(lines)
37 return lines
Wenzel Jakob38bd7112015-07-05 20:05:44 +020038
39path = os.path.dirname(__file__)
40if path != '':
41 os.chdir(path)
42
43name = sys.argv[1]
Wenzel Jakobfab881c2015-10-18 17:04:24 +020044output_bytes = subprocess.check_output([sys.executable, name + ".py"],
45 stderr=subprocess.STDOUT)
46
Wenzel Jakob6d6fd092015-10-01 17:34:26 +020047output = sanitize(output_bytes.decode('utf-8'))
48reference = sanitize(open(name + '.ref', 'r').read())
Wenzel Jakob38bd7112015-07-05 20:05:44 +020049
Wenzel Jakobfab881c2015-10-18 17:04:24 +020050if 'NumPy missing' in output:
51 print('Test "%s" could not be run.' % name)
52 exit(0)
53elif output == reference:
Wenzel Jakob38bd7112015-07-05 20:05:44 +020054 print('Test "%s" succeeded.' % name)
55 exit(0)
56else:
57 print('Test "%s" FAILED!' % name)
58 exit(-1)