Skip to content

Commit e1af515

Browse files
Wasm: add test harness script to propagate environment variables
1 parent d465edc commit e1af515

File tree

2 files changed

+57
-2
lines changed

2 files changed

+57
-2
lines changed

test/lit.cfg

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,6 @@ config.swift_demangle_yamldump = inferSwiftBinary('swift-demangle-yamldump')
352352
config.swift_demangle = inferSwiftBinary('swift-demangle')
353353
config.benchmark_o = inferSwiftBinary('Benchmark_O')
354354
config.benchmark_driver = inferSwiftBinary('Benchmark_Driver')
355-
config.wasmer = inferSwiftBinary('wasmer')
356355
config.wasm_ld = inferSwiftBinary('wasm-ld')
357356

358357
config.swift_utils = make_path(config.swift_src_root, 'utils')
@@ -1726,7 +1725,9 @@ elif run_os == 'wasi':
17261725
config.swift_test_options, config.swift_frontend_test_options])
17271726
subst_target_swift_frontend_mock_sdk = config.target_swift_frontend
17281727
subst_target_swift_frontend_mock_sdk_after = ""
1729-
config.target_run = '%s run --singlepass --' % config.wasmer
1728+
config.target_run = os.path.join(config.swift_utils, 'webassembly', 'wasm-run.py')
1729+
config.target_env_prefix = 'WASM_RUN_CHILD_'
1730+
17301731
if 'interpret' in lit_config.params:
17311732
use_interpreter_for_simple_runs()
17321733
config.target_sil_opt = (

utils/webassembly/wasm-run.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
#!/usr/bin/env python3
2+
3+
import argparse
4+
import os
5+
import subprocess
6+
import sys
7+
8+
9+
def collect_wasm_env(local_env=os.environ, prefix='WASM_RUN_CHILD_'):
10+
return dict((key[len(prefix):], value)
11+
for key, value in local_env.items() if key.startswith(prefix))
12+
13+
14+
class WasmerRunner(object):
15+
def __init__(self):
16+
pass
17+
18+
def run(self, args):
19+
command = self.invocation(args)
20+
if args.verbose:
21+
print(' '.join(command), file=sys.stderr)
22+
23+
if not args.dry_run:
24+
subprocess.check_call(command)
25+
26+
def invocation(self, args):
27+
command = ["wasmer", "run", "--singlepass"]
28+
envs = collect_wasm_env()
29+
for key in envs:
30+
command.append("--env")
31+
command.append(f"{key}={envs[key]}")
32+
command.append("--")
33+
command.extend(args.command)
34+
return command
35+
36+
37+
def main():
38+
parser = argparse.ArgumentParser()
39+
40+
parser.add_argument('-v', '--verbose', action='store_true', dest='verbose',
41+
help='print commands as they are run')
42+
parser.add_argument('-n', '--dry-run', action='store_true', dest='dry_run',
43+
help="print the commands that would have been run, but"
44+
" don't actually run them")
45+
parser.add_argument('command', nargs=argparse.REMAINDER,
46+
help='the command to run', metavar='command...')
47+
48+
args = parser.parse_args()
49+
runner = WasmerRunner()
50+
runner.run(args)
51+
52+
53+
if __name__ == "__main__":
54+
main()

0 commit comments

Comments
 (0)