Guard INI subroutine staging manifests
This commit is contained in:
69
text5.txt
69
text5.txt
@@ -6452,3 +6452,72 @@ Guard g10 interpreter fixture coverage
|
||||
```
|
||||
|
||||
提交后再复跑同一组 gate。
|
||||
|
||||
六十七、2026-06-12 继续执行记录:INI subroutine staging manifest guard
|
||||
|
||||
本轮继续沿当前 host 可执行路线推进。提交后守门已通过:
|
||||
|
||||
```text
|
||||
vendor sync up to date
|
||||
standalone CNC semantics guard complete
|
||||
```
|
||||
|
||||
当前 host 仍缺 `halcmd`、`halrun`、`linuxcnc`、`milltask`,因此不执行任何
|
||||
`ENABLE_*_RUNTIME_PROBE=1` opt-in native probe。
|
||||
|
||||
1. 候选选择。
|
||||
|
||||
选择已有 Node/browser 执行覆盖、且依赖 `[RS274NGC]SUBROUTINE_PATH` staging 的
|
||||
两个 pure interpreter family:
|
||||
|
||||
- `tests/interp/sub-call-from-sub`
|
||||
- `tests/interp/nested-sub-in-file-error`
|
||||
|
||||
这两个 family 不需要 HAL/task/tool DB/user-M process,只需要确认 staging helper
|
||||
不会遗漏 INI subroutine 文件。
|
||||
|
||||
2. 更新。
|
||||
|
||||
更新:
|
||||
|
||||
- `wasm-port/tests/wasm/node/verify_interp_wasm.mjs`
|
||||
- `wasm-port/tests/browser/interp_smoke.html`
|
||||
|
||||
Node 新增:
|
||||
|
||||
- `subCallFromSubNgcFiles` 固定:
|
||||
- `test.ngc`
|
||||
- `subs/caller.ngc`
|
||||
- `subs/helper.ngc`
|
||||
- `nestedSubInFileErrorNgcFiles` 固定:
|
||||
- `test.ngc`
|
||||
- `subs/sequential.ngc`
|
||||
- Node 对上述列表分别与
|
||||
`interpRegressionNgcFilesRecursive("sub-call-from-sub")` 和
|
||||
`interpRegressionNgcFilesRecursive("nested-sub-in-file-error")` 精确对账;
|
||||
- Node 还检查 `stageInterpIniContext()` 返回的 `plan.files` 中 `.ngc` 文件集合
|
||||
与上述列表一致。
|
||||
|
||||
Browser 新增:
|
||||
|
||||
- 对上述两个 fixed list 做 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 INI subroutine staging manifests
|
||||
```
|
||||
|
||||
@@ -7239,6 +7239,22 @@
|
||||
);
|
||||
|
||||
const subCallFromSubPlan = await stageInterpIniContext(interp, "sub-call-from-sub");
|
||||
const subCallFromSubNgcFiles = [
|
||||
"subs/caller.ngc",
|
||||
"subs/helper.ngc",
|
||||
"test.ngc",
|
||||
];
|
||||
if (subCallFromSubNgcFiles.length !== 3 || new Set(subCallFromSubNgcFiles).size !== subCallFromSubNgcFiles.length) {
|
||||
throw new Error("browser_interp_sub_call_from_sub_fixture_coverage: list drift");
|
||||
}
|
||||
const subCallFromSubStagedNgcFiles = subCallFromSubPlan.files
|
||||
.map((file) => file.sourceRel)
|
||||
.filter((sourceRel) => sourceRel.endsWith(".ngc"))
|
||||
.map((sourceRel) => sourceRel.replace("tests/interp/sub-call-from-sub/", ""))
|
||||
.sort();
|
||||
if (subCallFromSubStagedNgcFiles.join(",") !== subCallFromSubNgcFiles.join(",")) {
|
||||
throw new Error("browser_interp_sub_call_from_sub_staging_manifest: list drift");
|
||||
}
|
||||
verifyExpectedOutput(
|
||||
"browser_interp_sub_call_from_sub",
|
||||
interp.runFileWithIni(
|
||||
@@ -7294,6 +7310,21 @@
|
||||
interp,
|
||||
"nested-sub-in-file-error",
|
||||
);
|
||||
const nestedSubInFileErrorNgcFiles = [
|
||||
"subs/sequential.ngc",
|
||||
"test.ngc",
|
||||
];
|
||||
if (nestedSubInFileErrorNgcFiles.length !== 2 || new Set(nestedSubInFileErrorNgcFiles).size !== nestedSubInFileErrorNgcFiles.length) {
|
||||
throw new Error("browser_interp_nested_sub_in_file_error_fixture_coverage: list drift");
|
||||
}
|
||||
const nestedSubInFileErrorStagedNgcFiles = nestedSubInFileErrorPlan.files
|
||||
.map((file) => file.sourceRel)
|
||||
.filter((sourceRel) => sourceRel.endsWith(".ngc"))
|
||||
.map((sourceRel) => sourceRel.replace("tests/interp/nested-sub-in-file-error/", ""))
|
||||
.sort();
|
||||
if (nestedSubInFileErrorStagedNgcFiles.join(",") !== nestedSubInFileErrorNgcFiles.join(",")) {
|
||||
throw new Error("browser_interp_nested_sub_in_file_error_staging_manifest: list drift");
|
||||
}
|
||||
verifyExpectedOutput(
|
||||
"browser_interp_nested_sub_in_file_error",
|
||||
interp.runFileWithIni(
|
||||
|
||||
@@ -2134,6 +2134,25 @@ verifyExpectedOutput(
|
||||
);
|
||||
|
||||
const subCallFromSubPlan = stageInterpIniContext("sub-call-from-sub");
|
||||
const subCallFromSubNgcFiles = [
|
||||
"subs/caller.ngc",
|
||||
"subs/helper.ngc",
|
||||
"test.ngc",
|
||||
];
|
||||
assert.deepEqual(
|
||||
subCallFromSubNgcFiles,
|
||||
interpRegressionNgcFilesRecursive("sub-call-from-sub"),
|
||||
"interp sub-call-from-sub fixture coverage drift",
|
||||
);
|
||||
assert.deepEqual(
|
||||
subCallFromSubPlan.files
|
||||
.map((file) => file.sourceRel)
|
||||
.filter((sourceRel) => sourceRel.endsWith(".ngc"))
|
||||
.map((sourceRel) => sourceRel.replace("tests/interp/sub-call-from-sub/", ""))
|
||||
.sort(),
|
||||
subCallFromSubNgcFiles,
|
||||
"interp sub-call-from-sub staging manifest drift",
|
||||
);
|
||||
verifyExpectedOutput(
|
||||
"interp_sub_call_from_sub_wasm",
|
||||
interp.runFileWithIni(
|
||||
@@ -2186,6 +2205,24 @@ verifyExpectedOutput(
|
||||
);
|
||||
|
||||
const nestedSubInFileErrorPlan = stageInterpIniContext("nested-sub-in-file-error");
|
||||
const nestedSubInFileErrorNgcFiles = [
|
||||
"subs/sequential.ngc",
|
||||
"test.ngc",
|
||||
];
|
||||
assert.deepEqual(
|
||||
nestedSubInFileErrorNgcFiles,
|
||||
interpRegressionNgcFilesRecursive("nested-sub-in-file-error"),
|
||||
"interp nested-sub-in-file-error fixture coverage drift",
|
||||
);
|
||||
assert.deepEqual(
|
||||
nestedSubInFileErrorPlan.files
|
||||
.map((file) => file.sourceRel)
|
||||
.filter((sourceRel) => sourceRel.endsWith(".ngc"))
|
||||
.map((sourceRel) => sourceRel.replace("tests/interp/nested-sub-in-file-error/", ""))
|
||||
.sort(),
|
||||
nestedSubInFileErrorNgcFiles,
|
||||
"interp nested-sub-in-file-error staging manifest drift",
|
||||
);
|
||||
verifyExpectedOutput(
|
||||
"interp_nested_sub_in_file_error_wasm",
|
||||
interp.runFileWithIni(
|
||||
|
||||
Reference in New Issue
Block a user