"vscode:/vscode.git/clone" did not exist on "68e6fdaa90fc93979e6d5d1e9f788f464593e8f2"
run_test.py 2.07 KB
Newer Older
Wenzel Jakob's avatar
Wenzel Jakob committed
1
2
3
4
5
6
7
import sys
import os
import re
import subprocess

remove_unicode_marker = re.compile(r'u(\'[^\']*\')')
remove_long_marker    = re.compile(r'([0-9])L')
Wenzel Jakob's avatar
Wenzel Jakob committed
8
remove_hex            = re.compile(r'0x[0-9a-fA-F]+')
Wenzel Jakob's avatar
Wenzel Jakob committed
9
10
11
12
13
14
15
16
17
18
19
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
        line = shorten_floats.sub(r'\1', line)
        line = line.replace('__builtin__', 'builtins')
        line = line.replace('example.', '')
24
        line = line.replace('unicode', 'str')
25
26
        line = line.replace('Example4.EMode', 'EMode')
        line = line.replace('example.EMode', 'EMode')
Wenzel Jakob's avatar
Wenzel Jakob committed
27
28
        line = line.replace('method of builtins.PyCapsule instance', '')
        line = line.strip()
Wenzel Jakob's avatar
Wenzel Jakob committed
29
30
        if sys.platform == 'win32':
            lower = line.lower()
31
32
            # The precise pattern of allocations and deallocations is dependent on the compiler
            # and optimization level, so we unfortunately can't reliably check it in this kind of test case
Wenzel Jakob's avatar
Wenzel Jakob committed
33
            if 'constructor' in lower or 'destructor' in lower \
34
               or 'ref' in lower or 'freeing' in lower:
Wenzel Jakob's avatar
Wenzel Jakob committed
35
                line = ""
Wenzel Jakob's avatar
Wenzel Jakob committed
36
37
38
39
40
41
42
        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
43
44
45
46
47
48

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

name = sys.argv[1]
Wenzel Jakob's avatar
Wenzel Jakob committed
49
50
51
output_bytes = subprocess.check_output([sys.executable, name + ".py"],
                                       stderr=subprocess.STDOUT)

Wenzel Jakob's avatar
Wenzel Jakob committed
52
53
output    = sanitize(output_bytes.decode('utf-8'))
reference = sanitize(open(name + '.ref', 'r').read())
Wenzel Jakob's avatar
Wenzel Jakob committed
54

Wenzel Jakob's avatar
Wenzel Jakob committed
55
56
57
58
if 'NumPy missing' in output:
    print('Test "%s" could not be run.' % name)
    exit(0)
elif output == reference:
Wenzel Jakob's avatar
Wenzel Jakob committed
59
60
61
62
63
    print('Test "%s" succeeded.' % name)
    exit(0)
else:
    print('Test "%s" FAILED!' % name)
    exit(-1)