Guard final interp per-file staging paths

This commit is contained in:
2026-06-13 12:49:17 +08:00
parent 6f95135093
commit 08e10c7b5a
3 changed files with 69 additions and 27 deletions

View File

@@ -1809,3 +1809,57 @@ wasm-port/tests/host/verify_host_smokes.sh
fixed manifest 和 Node/browser coverage适合直接切换到 per-file helper。其后再按
小批量处理 `do-while-break`、`cam-nisley`、`g76`。继续避免 blocked runtime promotion、
browser full inventory 扩面和 JS CNC 语义实现。
四十二、2026-06-13 继续执行记录final interp directory per-file staging guard
本批继续收敛剩余 ordinary interp directory aggregate staging guard
- `m98m99/13-named-program`
- `do-while-break`
- `cam-nisley`
- `g76`
完成内容:
- Node 侧将 `m98m99/13-named-program` 从 `assertInterpRegressionStaging(...)`
切换为 `assertInterpRegressionFilesCoverage(...)` 加
`assertInterpRegressionFilesStaging(...)`
- Node 侧同步将 `do-while-break`、`cam-nisley`、`g76` 切换到 coverage helper 加
per-file staging helper
- browser 侧将上述 4 组切换为 `assertInterpRegressionFilesStaging(...)`
- 删除 Node/browser 侧已无调用的 ordinary `assertInterpRegressionStaging(...)`
aggregate helper
- `cam-nisley` 和 `g76` 运行时生成的 `test.ini` 仍保持测试内生成,不纳入 vendored
staged manifest
- browser 侧仍不枚举目录;
- 仅整理 host/filesystem staging guard不改变 do-while、CAM、G76 threading、
named-program 或 interpreter 语义。
已运行验证:
```bash
git diff --check
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_interp_wasm.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/host/verify_host_smokes.sh
```
结果:全部通过。
下一步建议:
ordinary interp directory aggregate guard 已清空。下一批建议继续按专用域收敛 staged
path helper优先候选
- ccomp 专用 helper`lathe-comp`、`mill-g90g91g92`、`mill-line-arc-entry`、
`mill-zchanges`
- g10 专用 helper`g10-l1-l10`、`g10-l11`、`g10-l2-while-active`、
`g10-l20-while-active`、`g10-with-g92`
- remap 专用 helper保留 expected-unstaged 语义,需单独小心处理
建议下一批先处理 ccomp 4 组,因为 file manifest 固定为 `test.ngc`、`test.tbl`
且 Node/browser coverage 已成型。继续避免 blocked runtime promotion、browser full
inventory 扩面和 JS CNC 语义实现。

View File

