From b2b3735de19693877f7c9c333d06b0678560bb5a Mon Sep 17 00:00:00 2001 From: wangdequan Date: Sat, 13 Jun 2026 07:48:34 +0800 Subject: [PATCH] Guard bad fixture staging paths --- text6.txt | 38 +++++++++++++++++++ wasm-port/tests/browser/interp_smoke.html | 6 +++ .../tests/wasm/node/verify_interp_wasm.mjs | 7 ++++ 3 files changed, 51 insertions(+) diff --git a/text6.txt b/text6.txt index 384d22d..690a95c 100644 --- a/text6.txt +++ b/text6.txt @@ -497,3 +497,41 @@ wasm-port/tests/host/verify_host_smokes.sh 目录,按现有 `badInterpFixtures` fixed list 补 staged path 对账;只校验文件清单 和 staging 路径,不改变 expected-error 语义。也可以继续找短小单文件 case,但仍需 保持每批 2 到 3 个或自然成组,不推进 blocked runtime promotion。 + +十三、2026-06-13 继续执行记录:bad expected-error staging path guard + +本批按“已有 fixed manifest 的 direct-file fixture staged path guard”推进,完成 +`bad` expected-error 目录 21 个已有 Node/browser coverage 的 `.ngc` fixture。 + +完成内容: + +- Node 侧复用既有 `badInterpFixtures` fixed manifest; +- Node 侧继续用 `interpRegressionNgcFiles("bad")` 与 upstream vendored fixture + 精确对账; +- Node 侧收集实际 staged path,并检查与 fixed manifest 一致; +- browser 侧复用既有 fixed-count 与 duplicate-free guard; +- browser 侧收集实际 staged path,去掉 `/work/browser-interp/bad/` 前缀后与 + fixed manifest 一致; +- 仅校验文件清单与 staging 路径,不改变 expected-error 语义; +- browser 仍不依赖目录枚举。 + +已运行验证: + +```bash +git diff --check +SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh +SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh +wasm-port/tools/verify_vendor_sync.sh +wasm-port/tools/verify_no_standalone_cnc_semantics.sh +SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh +wasm-port/tests/host/verify_host_smokes.sh +``` + +结果:全部通过。 + +下一步建议: + +继续找已有 Node/browser coverage 且可自然成组的 fixture。优先候选:`g76` 这种 +需要工具表/INI 的目录可按 `writeInterpRegressionFiles(...)` 现有 file list 做 staged +path 对账;或者继续挑选短小单文件 direct-file case。仍不要推进 blocked runtime +promotion、browser full inventory 扩面或任何 JS CNC 语义实现。 diff --git a/wasm-port/tests/browser/interp_smoke.html b/wasm-port/tests/browser/interp_smoke.html index 464d705..e29e4c8 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -6995,8 +6995,10 @@ if (badInterpFixtures.length !== 21 || new Set(badInterpFixtures.map((fixture) => fixture.file)).size !== badInterpFixtures.length) { throw new Error("browser_interp_bad_fixture_coverage: list drift"); } + const badStagedNgcFiles = []; for (const badFixture of badInterpFixtures) { const badPath = await writeInterpRegressionFile(interp, "bad", badFixture.file); + badStagedNgcFiles.push(badPath); verifyExpectedOutput( `browser_interp_bad_${badFixture.name}`, interp.runFile(badPath), @@ -7010,6 +7012,10 @@ ].join("\n"), ); } + const badStagedRelativeNgcFiles = badStagedNgcFiles.map((path) => path.replace("/work/browser-interp/bad/", "")); + if (badStagedRelativeNgcFiles.join(",") !== badInterpFixtures.map((fixture) => fixture.file).join(",")) { + throw new Error("browser_interp_bad_staging_manifest: list drift"); + } const g33_1Path = await writeInterpRegressionFile(interp, "g33.1", "g33.1.ngc"); const g33_1NgcFiles = [ diff --git a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs index 890eeef..ff277b7 100644 --- a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs +++ b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs @@ -1930,8 +1930,10 @@ assert.deepEqual( interpRegressionNgcFiles("bad"), "interp bad fixture coverage drift", ); +const badStagedNgcFiles = []; for (const badFixture of badInterpFixtures) { const badPath = writeInterpRegressionFile("bad", badFixture.file); + badStagedNgcFiles.push(badPath); verifyExpectedOutput( `interp_bad_${badFixture.name}_wasm`, interp.runFile(badPath), @@ -1945,6 +1947,11 @@ for (const badFixture of badInterpFixtures) { ].join("\n"), ); } +assert.deepEqual( + badStagedNgcFiles, + badInterpFixtures.map((fixture) => `/work/interp/bad/${fixture.file}`), + "interp bad staging manifest drift", +); const g33_1Path = writeInterpRegressionFile("g33.1", "g33.1.ngc"); const g33_1NgcFiles = [