From 38246aa659601c3328e56fd67c7e67d928ada347 Mon Sep 17 00:00:00 2001 From: wangdequan Date: Sat, 13 Jun 2026 07:44:42 +0800 Subject: [PATCH] Guard g71 staging paths --- text6.txt | 42 +++++++++++++++++++ wasm-port/tests/browser/interp_smoke.html | 12 +++++- .../tests/wasm/node/verify_interp_wasm.mjs | 15 ++++++- 3 files changed, 65 insertions(+), 4 deletions(-) diff --git a/text6.txt b/text6.txt index 17fe3e4..384d22d 100644 --- a/text6.txt +++ b/text6.txt @@ -455,3 +455,45 @@ wasm-port/tests/host/verify_host_smokes.sh 补 staged path guard;或者处理 `bad` expected-error 目录,只做 fixed list 与 staged path 对账,不改变 expected-error 语义。继续避免 blocked runtime promotion、 browser full inventory 扩面和 JS CNC 语义实现。 + +十二、2026-06-13 继续执行记录:g71 staging path guard + +本批按“自然成组 direct-file fixture staged path guard”推进,完成 `g71` loop 组 +4 个已有 Node/browser coverage 的 `.ngc` fixture: + +- `g71-endless-loop/g71-endless-loop.ngc` +- `g71-endless-loop2/g71-endless-loop2.ngc` +- `g71-endless-loop_2/g71-endless-loop_2.ngc` +- `g71-with-g70/g71-with-g70.ngc` + +完成内容: + +- Node 侧将 `g71` inline loop 提成 `g71Fixtures` fixed manifest; +- Node 侧用 `interpRegressionNgcFilesRecursive(...)` 分别与 upstream vendored + fixture 目录精确对账; +- Node 侧检查 staged path 与 fixed manifest 一致; +- browser 侧增加 fixed-count 与 duplicate-free guard; +- browser 侧检查 staged path 去掉 `/work/browser-interp/` 前缀后与 + `dir/file` fixed manifest 一致; +- 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 +``` + +结果:全部通过。 + +下一步建议: + +继续处理已有 fixed manifest 的 direct-file fixtures。优先候选:`bad` expected-error +目录,按现有 `badInterpFixtures` fixed list 补 staged path 对账;只校验文件清单 +和 staging 路径,不改变 expected-error 语义。也可以继续找短小单文件 case,但仍需 +保持每批 2 到 3 个或自然成组,不推进 blocked runtime promotion。 diff --git a/wasm-port/tests/browser/interp_smoke.html b/wasm-port/tests/browser/interp_smoke.html index 5583a02..464d705 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -7185,7 +7185,7 @@ ); } - for (const g71Fixture of [ + const g71Fixtures = [ { name: "endless_loop", dir: "g71-endless-loop", @@ -7237,8 +7237,16 @@ "canon_event=STRAIGHT_FEED line=-1 x=15 y=0 z=-38.1", ], }, - ]) { + ]; + if (g71Fixtures.length !== 4 || new Set(g71Fixtures.map((fixture) => `${fixture.dir}/${fixture.file}`)).size !== g71Fixtures.length) { + throw new Error("browser_interp_g71_fixture_coverage: list drift"); + } + for (const g71Fixture of g71Fixtures) { const g71Path = await writeInterpRegressionFile(interp, g71Fixture.dir, g71Fixture.file); + const g71StagedRelativeNgcFile = g71Path.replace("/work/browser-interp/", ""); + if (g71StagedRelativeNgcFile !== `${g71Fixture.dir}/${g71Fixture.file}`) { + throw new Error(`browser_interp_g71_${g71Fixture.name}_staging_manifest: list drift`); + } verifyExpectedOutput( `browser_interp_g71_${g71Fixture.name}`, interp.runFile(g71Path), diff --git a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs index 657f12e..890eeef 100644 --- a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs +++ b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs @@ -2132,7 +2132,7 @@ for (const g72Fixture of g72Fixtures) { ); } -for (const g71Fixture of [ +const g71Fixtures = [ { name: "endless_loop", dir: "g71-endless-loop", @@ -2184,8 +2184,19 @@ for (const g71Fixture of [ "canon_event=STRAIGHT_FEED line=-1 x=15 y=0 z=-38.1", ], }, -]) { +]; +for (const g71Fixture of g71Fixtures) { + assert.deepEqual( + [g71Fixture.file], + interpRegressionNgcFilesRecursive(g71Fixture.dir), + `interp ${g71Fixture.dir} fixture coverage drift`, + ); const g71Path = writeInterpRegressionFile(g71Fixture.dir, g71Fixture.file); + assert.deepEqual( + [g71Path], + [`/work/interp/${g71Fixture.dir}/${g71Fixture.file}`], + `interp ${g71Fixture.dir} staging manifest drift`, + ); verifyExpectedOutput( `interp_g71_${g71Fixture.name}_wasm`, interp.runFile(g71Path),