11import subprocess
22import os
33import shlex
4+ import sys
45from pathlib import Path
56from typing import Dict , List , Tuple
7+ import importlib
8+
69
710# shlex.split() splits according to shell quoting rules
811WASMTIME = shlex .split (os .getenv ("WASMTIME" , "wasmtime" ))
@@ -26,33 +29,46 @@ def get_wasi_versions() -> List[str]:
2629
2730
2831def compute_argv (test_path : str ,
29- args : List [str ],
30- env : Dict [str , str ],
31- dirs : List [Tuple [Path , str ]],
32+ args_env_dirs : Tuple [List [str ], Dict [str , str ], List [Tuple [Path , str ]]],
33+ proposals : List [str ],
3234 wasi_version : str ) -> List [str ]:
33- argv = [] + WASMTIME
35+
36+ argv = []
37+ argv += WASMTIME
38+ args , env , dirs = args_env_dirs
39+
3440 for k , v in env .items ():
3541 argv += ["--env" , f"{ k } ={ v } " ]
42+
3643 for host , guest in dirs :
3744 argv += ["--dir" , f"{ host } ::{ guest } " ] # noqa: E231
45+
3846 argv += [test_path ]
47+
3948 argv += args
40- _add_wasi_version_options (argv , wasi_version )
49+ _add_wasi_version_options (argv , wasi_version , proposals )
4150 return argv
4251
4352
4453# The user might provide WASMTIME="wasmtime --option -Sfoo". Let's
4554# insert the options to choose the WASI version before the user's
4655# options, so that the user can override our choices.
47- def _add_wasi_version_options (argv : List [str ], wasi_version : str ) -> None :
56+ def _add_wasi_version_options (argv : List [str ], wasi_version : str , proposals : List [ str ] ) -> None :
4857 splice_pos = len (WASMTIME )
4958 while splice_pos > 1 and args [splice_pos - 1 ].startswith ("-" ):
5059 splice_pos -= 1
5160 match wasi_version :
5261 case "wasm32-wasip1" :
5362 pass
5463 case "wasm32-wasip3" :
64+ flags_from_proposals = ""
65+ if "http" in proposals :
66+ flags_from_proposals += ",http"
67+ if "sockets" in proposals :
68+ flags_from_proposals += ",inherit-network"
69+
5570 argv [splice_pos :splice_pos ] = ["-Wcomponent-model-async" ,
56- "-Sp3,http,inherit-network" ]
71+ f"-Sp3{ flags_from_proposals } " ]
72+
5773 case _:
5874 pass
0 commit comments