Guard bad fixture staging paths

This commit is contained in:
2026-06-13 07:48:34 +08:00
parent 38246aa659
commit b2b3735de1
3 changed files with 51 additions and 0 deletions

View File

@@ -497,3 +497,41 @@ wasm-port/tests/host/verify_host_smokes.sh
目录,按现有 `badInterpFixtures` fixed list 补 staged path 对账;只校验文件清单 目录,按现有 `badInterpFixtures` fixed list 补 staged path 对账;只校验文件清单
和 staging 路径,不改变 expected-error 语义。也可以继续找短小单文件 case但仍需 和 staging 路径,不改变 expected-error 语义。也可以继续找短小单文件 case但仍需
保持每批 2 到 3 个或自然成组,不推进 blocked runtime promotion。 保持每批 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 语义实现。

View File

@@ -6995,8 +6995,10 @@
if (badInterpFixtures.length !== 21 || new Set(badInterpFixtures.map((fixture) => fixture.file)).size !== badInterpFixtures.length) { if (badInterpFixtures.length !== 21 || new Set(badInterpFixtures.map((fixture) => fixture.file)).size !== badInterpFixtures.length) {
throw new Error("browser_interp_bad_fixture_coverage: list drift"); throw new Error("browser_interp_bad_fixture_coverage: list drift");
} }
const badStagedNgcFiles = [];
for (const badFixture of badInterpFixtures) { for (const badFixture of badInterpFixtures) {
const badPath = await writeInterpRegressionFile(interp, "bad", badFixture.file); const badPath = await writeInterpRegressionFile(interp, "bad", badFixture.file);
badStagedNgcFiles.push(badPath);
verifyExpectedOutput( verifyExpectedOutput(
`browser_interp_bad_${badFixture.name}`, `browser_interp_bad_${badFixture.name}`,
interp.runFile(badPath), interp.runFile(badPath),
@@ -7010,6 +7012,10 @@
].join("\n"), ].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_1Path = await writeInterpRegressionFile(interp, "g33.1", "g33.1.ngc");
const g33_1NgcFiles = [ const g33_1NgcFiles = [

View File

@@ -1930,8 +1930,10 @@ assert.deepEqual(
interpRegressionNgcFiles("bad"), interpRegressionNgcFiles("bad"),
"interp bad fixture coverage drift", "interp bad fixture coverage drift",
); );
const badStagedNgcFiles = [];
for (const badFixture of badInterpFixtures) { for (const badFixture of badInterpFixtures) {
const badPath = writeInterpRegressionFile("bad", badFixture.file); const badPath = writeInterpRegressionFile("bad", badFixture.file);
badStagedNgcFiles.push(badPath);
verifyExpectedOutput( verifyExpectedOutput(
`interp_bad_${badFixture.name}_wasm`, `interp_bad_${badFixture.name}_wasm`,
interp.runFile(badPath), interp.runFile(badPath),
@@ -1945,6 +1947,11 @@ for (const badFixture of badInterpFixtures) {
].join("\n"), ].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_1Path = writeInterpRegressionFile("g33.1", "g33.1.ngc");
const g33_1NgcFiles = [ const g33_1NgcFiles = [