Guard more interp staging paths

This commit is contained in:
2026-06-13 07:30:30 +08:00
parent c97f85237f
commit 5f3e9757fe
3 changed files with 122 additions and 0 deletions

View File

@@ -286,3 +286,44 @@ wasm-port/tests/host/verify_host_smokes.sh
coverage、且不依赖 HAL/task/tool DB/Python remap/user-M process 的 interp fixture 中, coverage、且不依赖 HAL/task/tool DB/Python remap/user-M process 的 interp fixture 中,
再选择 2 到 3 个只需要 host/filesystem staging 对账的 case。不要推进 blocked runtime 再选择 2 到 3 个只需要 host/filesystem staging 对账的 case。不要推进 blocked runtime
promotion也不要扩展 browser full 159 sim-config inventory。 promotion也不要扩展 browser full 159 sim-config inventory。
八、2026-06-13 继续执行记录flowsnake/inside-corners staging path guard
本批继续按“小批量 direct-file fixture staged path guard”推进完成 3 个已有
Node/browser coverage 的 interp fixture
- `flowsnake/flowsnake.ngc`
- `inside-corners/test.ngc`
- `inverse-time-with-comp/inverse.ngc`
完成内容:
- Node 侧为上述 3 个 fixture 增加 fixed `.ngc` manifest
- Node 侧用 `interpRegressionNgcFilesRecursive(...)` 与 upstream vendored fixture
精确对账;
- Node 侧检查 staged path 与 fixed manifest 一致;
- browser 侧增加 fixed-count 与 duplicate-free guard
- browser 侧检查 staged path 去掉 `/work/browser-interp/.../` 前缀后与 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
```
结果:全部通过。
下一步建议:
继续沿 interp direct-file coverage 向后补 guard但优先选择短小、单文件、
无 INI/工具表依赖的 case。下一批可考虑 `g33.1/g33.1.ngc`、`g6164/test.ngc`
再搭配一个已明确 expected-error 或 direct-file loop case如果 case 属于目录集合
或带参数化循环,先检查是否已有固定 manifest 风格,避免扩大执行面。

View File

@@ -6638,6 +6638,18 @@
"flowsnake", "flowsnake",
"flowsnake.ngc", "flowsnake.ngc",
); );
const flowsnakeNgcFiles = [
"flowsnake.ngc",
];
if (flowsnakeNgcFiles.length !== 1 || new Set(flowsnakeNgcFiles).size !== flowsnakeNgcFiles.length) {
throw new Error("browser_interp_flowsnake_fixture_coverage: list drift");
}
const flowsnakeStagedNgcFiles = [
flowsnakePath,
].map((path) => path.replace("/work/browser-interp/flowsnake/", ""));
if (flowsnakeStagedNgcFiles.join(",") !== flowsnakeNgcFiles.join(",")) {
throw new Error("browser_interp_flowsnake_staging_manifest: list drift");
}
verifyExpectedOutput( verifyExpectedOutput(
"browser_interp_flowsnake", "browser_interp_flowsnake",
interp.runFile(flowsnakePath), interp.runFile(flowsnakePath),
@@ -6664,6 +6676,18 @@
"inside-corners", "inside-corners",
"test.ngc", "test.ngc",
); );
const insideCornersNgcFiles = [
"test.ngc",
];
if (insideCornersNgcFiles.length !== 1 || new Set(insideCornersNgcFiles).size !== insideCornersNgcFiles.length) {
throw new Error("browser_interp_inside_corners_fixture_coverage: list drift");
}
const insideCornersStagedNgcFiles = [
insideCornersPath,
].map((path) => path.replace("/work/browser-interp/inside-corners/", ""));
if (insideCornersStagedNgcFiles.join(",") !== insideCornersNgcFiles.join(",")) {
throw new Error("browser_interp_inside_corners_staging_manifest: list drift");
}
verifyExpectedOutput( verifyExpectedOutput(
"browser_interp_inside_corners", "browser_interp_inside_corners",
interp.runFile(insideCornersPath), interp.runFile(insideCornersPath),
@@ -6691,6 +6715,18 @@
"inverse-time-with-comp", "inverse-time-with-comp",
"inverse.ngc", "inverse.ngc",
); );
const inverseTimeWithCompNgcFiles = [
"inverse.ngc",
];
if (inverseTimeWithCompNgcFiles.length !== 1 || new Set(inverseTimeWithCompNgcFiles).size !== inverseTimeWithCompNgcFiles.length) {
throw new Error("browser_interp_inverse_time_with_comp_fixture_coverage: list drift");
}
const inverseTimeWithCompStagedNgcFiles = [
inverseTimeWithCompPath,
].map((path) => path.replace("/work/browser-interp/inverse-time-with-comp/", ""));
if (inverseTimeWithCompStagedNgcFiles.join(",") !== inverseTimeWithCompNgcFiles.join(",")) {
throw new Error("browser_interp_inverse_time_with_comp_staging_manifest: list drift");
}
verifyExpectedOutput( verifyExpectedOutput(
"browser_interp_inverse_time_with_comp", "browser_interp_inverse_time_with_comp",
interp.runFile(inverseTimeWithCompPath), interp.runFile(inverseTimeWithCompPath),

View File

@@ -1579,6 +1579,21 @@ verifyExpectedOutput(
); );
const flowsnakePath = writeInterpRegressionFile("flowsnake", "flowsnake.ngc"); const flowsnakePath = writeInterpRegressionFile("flowsnake", "flowsnake.ngc");
const flowsnakeNgcFiles = [
"flowsnake.ngc",
];
assert.deepEqual(
flowsnakeNgcFiles,
interpRegressionNgcFilesRecursive("flowsnake"),
"interp flowsnake fixture coverage drift",
);
assert.deepEqual(
[
flowsnakePath,
],
flowsnakeNgcFiles.map((file) => `/work/interp/flowsnake/${file}`),
"interp flowsnake staging manifest drift",
);
verifyExpectedOutput( verifyExpectedOutput(
"interp_flowsnake_wasm", "interp_flowsnake_wasm",
interp.runFile(flowsnakePath), interp.runFile(flowsnakePath),
@@ -1601,6 +1616,21 @@ verifyExpectedOutput(
); );
const insideCornersPath = writeInterpRegressionFile("inside-corners", "test.ngc"); const insideCornersPath = writeInterpRegressionFile("inside-corners", "test.ngc");
const insideCornersNgcFiles = [
"test.ngc",
];
assert.deepEqual(
insideCornersNgcFiles,
interpRegressionNgcFilesRecursive("inside-corners"),
"interp inside-corners fixture coverage drift",
);
assert.deepEqual(
[
insideCornersPath,
],
insideCornersNgcFiles.map((file) => `/work/interp/inside-corners/${file}`),
"interp inside-corners staging manifest drift",
);
verifyExpectedOutput( verifyExpectedOutput(
"interp_inside_corners_wasm", "interp_inside_corners_wasm",
interp.runFile(insideCornersPath), interp.runFile(insideCornersPath),
@@ -1627,6 +1657,21 @@ const inverseTimeWithCompPath = writeInterpRegressionFile(
"inverse-time-with-comp", "inverse-time-with-comp",
"inverse.ngc", "inverse.ngc",
); );
const inverseTimeWithCompNgcFiles = [
"inverse.ngc",
];
assert.deepEqual(
inverseTimeWithCompNgcFiles,
interpRegressionNgcFilesRecursive("inverse-time-with-comp"),
"interp inverse-time-with-comp fixture coverage drift",
);
assert.deepEqual(
[
inverseTimeWithCompPath,
],
inverseTimeWithCompNgcFiles.map((file) => `/work/interp/inverse-time-with-comp/${file}`),
"interp inverse-time-with-comp staging manifest drift",
);
verifyExpectedOutput( verifyExpectedOutput(
"interp_inverse_time_with_comp_wasm", "interp_inverse_time_with_comp_wasm",
interp.runFile(inverseTimeWithCompPath), interp.runFile(inverseTimeWithCompPath),