From 03a994edcaa18cd0b6c8499f50338dcc2cd9e1e0 Mon Sep 17 00:00:00 2001 From: wangdequan Date: Sat, 13 Jun 2026 07:52:45 +0800 Subject: [PATCH] Guard g76 staging paths --- text6.txt | 43 +++++++++++++++++++ wasm-port/tests/browser/interp_smoke.html | 12 +++++- .../tests/wasm/node/verify_interp_wasm.mjs | 16 ++++++- 3 files changed, 68 insertions(+), 3 deletions(-) diff --git a/text6.txt b/text6.txt index 690a95c..1182616 100644 --- a/text6.txt +++ b/text6.txt @@ -535,3 +535,46 @@ wasm-port/tests/host/verify_host_smokes.sh 需要工具表/INI 的目录可按 `writeInterpRegressionFiles(...)` 现有 file list 做 staged path 对账;或者继续挑选短小单文件 direct-file case。仍不要推进 blocked runtime promotion、browser full inventory 扩面或任何 JS CNC 语义实现。 + +十四、2026-06-13 继续执行记录:g76 file-list staging path guard + +本批按“已有明确 file list 的 fixture staged path guard”推进,完成 `g76` 目录 +现有 Node/browser coverage 使用的 2 个 staged 文件: + +- `g76/g76only.ngc` +- `g76/test.tbl` + +完成内容: + +- Node 侧新增 `g76Files` fixed manifest; +- Node 侧用 `interpRegressionNgcFilesRecursive("g76")` 与 upstream vendored `.ngc` + fixture 精确对账; +- Node 侧检查 `writeInterpRegressionFiles(...)` 目标 staged path 与 fixed manifest + 一致; +- browser 侧增加 fixed-count 与 duplicate-free guard; +- browser 侧检查 staged path 去掉 `/work/browser-interp/g76/` 前缀后与 fixed + manifest 一致; +- 仅校验文件清单与 staging 路径,不改变工具表/INI 语义; +- 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 且 file list 明确的 fixture。优先候选: +`cam-nisley` 同样使用 `writeInterpRegressionFiles(...)` staging `cam.ngc` 与 +`test.tbl`,可按本批模式补 file-list guard;或者继续挑选短小单文件 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 e29e4c8..536d134 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -7269,10 +7269,18 @@ ); } - const g76Dir = await writeInterpRegressionFiles(interp, "g76", [ + const g76Files = [ "g76only.ngc", "test.tbl", - ]); + ]; + if (g76Files.length !== 2 || new Set(g76Files).size !== g76Files.length) { + throw new Error("browser_interp_g76_fixture_coverage: list drift"); + } + const g76Dir = await writeInterpRegressionFiles(interp, "g76", g76Files); + const g76StagedRelativeFiles = g76Files.map((file) => `${g76Dir}/${file}`.replace("/work/browser-interp/g76/", "")); + if (g76StagedRelativeFiles.join(",") !== g76Files.join(",")) { + throw new Error("browser_interp_g76_staging_manifest: list drift"); + } interp.writeTextFile( `${g76Dir}/test.ini`, [ diff --git a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs index ff277b7..5e356ae 100644 --- a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs +++ b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs @@ -2220,7 +2220,21 @@ for (const g71Fixture of g71Fixtures) { ); } -const g76Dir = writeInterpRegressionFiles("g76", ["g76only.ngc", "test.tbl"]); +const g76Files = [ + "g76only.ngc", + "test.tbl", +]; +assert.deepEqual( + g76Files.filter((file) => file.endsWith(".ngc")), + interpRegressionNgcFilesRecursive("g76"), + "interp g76 fixture coverage drift", +); +const g76Dir = writeInterpRegressionFiles("g76", g76Files); +assert.deepEqual( + g76Files.map((file) => `${g76Dir}/${file}`), + g76Files.map((file) => `/work/interp/g76/${file}`), + "interp g76 staging manifest drift", +); interp.writeTextFile( `${g76Dir}/test.ini`, [