From 6940c38061a0f1e757f9aa39b88f9064df8326dd Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 23 Sep 2026 01:34:16 +0000 Subject: [PATCH 1/3] fix(tools): include the generic shared suite in runtime sources runtime-sources walked only shared/ and /, so runnable cases in tests/cases/shared were never selected. Select every suite in target.suites, which already lists shared, shared/, and / in that order, and keep the existing native-run filters. Signed-off-by: Cursor Agent Co-authored-by: David --- tools/case_manifest.py | 2 +- tools/test_case_manifest.py | 44 +++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/tools/case_manifest.py b/tools/case_manifest.py index 147e1f42..5cb2ec58 100644 --- a/tools/case_manifest.py +++ b/tools/case_manifest.py @@ -141,7 +141,7 @@ def sources(self): def runtime_sources(self, target_id: str): target = self.target(target_id) paths = [] - for suite in (f"shared/{target.arch}", target.suite): + for suite in target.suites: directory = CASES_ROOT / suite entries = list(directory.glob("test*.wave")) entries.extend(directory.glob("test*/main.wave")) diff --git a/tools/test_case_manifest.py b/tools/test_case_manifest.py index 9b47d2fd..1f0e9b4a 100644 --- a/tools/test_case_manifest.py +++ b/tools/test_case_manifest.py @@ -19,7 +19,9 @@ from tools import case_manifest from tools.case_manifest import ( MIN_CASES_PER_SUITE, + CaseManifest, CaseManifestError, + CaseTarget, _validate_case_layout, load_case_manifest, ) @@ -225,6 +227,48 @@ def test_manifest_accepts_non_ascii_utf8_comments(self): ) self.assertEqual(load_case_manifest(manifest), self.manifest) + def test_runtime_sources_include_eligible_generic_shared_cases(self): + eligible = "fun main() {}\n" + included = ( + "shared/test1.wave", + "shared/test10.wave", + "shared/amd64/test1.wave", + "linux/amd64/test3.wave", + ) + omitted = { + "shared/test2.wave": "// wave-test: mode=check\nfun main() {}\n", + "shared/test3.wave": "// wave-test: runner=server\nfun main() {}\n", + "shared/test4.wave": "// wave-test: stdin=hello\nfun main() {}\n", + "shared/test5.wave": "// wave-test: udp-input=true\nfun main() {}\n", + "shared/test6.wave": "// wave-test: expected-exit=1\nfun main() {}\n", + "shared/test7.wave": eligible, + } + with tempfile.TemporaryDirectory() as temporary: + root = Path(temporary) + for relative in (*included, *omitted): + path = root / relative + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(omitted.get(relative, eligible), encoding="utf-8") + + target = CaseTarget( + id="linux-amd64", + os="linux", + arch="amd64", + suite="linux/amd64", + status="supported", + enabled=True, + ci=True, + executor="native", + suites=("shared", "shared/amd64", "linux/amd64"), + exclude=("shared/test7.wave",), + ) + manifest = CaseManifest(version=2, targets=(target,)) + with patch.object(case_manifest, "CASES_ROOT", root): + sources = manifest.runtime_sources("linux-amd64") + + self.assertEqual(sources, included) + self.assertEqual(len(sources), len(set(sources))) + def test_invalid_utf8_manifest_reports_path_in_case_manifest_error(self): with tempfile.TemporaryDirectory() as temporary: manifest = Path(temporary) / "cases.toml" From 212ea1624bcd5ec2976bd8a38ba7ca64849ed6c6 Mon Sep 17 00:00:00 2001 From: LunaStev Date: Tue, 29 Sep 2026 22:06:16 +0900 Subject: [PATCH 2/3] fix(tests): exclude unsupported shared wasm runtime cases Signed-off-by: LunaStev --- tests/cases/cases.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/cases/cases.toml b/tests/cases/cases.toml index 710bbffd..88ea4e3d 100644 --- a/tests/cases/cases.toml +++ b/tests/cases/cases.toml @@ -162,6 +162,7 @@ executor = "wasm" runner = "ubuntu-24.04" ci_group = "wasm" target = "wasm32-unknown-unknown" +exclude = ["shared/test1.wave", "shared/test2.wave", "shared/test3.wave", "shared/test4.wave", "shared/test5.wave", "shared/test6.wave", "shared/test7.wave", "shared/test8.wave", "shared/test9.wave", "shared/test10.wave"] [[target]] id = "wasm-wasi" @@ -171,6 +172,7 @@ executor = "wasm" runner = "ubuntu-24.04" ci_group = "wasm" target = "wasm32-wasip1" +exclude = ["shared/test1.wave", "shared/test2.wave", "shared/test3.wave", "shared/test4.wave", "shared/test5.wave", "shared/test6.wave", "shared/test7.wave", "shared/test8.wave", "shared/test9.wave", "shared/test10.wave"] [[target]] id = "wasm64-unknown" @@ -180,3 +182,4 @@ executor = "wasm" runner = "ubuntu-24.04" ci_group = "wasm" target = "wasm64-unknown-unknown" +exclude = ["shared/test1.wave", "shared/test2.wave", "shared/test3.wave", "shared/test4.wave", "shared/test5.wave", "shared/test6.wave", "shared/test7.wave", "shared/test8.wave", "shared/test9.wave", "shared/test10.wave"] From 32e6c5e6c79fd1903f409462e75ada6d135e43b8 Mon Sep 17 00:00:00 2001 From: LunaStev Date: Tue, 29 Sep 2026 22:06:25 +0900 Subject: [PATCH 3/3] test(tools): cover wasm shared runtime exclusions Signed-off-by: LunaStev --- tools/test_case_manifest.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tools/test_case_manifest.py b/tools/test_case_manifest.py index 1f0e9b4a..4ff95008 100644 --- a/tools/test_case_manifest.py +++ b/tools/test_case_manifest.py @@ -269,6 +269,40 @@ def test_runtime_sources_include_eligible_generic_shared_cases(self): self.assertEqual(sources, included) self.assertEqual(len(sources), len(set(sources))) + def test_runtime_sources_respect_wasm_shared_exclusions(self): + eligible = "fun main() {}\n" + with tempfile.TemporaryDirectory() as temporary: + root = Path(temporary) + for relative in ( + "shared/test1.wave", + "shared/wasm32/test1.wave", + "wasm/wasm32/test1.wave", + ): + path = root / relative + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(eligible, encoding="utf-8") + + target = CaseTarget( + id="wasm-unknown", + os="wasm", + arch="wasm32", + suite="wasm/wasm32", + status="supported", + enabled=True, + ci=True, + executor="wasm", + suites=("shared", "shared/wasm32", "wasm/wasm32"), + exclude=("shared/test1.wave",), + ) + manifest = CaseManifest(version=2, targets=(target,)) + with patch.object(case_manifest, "CASES_ROOT", root): + sources = manifest.runtime_sources("wasm-unknown") + + self.assertEqual( + sources, + ("shared/wasm32/test1.wave", "wasm/wasm32/test1.wave"), + ) + def test_invalid_utf8_manifest_reports_path_in_case_manifest_error(self): with tempfile.TemporaryDirectory() as temporary: manifest = Path(temporary) / "cases.toml"