Skip to content

Commit 657d79b

Browse files
authored
Merge pull request #162 from wingo/wasi-versions
Skip tests that runtimes don't support
2 parents c451206 + dd87f08 commit 657d79b

File tree

19 files changed

+181
-84
lines changed

19 files changed

+181
-84
lines changed

adapters/pywasm.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,14 @@ def get_version() -> str:
2121
return output[1]
2222

2323

24+
def get_wasi_versions() -> List[str]:
25+
return ["wasm32-wasip1"]
26+
2427
def compute_argv(test_path: str,
2528
args: List[str],
2629
env: Dict[str, str],
27-
dirs: List[Tuple[Path, str]]) -> List[str]:
30+
dirs: List[Tuple[Path, str]],
31+
wasi_version: str) -> List[str]:
2832
argv = [str(RUN_PYWASM)]
2933
for k, v in env.items():
3034
argv += ["--env", f"{k}={v}"]

adapters/wasm-micro-runtime.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,15 @@ def get_version() -> str:
2121
return output[1]
2222

2323

24+
def get_wasi_versions() -> List[str]:
25+
return ["wasm32-wasip1"]
26+
27+
2428
def compute_argv(test_path: str,
2529
args: List[str],
2630
env: Dict[str, str],
27-
dirs: List[Tuple[Path, str]]) -> List[str]:
31+
dirs: List[Tuple[Path, str]],
32+
wasi_version: str) -> List[str]:
2833
argv = [] + IWASM
2934
for k, v in env.items():
3035
argv += ["--env", f"{k}={v}"]

adapters/wasmedge.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,15 @@ def get_version() -> str:
2121
return output[1]
2222

2323

24+
def get_wasi_versions() -> List[str]:
25+
return ["wasm32-wasip1"]
26+
27+
2428
def compute_argv(test_path: str,
2529
args: List[str],
2630
env: Dict[str, str],
27-
dirs: List[Tuple[Path, str]]) -> List[str]:
31+
dirs: List[Tuple[Path, str]],
32+
wasi_version: str) -> List[str]:
2833
argv = [] + WASMEDGE
2934
for k, v in env.items():
3035
argv += ["--env", f"{k}={v}"]

adapters/wasmtime.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,15 @@ def get_version() -> str:
2121
return output[1]
2222

2323

24+
def get_wasi_versions() -> List[str]:
25+
return ["wasm32-wasip1", "wasm32-wasip3"]
26+
27+
2428
def compute_argv(test_path: str,
2529
args: List[str],
2630
env: Dict[str, str],
27-
dirs: List[Tuple[Path, str]]) -> List[str]:
31+
dirs: List[Tuple[Path, str]],
32+
wasi_version: str) -> List[str]:
2833
argv = [] + WASMTIME
2934
for k, v in env.items():
3035
argv += ["--env", f"{k}={v}"]

adapters/wazero.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,15 @@ def get_version() -> str:
2323
return version
2424

2525

26+
def get_wasi_versions() -> List[str]:
27+
return ["wasm32-wasip1"]
28+
29+
2630
def compute_argv(test_path: str,
2731
args: List[str],
2832
env: Dict[str, str],
29-
dirs: List[Tuple[Path, str]]) -> List[str]:
33+
dirs: List[Tuple[Path, str]],
34+
wasi_version: str) -> List[str]:
3035
argv = WAZERO + ["run", "-hostlogging=filesystem"]
3136
for k, v in env.items():
3237
argv += [f"-env={k}={v}"]

adapters/wizard.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,15 @@ def get_version() -> str:
2929
return output[1]
3030

3131

32+
def get_wasi_versions() -> List[str]:
33+
return ["wasm32-wasip1"]
34+
35+
3236
def compute_argv(test_path: str,
3337
args: List[str],
3438
env: Dict[str, str],
35-
dirs: List[Tuple[Path, str]]) -> List[str]:
39+
dirs: List[Tuple[Path, str]],
40+
wasi_version: str) -> List[str]:
3641
argv = [] + WIZARD
3742
for k, v in env.items():
3843
argv += [f"--env={k}={v}"]

run-tests

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def find_runtime_adapters(root, verbose=False):
5757
for candidate in root.glob("*.py"):
5858
try:
5959
adapter = runtime_adapter.RuntimeAdapter(candidate)
60-
print(f" {candidate.name}: {adapter.get_version()}")
60+
print(f" {candidate.name}: {adapter.get_meta()}")
6161
adapters.append(adapter)
6262
except runtime_adapter.LegacyRuntimeAdapterError:
6363
print(f" {candidate} is too old; update to new module format.")
@@ -85,9 +85,7 @@ if options.runtime_adapter:
8585
else:
8686
runtime_adapters = find_runtime_adapters(Path(__file__).parent / "adapters")
8787

88-
exclude_filters = [JSONTestExcludeFilter(filt) for filt in options.exclude_filter]
89-
9088
sys.exit(run_tests(runtime_adapters, test_suite,
9189
color=not options.disable_colors,
9290
json_log_file=options.json_output_location,
93-
exclude_filters=exclude_filters))
91+
exclude_filters=options.exclude_filter))

test-runner/tests/test_test_suite.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import wasi_test_runner.test_case as tc
44
import wasi_test_runner.test_suite as ts
5-
from wasi_test_runner.runtime_adapter import RuntimeVersion
5+
from wasi_test_runner.runtime_adapter import RuntimeMeta
66

77

88
def create_test_case(name: str, is_executed: bool, is_failed: bool) -> tc.TestCase:
@@ -18,8 +18,10 @@ def create_test_case(name: str, is_executed: bool, is_failed: bool) -> tc.TestCa
1818

