-
Notifications
You must be signed in to change notification settings - Fork 20
/
run_windows_tests.py
executable file
·89 lines (77 loc) · 2.47 KB
/
run_windows_tests.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/usr/bin/env python3
# Run windows tests.
import os
import os.path
import sys
import unittest
import glob
# Check the platform.
if not sys.platform.startswith('win'):
if sys.platform == 'cygwin':
print('On Cygwin, this needs to run using a native Windows copy of Python.', file=sys.stderr)
else:
print('Only works on native Windows, Cygwin and MSYS2.', file=sys.stderr)
exit(1)
# Parse command-line options.
verbose = False
verbose_flag = ''
build = True
dirs = ['lib', 's3270', 'b3270', 'c3270', 'wc3270', 'pr3287']
args = sys.argv[1:]
while len(args) > 0 and args[0][0] == '-':
if args[0] == '-v':
verbose = True
verbose_flag = '-v'
elif args[0] == '-nobuild':
build = False
else:
print(f"Unknown option '{args[0]}'")
exit(1)
args = args[1:]
if len(args) > 0:
dirs = args
# Run Makefile/gcc-based tests.
def run_gcc_tests():
# Build the code.
if build and os.system('make windows') != 0:
exit(1)
# Run the library tests.
if 'lib' in dirs:
dirs.remove('lib')
if os.system('make windows-lib-test') != 0:
exit(1)
# Set the path.
if os.path.exists('obj\\win64'):
obj = 'obj\\win64'
elif os.path.exists('obj\\win32'):
obj = 'obj\\win32'
else:
print("Missing object directory.", file=sys.stderr)
exit(1)
os.environ['PATH'] = ';'.join([os.getcwd() + '\\' + obj + '\\' + dir for dir in dirs] + [os.environ['PATH']])
# Run the tests.
cmd = sys.executable + ' -m unittest ' + verbose_flag + ' ' + ' '.join([' '.join(glob.glob(dir + '\\Test\\test*.py')) for dir in dirs])
os.system(cmd)
# Run Visual Studio tests.
def run_vs_tests():
# Build the code.
os.chdir('VisualStudio')
if build and os.system('msbuild /p:Configuration=Debug /p:Platform=x64') != 0:
exit(1)
os.chdir('..')
# Run the library tests.
if 'lib' in dirs:
dirs.remove('lib')
for test in ['base64', 'bind_opts', 'json', 'utf8']:
if verbose:
print(test + '_test')
if os.system(f'VisualStudio\\x64\\Debug\\{test}_test.exe') !=0:
exit(1)
# Run the emulator tests.
cmd = 'python3 -m unittest ' + verbose_flag + ' ' + ' '.join([' '.join(glob.glob(dir + '\\Test\\test*.py')) for dir in dirs])
os.system(cmd)
# Guess whether we are supposed to build/run with VS or gcc.
if 'DevEnvDir' in os.environ:
run_vs_tests()
else:
run_gcc_tests()