...
1# adapter for wazero until/unless https://github.com/WebAssembly/wasi-testsuite/pull/55
2
3import argparse
4import subprocess
5import sys
6import os
7import shlex
8
9# shlex.split() splits according to shell quoting rules
10WAZERO = shlex.split(os.getenv("TEST_RUNTIME_EXE", "wazero"))
11
12parser = argparse.ArgumentParser()
13parser.add_argument("--version", action="store_true")
14parser.add_argument("--test-file", action="store")
15parser.add_argument("--arg", action="append", default=[])
16parser.add_argument("--env", action="append", default=[])
17parser.add_argument("--dir", action="append", default=[])
18
19args = parser.parse_args()
20
21if args.version:
22 version = subprocess.run(
23 WAZERO + ["version"], capture_output=True, text=True
24 ).stdout.strip()
25 if version == "dev":
26 version = "0.0.0"
27 print("wazero", version)
28 sys.exit(0)
29
30TEST_FILE = args.test_file
31TEST_DIR = os.path.dirname(TEST_FILE)
32PROG_ARGS = []
33if args.arg:
34 PROG_ARGS = ["--"] + args.arg
35ENV_ARGS = [f"-env={e}" for e in args.env]
36cwd = os.getcwd()
37DIR_ARGS = [f"-mount={cwd}/{dir}:{dir}" for dir in args.dir]
38
39PROG = (
40 WAZERO
41 + ["run", "-hostlogging=filesystem"]
42 + ENV_ARGS
43 + DIR_ARGS
44 + [TEST_FILE]
45 + PROG_ARGS
46)
47sys.exit(subprocess.run(PROG, cwd=TEST_DIR).returncode)
View as plain text