1919
def test_test_suite_should_return_correct_count() -> None:
2020
suite = ts.TestSuite(
21-
"suite",
22-
RuntimeVersion("test-runtime", "3.14"),
21+
ts.TestSuiteMeta("suite",
22+
tc.WasiVersion.WASM32_WASIP1,
23+
RuntimeMeta("test-runtime", "3.14",
24+
frozenset([tc.WasiVersion.WASM32_WASIP1]))),
2325
10.0,
2426
datetime.now(),
2527
[

test-runner/tests/test_test_suite_runner.py

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22
from pathlib import Path
33
from unittest.mock import ANY, MagicMock, Mock, patch, mock_open
44

5+
import wasi_test_runner.test_suite as ts
56
import wasi_test_runner.test_case as tc
67
import wasi_test_runner.test_suite_runner as tsr
7-
from wasi_test_runner.runtime_adapter import RuntimeVersion
8+
from wasi_test_runner.runtime_adapter import RuntimeMeta
89

910

1011
def get_mock_open() -> Mock:
@@ -26,6 +27,7 @@ def open_mock(filename: str, *_args: Any, **_kwargs: Any) -> Any:
2627
# pylint: disable-msg=too-many-locals
2728
@patch("builtins.open", get_mock_open())
2829
@patch("os.path.exists", Mock(return_value=True))
30+
@patch("pathlib.Path.exists", Mock(return_value=True))
2931
def test_runner_end_to_end() -> None:
3032
test_suite_dir = "my-path"
3133
test_suite_name = "test-suite"
@@ -52,7 +54,14 @@ def test_runner_end_to_end() -> None:
5254

5355
runtime_name = "rt1"
5456
runtime_version_str = "4.2"
55-
runtime_version = RuntimeVersion(runtime_name, runtime_version_str)
57+
the_runtime_wasi_version = tc.WasiVersion.WASM32_WASIP1
58+
runtime_wasi_versions = frozenset([the_runtime_wasi_version])
59+
runtime_meta = RuntimeMeta(runtime_name, runtime_version_str,
60+
runtime_wasi_versions)
61+
62+
expected_test_suite_meta = ts.TestSuiteMeta(test_suite_name,
63+
the_runtime_wasi_version,
64+
runtime_meta)
5665

5766
expected_argv = [runtime_name, "<test>"]
5867
expected_test_cases = [
@@ -64,7 +73,7 @@ def test_runner_end_to_end() -> None:
6473

6574
runtime = Mock()
6675
runtime.get_name.return_value = runtime_name
67-
runtime.get_version.return_value = runtime_version
76+
runtime.get_meta.return_value = runtime_meta
6877
runtime.run_test.side_effect = outputs
6978
runtime.compute_argv.return_value = expected_argv
7079

@@ -87,7 +96,7 @@ def test_runner_end_to_end() -> None:
8796
filters) # type: ignore
8897

8998
# Assert manifest was read correctly
90-
assert suite.name == test_suite_name
99+
assert suite.meta == expected_test_suite_meta
91100

92101
# Assert test cases
93102
assert suite.test_count == 3
@@ -98,16 +107,16 @@ def test_runner_end_to_end() -> None:
98107
for test_path, config in zip(test_paths, expected_config):
99108
expected_dirs = [(Path(test_suite_dir) / d, d) for d in config.dirs]
100109
runtime.compute_argv.assert_any_call(
101-
str(test_path), config.args, config.env, expected_dirs
110+
str(test_path), config.args, config.env, expected_dirs,
111+
"wasm32-wasip1"
102112
)
103113
runtime.run_test.assert_called_with(expected_argv)
104114

105115
# Assert reporters calls
106116
for reporter in reporters:
107117
assert reporter.report_test.call_count == 3
108118
for test_case in expected_test_cases:
109-
reporter.report_test.assert_any_call(test_suite_name,
110-
runtime_version,
119+
reporter.report_test.assert_any_call(expected_test_suite_meta,
111120
test_case)
112121

113122
# Assert validators calls
@@ -120,12 +129,12 @@ def test_runner_end_to_end() -> None:
120129
for filt in filters:
121130
assert filt.should_skip.call_count == 3
122131
for test_case in expected_test_cases:
123-
filt.should_skip.assert_any_call(runtime_version, suite.name,
132+
filt.should_skip.assert_any_call(expected_test_suite_meta,
124133
test_case.name)
125134

126135

127136
@patch("os.path.exists", Mock(return_value=False))
128137
def test_runner_should_use_path_for_name_if_manifest_does_not_exist() -> None:
129138
suite = tsr.run_tests_from_test_suite("my-path", Mock(), [], [], [])
130139

131-
assert suite.name == "my-path"
140+
assert suite.meta.name == "my-path"

test-runner/wasi_test_runner/__main__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from .runtime_adapter import RuntimeAdapter
77
from .harness import run_all_tests
88
from .filters import TestFilter
9-
from .filters import JSONTestExcludeFilter
9+
from .filters import JSONTestExcludeFilter, UnsupportedWasiTestExcludeFilter
1010
from .reporters import TestReporter
1111
from .reporters.console import ConsoleTestReporter
1212
from .reporters.json import JSONTestReporter
@@ -56,7 +56,7 @@ def main() -> int:
5656

5757
validators: List[Validator] = [exit_code_validator, stdout_validator]
5858

59-
filters: List[TestFilter] = []
59+
filters: List[TestFilter] = [UnsupportedWasiTestExcludeFilter()]
6060
for filt in options.exclude_filter:
6161
filters.append(JSONTestExcludeFilter(filt))
6262

0 commit comments

Comments
 (0)