-
Notifications
You must be signed in to change notification settings - Fork 26
/
Copy pathwizard.py
30 lines (24 loc) · 985 Bytes
/
wizard.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
import argparse
import subprocess
import sys
import os
import shlex
# shlex.split() splits according to shell quoting rules
WIZARD = shlex.split(os.getenv("TEST_RUNTIME_EXE", "wizeng.x86-64-linux"))
parser = argparse.ArgumentParser()
parser.add_argument("--version", action="store_true")
parser.add_argument("--test-file", action="store")
parser.add_argument("--arg", action="append", default=[])
parser.add_argument("--env", action="append", default=[])
parser.add_argument("--dir", action="append", default=[])
args = parser.parse_args()
if args.version:
# ensure no args when version is queried
subprocess.run(WIZARD[0:1] + ["-version"])
sys.exit(0)
TEST_FILE = args.test_file
PROG_ARGS = args.arg
ENV_ARGS = None if len(args.env) == 0 else f'--env={",".join(args.env)}'
DIR_ARGS = None if len(args.dir) == 0 else f'--dir={",".join(args.dir)}'
r = subprocess.run([arg for arg in WIZARD + [ENV_ARGS, DIR_ARGS, TEST_FILE] + PROG_ARGS if arg])
sys.exit(r.returncode)