Guard oword-unwind staging manifest

This commit is contained in:
2026-06-12 23:21:49 +08:00
parent 62a5a70ac3
commit 3555b47c91
3 changed files with 89 additions and 0 deletions

View File

@@ -6577,3 +6577,59 @@ wasm-port/tests/native/verify_native_probes.sh
2. 或暂停新增 coverage保持当前 native/Node/browser gate 绿色; 2. 或暂停新增 coverage保持当前 native/Node/browser gate 绿色;
3. 若 `verify_nc_files.sh` 再次出现 `comp-g1.ngc` unexpected failure再单独调查 3. 若 `verify_nc_files.sh` 再次出现 `comp-g1.ngc` unexpected failure再单独调查
tool-table staging/build cache 顺序,而不是改 expected baseline。 tool-table staging/build cache 顺序,而不是改 expected baseline。
六十九、2026-06-12 继续执行记录oword-unwind staging manifest guard
本轮继续当前 host 可执行路线,选择已有 INI-context 覆盖的
`tests/interp/oword-unwind` 做小范围 staging manifest guard。不新增 runtime 面,
不执行任何 `ENABLE_*_RUNTIME_PROBE=1` opt-in native probe。
1. 覆盖对账。
`tests/interp/oword-unwind` 当前 upstream `.ngc` 文件:
```text
fail.ngc
test.ngc
```
该 family 已通过 `stageInterpIniContext("oword-unwind")` 在 Node/browser 中执行
覆盖,并依赖 `[RS274NGC]SUBROUTINE_PATH=.` staging `fail.ngc`。
2. 更新。
更新:
- `wasm-port/tests/wasm/node/verify_interp_wasm.mjs`
- `wasm-port/tests/browser/interp_smoke.html`
Node 新增:
- `owordUnwindNgcFiles` 固定 `fail.ngc` 和 `test.ngc`
- 与 `interpRegressionNgcFilesRecursive("oword-unwind")` 精确对账;
- 检查 `stageInterpIniContext()` 返回的 `plan.files` 中 `.ngc` 文件集合与该
fixed list 一致。
Browser 新增:
- fixed-count 和 duplicate-free guard
- 检查 browser `stageInterpIniContext()` 返回的 `plan.files` 中 `.ngc` 文件集合
与 fixed list 一致;
- browser 仍不枚举目录。
3. 下一步工作建议。
先复跑:
```bash
git diff --check
wasm-port/tests/wasm/node/verify_interp_wasm.sh
wasm-port/tests/browser/verify_interp_browser.sh
wasm-port/tests/host/verify_host_smokes.sh
```
如果通过,做小提交,建议 message
```text
Guard oword-unwind staging manifest
```

View File

@@ -7344,6 +7344,21 @@
); );
const owordUnwindPlan = await stageInterpIniContext(interp, "oword-unwind"); const owordUnwindPlan = await stageInterpIniContext(interp, "oword-unwind");
const owordUnwindNgcFiles = [
"fail.ngc",
"test.ngc",
];
if (owordUnwindNgcFiles.length !== 2 || new Set(owordUnwindNgcFiles).size !== owordUnwindNgcFiles.length) {
throw new Error("browser_interp_oword_unwind_fixture_coverage: list drift");
}
const owordUnwindStagedNgcFiles = owordUnwindPlan.files
.map((file) => file.sourceRel)
.filter((sourceRel) => sourceRel.endsWith(".ngc"))
.map((sourceRel) => sourceRel.replace("tests/interp/oword-unwind/", ""))
.sort();
if (owordUnwindStagedNgcFiles.join(",") !== owordUnwindNgcFiles.join(",")) {
throw new Error("browser_interp_oword_unwind_staging_manifest: list drift");
}
verifyExpectedOutput( verifyExpectedOutput(
"browser_interp_oword_unwind", "browser_interp_oword_unwind",
interp.runFileWithIniContinueOnError( interp.runFileWithIniContinueOnError(

View File

@@ -2242,6 +2242,24 @@ verifyExpectedOutput(
); );
const owordUnwindPlan = stageInterpIniContext("oword-unwind"); const owordUnwindPlan = stageInterpIniContext("oword-unwind");
const owordUnwindNgcFiles = [
"fail.ngc",
"test.ngc",
];
assert.deepEqual(
owordUnwindNgcFiles,
interpRegressionNgcFilesRecursive("oword-unwind"),
"interp oword-unwind fixture coverage drift",
);
assert.deepEqual(
owordUnwindPlan.files
.map((file) => file.sourceRel)
.filter((sourceRel) => sourceRel.endsWith(".ngc"))
.map((sourceRel) => sourceRel.replace("tests/interp/oword-unwind/", ""))
.sort(),
owordUnwindNgcFiles,
"interp oword-unwind staging manifest drift",
);
verifyExpectedOutput( verifyExpectedOutput(
"interp_oword_unwind_wasm", "interp_oword_unwind_wasm",
interp.runFileWithIniContinueOnError( interp.runFileWithIniContinueOnError(