Guard g10 per-file staging paths

This commit is contained in:
2026-06-13 12:57:47 +08:00
parent 5175444fe9
commit af5fc84519
3 changed files with 83 additions and 20 deletions

View File

@@ -1917,3 +1917,55 @@ wasm-port/tests/host/verify_host_smokes.sh
注意 `test.tbl` 存在时 `test.ini` 仍由 `writeG10RegressionFiles(...)` 运行时生成, 注意 `test.tbl` 存在时 `test.ini` 仍由 `writeG10RegressionFiles(...)` 运行时生成,
不要纳入 vendored staged manifest。继续避免 blocked runtime promotion、browser full 不要纳入 vendored staged manifest。继续避免 blocked runtime promotion、browser full
inventory 扩面和 JS CNC 语义实现。 inventory 扩面和 JS CNC 语义实现。
四十四、2026-06-13 继续执行记录g10 per-file staging helper guard
本批按第 43 批建议处理 g10 专用 staged path helper
- `g10-l1-l10`
- `g10-l11`
- `g10-l2-while-active`
- `g10-l20-while-active`
- `g10-with-g92`
完成内容:
- Node 侧将 `assertG10RegressionStaging(...)` 拆分为
`assertG10RegressionCoverage(...)` 和 `assertG10RegressionFilesStaging(...)`
- Node 侧保留 vendored `.ngc/.tbl` manifest coverage
- Node 侧将 5 个 g10 fixture 切换为 coverage helper 加 per-file staging helper
- browser 侧将 g10 helper 改为逐个文件检查
`/work/browser-interp/g10/<name>/<file>` staged path
- browser 侧同步替换 5 个 g10 fixture 调用;
- `test.tbl` 存在时,`test.ini` 仍由 `writeG10RegressionFiles(...)` 运行时生成,
不纳入 vendored staged manifest
- browser 侧仍不枚举目录;
- 仅整理 host/filesystem staging guard不改变 G10 coordinate/tool offset、G92、
generated INI 或 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
```
结果:全部通过。
下一步建议:
继续处理剩余 remap 专用 helper但必须保留 expected-unstaged 语义。优先小批量候选:
- `duplicate-o-word`
- `fail/args.0`
- `fail/args.1`
这些 remap fixture file list 较短、没有 expected-unstaged 额外清单,适合先将
`assertRemapRegressionStaging(...)` 拆成 coverage helper 与 per-file staging helper。
`nested-remaps-oword` 含 expected-unstaged 文件,应留到后续单独处理。继续避免
blocked runtime promotion、browser full inventory 扩面和 JS CNC 语义实现。

View File

@@ -4765,13 +4765,14 @@
return wasmDir; return wasmDir;
} }
function assertG10RegressionStaging(name, files, wasmDir) { function assertG10RegressionFilesStaging(name, files, wasmDir) {
if (files.length === 0 || new Set(files).size !== files.length) { if (files.length === 0 || new Set(files).size !== files.length) {
throw new Error(`browser_interp_g10_${name}_fixture_coverage: list drift`); throw new Error(`browser_interp_g10_${name}_fixture_coverage: list drift`);
} }
const g10StagedRelativeFiles = files.map((file) => `${wasmDir}/${file}`.replace(`/work/browser-interp/g10/${name}/`, "")); for (const file of files) {
if (g10StagedRelativeFiles.join(",") !== files.join(",")) { if (`${wasmDir}/${file}` !== `/work/browser-interp/g10/${name}/${file}`) {
throw new Error(`browser_interp_g10_${name}_staging_manifest: list drift`); throw new Error(`browser_interp_g10_${name}_${file}_staging_manifest: list drift`);
}
} }
} }
@@ -8364,7 +8365,7 @@
"test.ngc", "test.ngc",
"test.tbl", "test.tbl",
]); ]);
assertG10RegressionStaging("g10-l1-l10", ["test.ngc", "test.tbl"], g10L1L10Dir); assertG10RegressionFilesStaging("g10-l1-l10", ["test.ngc", "test.tbl"], g10L1L10Dir);
verifyExpectedOutput( verifyExpectedOutput(
"browser_interp_g10_l1_l10", "browser_interp_g10_l1_l10",
interp.runFileWithIni(`${g10L1L10Dir}/test.ngc`, `${g10L1L10Dir}/test.ini`), interp.runFileWithIni(`${g10L1L10Dir}/test.ngc`, `${g10L1L10Dir}/test.ini`),
@@ -8387,7 +8388,7 @@
"test.ngc", "test.ngc",
"test.tbl", "test.tbl",
]); ]);
assertG10RegressionStaging("g10-l11", ["test.ngc", "test.tbl"], g10L11Dir); assertG10RegressionFilesStaging("g10-l11", ["test.ngc", "test.tbl"], g10L11Dir);
verifyExpectedOutput( verifyExpectedOutput(
"browser_interp_g10_l11", "browser_interp_g10_l11",
interp.runFileWithIni(`${g10L11Dir}/test.ngc`, `${g10L11Dir}/test.ini`), interp.runFileWithIni(`${g10L11Dir}/test.ngc`, `${g10L11Dir}/test.ini`),
@@ -8409,7 +8410,7 @@
"g10-l2-while-active", "g10-l2-while-active",
["test.ngc"], ["test.ngc"],
); );
assertG10RegressionStaging("g10-l2-while-active", ["test.ngc"], g10L2WhileActiveDir); assertG10RegressionFilesStaging("g10-l2-while-active", ["test.ngc"], g10L2WhileActiveDir);
verifyExpectedOutput( verifyExpectedOutput(
"browser_interp_g10_l2_while_active", "browser_interp_g10_l2_while_active",
interp.runFile(`${g10L2WhileActiveDir}/test.ngc`), interp.runFile(`${g10L2WhileActiveDir}/test.ngc`),
@@ -8432,7 +8433,7 @@
"g10-l20-while-active", "g10-l20-while-active",
["test.ngc"], ["test.ngc"],
); );
assertG10RegressionStaging("g10-l20-while-active", ["test.ngc"], g10L20WhileActiveDir); assertG10RegressionFilesStaging("g10-l20-while-active", ["test.ngc"], g10L20WhileActiveDir);
verifyExpectedOutput( verifyExpectedOutput(
"browser_interp_g10_l20_while_active", "browser_interp_g10_l20_while_active",
interp.runFile(`${g10L20WhileActiveDir}/test.ngc`), interp.runFile(`${g10L20WhileActiveDir}/test.ngc`),
@@ -8453,7 +8454,7 @@
"test.ngc", "test.ngc",
"test.tbl", "test.tbl",
]); ]);
assertG10RegressionStaging("g10-with-g92", ["test.ngc", "test.tbl"], g10WithG92Dir); assertG10RegressionFilesStaging("g10-with-g92", ["test.ngc", "test.tbl"], g10WithG92Dir);
verifyExpectedOutput( verifyExpectedOutput(
"browser_interp_g10_with_g92", "browser_interp_g10_with_g92",
interp.runFileWithIni(`${g10WithG92Dir}/test.ngc`, `${g10WithG92Dir}/test.ini`), interp.runFileWithIni(`${g10WithG92Dir}/test.ngc`, `${g10WithG92Dir}/test.ini`),

View File

@@ -422,7 +422,7 @@ function writeG10RegressionFiles(name, files) {
return wasmDir; return wasmDir;
} }
function assertG10RegressionStaging(name, files, wasmDir) { function assertG10RegressionCoverage(name, files) {
const sourceDir = resolve(rootDir, "vendor/linuxcnc/tests/interp/g10", name); const sourceDir = resolve(rootDir, "vendor/linuxcnc/tests/interp/g10", name);
assert.deepEqual( assert.deepEqual(
readdirSync(sourceDir) readdirSync(sourceDir)
@@ -431,11 +431,16 @@ function assertG10RegressionStaging(name, files, wasmDir) {
[...files].sort(), [...files].sort(),
`interp g10 ${name} fixture coverage drift`, `interp g10 ${name} fixture coverage drift`,
); );
assert.deepEqual( }
files.map((file) => `${wasmDir}/${file}`),
files.map((file) => `/work/interp/g10/${name}/${file}`), function assertG10RegressionFilesStaging(name, files, wasmDir) {
`interp g10 ${name} staging manifest drift`, for (const file of files) {
assert.equal(
`${wasmDir}/${file}`,
`/work/interp/g10/${name}/${file}`,
`interp g10 ${name}/${file} staging manifest drift`,
); );
}
} }
function writeUserMCodeFixture(name, code) { function writeUserMCodeFixture(name, code) {
@@ -3333,7 +3338,8 @@ assert.deepEqual(
); );
const g10L1L10Dir = writeG10RegressionFiles("g10-l1-l10", ["test.ngc", "test.tbl"]); const g10L1L10Dir = writeG10RegressionFiles("g10-l1-l10", ["test.ngc", "test.tbl"]);
assertG10RegressionStaging("g10-l1-l10", ["test.ngc", "test.tbl"], g10L1L10Dir); assertG10RegressionCoverage("g10-l1-l10", ["test.ngc", "test.tbl"]);
assertG10RegressionFilesStaging("g10-l1-l10", ["test.ngc", "test.tbl"], g10L1L10Dir);
verifyExpectedOutput( verifyExpectedOutput(
"interp_g10_l1_l10_wasm", "interp_g10_l1_l10_wasm",
interp.runFileWithIni(`${g10L1L10Dir}/test.ngc`, `${g10L1L10Dir}/test.ini`), interp.runFileWithIni(`${g10L1L10Dir}/test.ngc`, `${g10L1L10Dir}/test.ini`),
@@ -3353,7 +3359,8 @@ verifyExpectedOutput(
); );
const g10L11Dir = writeG10RegressionFiles("g10-l11", ["test.ngc", "test.tbl"]); const g10L11Dir = writeG10RegressionFiles("g10-l11", ["test.ngc", "test.tbl"]);
assertG10RegressionStaging("g10-l11", ["test.ngc", "test.tbl"], g10L11Dir); assertG10RegressionCoverage("g10-l11", ["test.ngc", "test.tbl"]);
assertG10RegressionFilesStaging("g10-l11", ["test.ngc", "test.tbl"], g10L11Dir);
verifyExpectedOutput( verifyExpectedOutput(
"interp_g10_l11_wasm", "interp_g10_l11_wasm",
interp.runFileWithIni(`${g10L11Dir}/test.ngc`, `${g10L11Dir}/test.ini`), interp.runFileWithIni(`${g10L11Dir}/test.ngc`, `${g10L11Dir}/test.ini`),
@@ -3371,7 +3378,8 @@ verifyExpectedOutput(
); );
const g10L2WhileActiveDir = writeG10RegressionFiles("g10-l2-while-active", ["test.ngc"]); const g10L2WhileActiveDir = writeG10RegressionFiles("g10-l2-while-active", ["test.ngc"]);
assertG10RegressionStaging("g10-l2-while-active", ["test.ngc"], g10L2WhileActiveDir); assertG10RegressionCoverage("g10-l2-while-active", ["test.ngc"]);
assertG10RegressionFilesStaging("g10-l2-while-active", ["test.ngc"], g10L2WhileActiveDir);
verifyExpectedOutput( verifyExpectedOutput(
"interp_g10_l2_while_active_wasm", "interp_g10_l2_while_active_wasm",
interp.runFile(`${g10L2WhileActiveDir}/test.ngc`), interp.runFile(`${g10L2WhileActiveDir}/test.ngc`),
@@ -3390,7 +3398,8 @@ verifyExpectedOutput(
); );
const g10L20WhileActiveDir = writeG10RegressionFiles("g10-l20-while-active", ["test.ngc"]); const g10L20WhileActiveDir = writeG10RegressionFiles("g10-l20-while-active", ["test.ngc"]);
assertG10RegressionStaging("g10-l20-while-active", ["test.ngc"], g10L20WhileActiveDir); assertG10RegressionCoverage("g10-l20-while-active", ["test.ngc"]);
assertG10RegressionFilesStaging("g10-l20-while-active", ["test.ngc"], g10L20WhileActiveDir);
verifyExpectedOutput( verifyExpectedOutput(
"interp_g10_l20_while_active_wasm", "interp_g10_l20_while_active_wasm",
interp.runFile(`${g10L20WhileActiveDir}/test.ngc`), interp.runFile(`${g10L20WhileActiveDir}/test.ngc`),
@@ -3408,7 +3417,8 @@ verifyExpectedOutput(
); );
const g10WithG92Dir = writeG10RegressionFiles("g10-with-g92", ["test.ngc", "test.tbl"]); const g10WithG92Dir = writeG10RegressionFiles("g10-with-g92", ["test.ngc", "test.tbl"]);
assertG10RegressionStaging("g10-with-g92", ["test.ngc", "test.tbl"], g10WithG92Dir); assertG10RegressionCoverage("g10-with-g92", ["test.ngc", "test.tbl"]);
assertG10RegressionFilesStaging("g10-with-g92", ["test.ngc", "test.tbl"], g10WithG92Dir);
verifyExpectedOutput( verifyExpectedOutput(
"interp_g10_with_g92_wasm", "interp_g10_with_g92_wasm",
interp.runFileWithIni(`${g10WithG92Dir}/test.ngc`, `${g10WithG92Dir}/test.ini`), interp.runFileWithIni(`${g10WithG92Dir}/test.ngc`, `${g10WithG92Dir}/test.ini`),