@@ -4705,16 +4705,6 @@
return wasmDir;
}
function assertInterpRegressionStaging(name, files, wasmDir) {
if (files.length === 0 || new Set(files).size !== files.length) {
throw new Error(`browser_interp_${name}_fixture_coverage: list drift`);
}
const interpStagedRelativeFiles = files.map((file) => `${wasmDir}/${file}`.replace(`/work/browser-interp/${name}/`, ""));
if (interpStagedRelativeFiles.join(",") !== files.join(",")) {
throw new Error(`browser_interp_${name}_staging_manifest: list drift`);
}
}
async function writeCcompRegressionFiles(interp, name) {
const sourceDir = `../../vendor/linuxcnc/tests/ccomp/${name}`;
const wasmDir = `/work/browser-ccomp/${name}`;
@@ -6374,7 +6364,7 @@
"do-while-break",
doWhileBreakNgcFiles,
);
assertInterpRegressionStaging("do-while-break", doWhileBreakNgcFiles, doWhileBreakDir);
assertInterpRegressionFilesStaging("do-while-break", doWhileBreakNgcFiles, doWhileBreakDir);
const doWhileBreakPath = `${doWhileBreakDir}/test.ngc`;
verifyExpectedOutput(
"browser_interp_do_while_break",
@@ -6599,7 +6589,7 @@
"test.tbl",
];
const camNisleyDir = await writeInterpRegressionFiles(interp, "cam-nisley", camNisleyFiles);
assertInterpRegressionStaging("cam-nisley", camNisleyFiles, camNisleyDir);
assertInterpRegressionFilesStaging("cam-nisley", camNisleyFiles, camNisleyDir);
interp.writeTextFile(
`${camNisleyDir}/test.ini`,
[
@@ -7296,7 +7286,7 @@
"test.tbl",
];
const g76Dir = await writeInterpRegressionFiles(interp, "g76", g76Files);
assertInterpRegressionStaging("g76", g76Files, g76Dir);
assertInterpRegressionFilesStaging("g76", g76Files, g76Dir);
interp.writeTextFile(
`${g76Dir}/test.ini`,
[
@@ -8292,7 +8282,7 @@
"m98m99/13-named-program",
m98m99NamedProgramFiles,
);
assertInterpRegressionStaging(
assertInterpRegressionFilesStaging(
"m98m99/13-named-program",
m98m99NamedProgramFiles,
m98m99NamedProgramDir,

View File

@@ -323,15 +323,6 @@ function assertInterpRegressionFilesStaging(name, files, wasmDir) {
}
}
function assertInterpRegressionStaging(name, files, wasmDir) {
assertInterpRegressionFilesCoverage(name, files);
assert.deepEqual(
files.map((file) => `${wasmDir}/${file}`),
files.map((file) => `/work/interp/${name}/${file}`),
`interp ${name} staging manifest drift`,
);
}
function interpRegressionNgcFiles(name) {
const sourceDir = resolve(rootDir, "vendor/linuxcnc/tests/interp", name);
return readdirSync(sourceDir)
@@ -1365,7 +1356,8 @@ const doWhileBreakNgcFiles = [
"test.ngc",
];
const doWhileBreakDir = writeInterpRegressionFiles("do-while-break", doWhileBreakNgcFiles);
assertInterpRegressionStaging("do-while-break", doWhileBreakNgcFiles, doWhileBreakDir);
assertInterpRegressionFilesCoverage("do-while-break", doWhileBreakNgcFiles);
assertInterpRegressionFilesStaging("do-while-break", doWhileBreakNgcFiles, doWhileBreakDir);
const doWhileBreakPath = `${doWhileBreakDir}/test.ngc`;
verifyExpectedOutput(
"interp_do_while_break_wasm",
@@ -1583,7 +1575,8 @@ const camNisleyFiles = [
"test.tbl",
];
const camNisleyDir = writeInterpRegressionFiles("cam-nisley", camNisleyFiles);
assertInterpRegressionStaging("cam-nisley", camNisleyFiles, camNisleyDir);
assertInterpRegressionFilesCoverage("cam-nisley", camNisleyFiles);
assertInterpRegressionFilesStaging("cam-nisley", camNisleyFiles, camNisleyDir);
interp.writeTextFile(
`${camNisleyDir}/test.ini`,
[
@@ -2265,7 +2258,8 @@ const g76Files = [
"test.tbl",
];
const g76Dir = writeInterpRegressionFiles("g76", g76Files);
assertInterpRegressionStaging("g76", g76Files, g76Dir);
assertInterpRegressionFilesCoverage("g76", g76Files);
assertInterpRegressionFilesStaging("g76", g76Files, g76Dir);
interp.writeTextFile(
`${g76Dir}/test.ini`,
[
@@ -3247,7 +3241,11 @@ const m98m99NamedProgramDir = writeInterpRegressionFiles(
"m98m99/13-named-program",
m98m99NamedProgramFiles,
);
assertInterpRegressionStaging(
assertInterpRegressionFilesCoverage(
"m98m99/13-named-program",
m98m99NamedProgramFiles,
);
assertInterpRegressionFilesStaging(
"m98m99/13-named-program",
m98m99NamedProgramFiles,
m98m99NamedProgramDir,