Skip to content

Commit ea22f28

Browse files
committed
By default, skip tests for unsupported WASI worlds
1 parent 8a9a2c7 commit ea22f28

5 files changed

Lines changed: 35 additions & 18 deletions

File tree

test-runner/tests/test_test_suite.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ def test_test_suite_should_return_correct_count() -> None:
2121
ts.TestSuiteMeta("suite",
2222
tc.WasiVersion.WASM32_WASIP1,
2323
RuntimeMeta("test-runtime", "3.14",
24-
frozenset([tc.WasiVersion.WASM32_WASIP1]))),
24+
frozenset([tc.WasiVersion.WASM32_WASIP1]),
25+
frozenset([tc.WasiWorld.CLI_COMMAND]))),
2526
10.0,
2627
datetime.now(),
2728
[

test-runner/tests/test_test_suite_runner.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,10 @@ def test_runner_end_to_end() -> None:
7878
runtime_version_str = "4.2"
7979
the_runtime_wasi_version = tc.WasiVersion.WASM32_WASIP1
8080
runtime_wasi_versions = frozenset([the_runtime_wasi_version])
81+
runtime_wasi_worlds = frozenset([tc.WasiWorld.CLI_COMMAND])
8182
runtime_meta = RuntimeMeta(runtime_name, runtime_version_str,
82-
runtime_wasi_versions)
83+
runtime_wasi_versions,
84+
runtime_wasi_worlds)
8385

8486
expected_test_suite_meta = ts.TestSuiteMeta(test_suite_name,
8587
the_runtime_wasi_version,
@@ -139,7 +141,8 @@ def test_runner_end_to_end() -> None:
139141
assert filt.should_skip.call_count == 4
140142
for test_case in expected_test_cases:
141143
filt.should_skip.assert_any_call(expected_test_suite_meta,
142-
test_case.name)
144+
test_case.name,
145+
test_case.config)
143146

144147

145148
@patch("os.path.exists", Mock(return_value=False))

test-runner/wasi_test_runner/filters.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,25 @@
55
import json
66

77
from .test_suite import TestSuiteMeta
8+
from .test_case import Config
89

910

1011
class TestFilter(ABC):
1112
@abstractmethod
1213
def should_skip(
13-
self, meta: TestSuiteMeta, test_name: str
14+
self, meta: TestSuiteMeta, test_name: str, config: Config
1415
) -> Union[Tuple[Literal[True], str], Tuple[Literal[False], Literal[None]]]:
1516
pass
1617

1718

1819
class UnsupportedWasiTestExcludeFilter(TestFilter):
1920
def should_skip(
20-
self, meta: TestSuiteMeta, test_name: str
21+
self, meta: TestSuiteMeta, test_name: str, config: Config
2122
) -> Union[Tuple[Literal[True], str], Tuple[Literal[False], Literal[None]]]:
2223
if meta.wasi_version not in meta.runtime.supported_wasi_versions:
2324
return True, "WASI version unsupported by runtime"
25+
if config.world not in meta.runtime.supported_wasi_worlds:
26+
return True, "WASI world unsupported by runtime"
2427
return False, None
2528

2629

@@ -30,7 +33,7 @@ def __init__(self, filename: str) -> None:
3033
self.filter_dict = json.load(file)
3134

3235
def should_skip(
33-
self, meta: TestSuiteMeta, test_name: str
36+
self, meta: TestSuiteMeta, test_name: str, config: Config
3437
) -> Union[Tuple[Literal[True], str], Tuple[Literal[False], Literal[None]]]:
3538
test_suite_filter = self.filter_dict.get(meta.name)
3639
if test_suite_filter is None:

test-runner/wasi_test_runner/runtime_adapter.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ class RuntimeMeta(NamedTuple):
1111
name: str
1212
version: str
1313
supported_wasi_versions: frozenset[WasiVersion]
14+
supported_wasi_worlds: frozenset[WasiWorld]
1415

1516
def __str__(self) -> str:
1617
return f"{self.name} {self.version}"
@@ -83,11 +84,14 @@ def __init__(self, adapter_path: str) -> None:
8384
wasi_versions = frozenset(
8485
WasiVersion(v) for v in self._adapter.get_wasi_versions()
8586
)
87+
wasi_worlds = frozenset(
88+
WasiWorld(w) for w in self._adapter.get_wasi_worlds()
89+
)
8690
except subprocess.CalledProcessError as e:
8791
raise UnavailableRuntimeAdapterError(adapter_path, e) from e
8892
except FileNotFoundError as e:
8993
raise UnavailableRuntimeAdapterError(adapter_path, e) from e
90-
self._meta = RuntimeMeta(name, version, wasi_versions)
94+
self._meta = RuntimeMeta(name, version, wasi_versions, wasi_worlds)
9195

9296
def get_meta(self) -> RuntimeMeta:
9397
return self._meta

test-runner/wasi_test_runner/test_suite_runner.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -265,17 +265,24 @@ def run_tests_from_test_suite(
265265
meta = TestSuiteMeta(manifest.name, manifest.wasi_version,
266266
runtime.get_meta())
267267

268-
for test_path in glob.glob(os.path.join(test_suite_path, "*.wasm")):
269-
test_name = os.path.splitext(os.path.basename(test_path))[0]
268+
all_tests = [
269+
(test_path,
270+
os.path.splitext(os.path.basename(test_path))[0],
271+
_read_test_config(test_path))
272+
for test_path in glob.glob(os.path.join(test_suite_path, "*.wasm"))
273+
]
274+
275+
for test_path, name, config in all_tests:
270276
for filt in filters:
271277
# for now, just drop the skip reason string. it might be
272278
# useful to make reporters report it.
273-
skip, _ = filt.should_skip(meta, test_name)
279+
skip, _ = filt.should_skip(meta, name, config)
274280
if skip:
275-
test_case = _skip_single_test(test_path)
281+
test_case = _skip_single_test(name, config)
276282
break
277283
else:
278-
test_case = _execute_single_test(runtime, meta, test_path)
284+
test_case = _execute_single_test(
285+
runtime, meta, test_path, name, config)
279286
test_cases.append(test_case)
280287
for reporter in reporters:
281288
reporter.report_test(meta, test_case)
@@ -290,10 +297,9 @@ def run_tests_from_test_suite(
290297
)
291298

292299

293-
def _skip_single_test(test_path: str) -> TestCase:
294-
config = _read_test_config(test_path)
300+
def _skip_single_test(name: str, config: Config) -> TestCase:
295301
return TestCase(
296-
name=os.path.splitext(os.path.basename(test_path))[0],
302+
name=name,
297303
argv=[],
298304
config=config,
299305
result=Result(is_executed=False, failures=[]),
@@ -320,16 +326,16 @@ def _cleanup_test_output(host_dir: Path) -> None:
320326

321327

322328
def _execute_single_test(
323-
runtime: RuntimeAdapter, meta: TestSuiteMeta, test_path: str
329+
runtime: RuntimeAdapter, meta: TestSuiteMeta, test_path: str,
330+
name: str, config: Config
324331
) -> TestCase:
325-
config = _read_test_config(test_path)
326332
runner = TestCaseRunner(config, test_path, meta.wasi_version, runtime)
327333
test_start = time.time()
328334
result = runner.run()
329335
elapsed = time.time() - test_start
330336

331337
return TestCase(
332-
name=os.path.splitext(os.path.basename(test_path))[0],
338+
name=name,
333339
argv=runner.last_argv(),
334340
config=config,
335341
result=result,

0 commit comments

Comments
 (0)