diff --git a/text6.txt b/text6.txt index 91eedae..e3a691b 100644 --- a/text6.txt +++ b/text6.txt @@ -1917,3 +1917,55 @@ wasm-port/tests/host/verify_host_smokes.sh 注意 `test.tbl` 存在时 `test.ini` 仍由 `writeG10RegressionFiles(...)` 运行时生成, 不要纳入 vendored staged manifest。继续避免 blocked runtime promotion、browser full 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//` 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 语义实现。 diff --git a/wasm-port/tests/browser/interp_smoke.html b/wasm-port/tests/browser/interp_smoke.html index 87b342e..e9e9ac3 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -4765,13 +4765,14 @@ return wasmDir; } - function assertG10RegressionStaging(name, files, wasmDir) { + function assertG10RegressionFilesStaging(name, files, wasmDir) { if (files.length === 0 || new Set(files).size !== files.length) { throw new Error(`browser_interp_g10_${name}_fixture_coverage: list drift`); } - const g10StagedRelativeFiles = files.map((file) => `${wasmDir}/${file}`.replace(`/work/browser-interp/g10/${name}/`, "")); - if (g10StagedRelativeFiles.join(",") !== files.join(",")) { - throw new Error(`browser_interp_g10_${name}_staging_manifest: list drift`); + for (const file of files) { + if (`${wasmDir}/${file}` !== `/work/browser-interp/g10/${name}/${file}`) { + throw new Error(`browser_interp_g10_${name}_${file}_staging_manifest: list drift`); + } } } @@ -8364,7 +8365,7 @@ "test.ngc", "test.tbl", ]); - assertG10RegressionStaging("g10-l1-l10", ["test.ngc", "test.tbl"], g10L1L10Dir); + assertG10RegressionFilesStaging("g10-l1-l10", ["test.ngc", "test.tbl"], g10L1L10Dir); verifyExpectedOutput( "browser_interp_g10_l1_l10", interp.runFileWithIni(`${g10L1L10Dir}/test.ngc`, `${g10L1L10Dir}/test.ini`), @@ -8387,7 +8388,7 @@ "test.ngc", "test.tbl", ]); - assertG10RegressionStaging("g10-l11", ["test.ngc", "test.tbl"], g10L11Dir); + assertG10RegressionFilesStaging("g10-l11", ["test.ngc", "test.tbl"], g10L11Dir); verifyExpectedOutput( "browser_interp_g10_l11", interp.runFileWithIni(`${g10L11Dir}/test.ngc`, `${g10L11Dir}/test.ini`), @@ -8409,7 +8410,7 @@ "g10-l2-while-active", ["test.ngc"], ); - assertG10RegressionStaging("g10-l2-while-active", ["test.ngc"], g10L2WhileActiveDir); + assertG10RegressionFilesStaging("g10-l2-while-active", ["test.ngc"], g10L2WhileActiveDir); verifyExpectedOutput( "browser_interp_g10_l2_while_active", interp.runFile(`${g10L2WhileActiveDir}/test.ngc`), @@ -8432,7 +8433,7 @@ "g10-l20-while-active", ["test.ngc"], ); - assertG10RegressionStaging("g10-l20-while-active", ["test.ngc"], g10L20WhileActiveDir); + assertG10RegressionFilesStaging("g10-l20-while-active", ["test.ngc"], g10L20WhileActiveDir); verifyExpectedOutput( "browser_interp_g10_l20_while_active", interp.runFile(`${g10L20WhileActiveDir}/test.ngc`), @@ -8453,7 +8454,7 @@ "test.ngc", "test.tbl", ]); - assertG10RegressionStaging("g10-with-g92", ["test.ngc", "test.tbl"], g10WithG92Dir); + assertG10RegressionFilesStaging("g10-with-g92", ["test.ngc", "test.tbl"], g10WithG92Dir); verifyExpectedOutput( "browser_interp_g10_with_g92", interp.runFileWithIni(`${g10WithG92Dir}/test.ngc`, `${g10WithG92Dir}/test.ini`), diff --git a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs index cbbd44f..429dff5 100644 --- a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs +++ b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs @@ -422,7 +422,7 @@ function writeG10RegressionFiles(name, files) { return wasmDir; } -function assertG10RegressionStaging(name, files, wasmDir) { +function assertG10RegressionCoverage(name, files) { const sourceDir = resolve(rootDir, "vendor/linuxcnc/tests/interp/g10", name); assert.deepEqual( readdirSync(sourceDir) @@ -431,11 +431,16 @@ function assertG10RegressionStaging(name, files, wasmDir) { [...files].sort(), `interp g10 ${name} fixture coverage drift`, ); - assert.deepEqual( - files.map((file) => `${wasmDir}/${file}`), - files.map((file) => `/work/interp/g10/${name}/${file}`), - `interp g10 ${name} staging manifest drift`, - ); +} + +function assertG10RegressionFilesStaging(name, files, wasmDir) { + 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) { @@ -3333,7 +3338,8 @@ assert.deepEqual( ); 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( "interp_g10_l1_l10_wasm", interp.runFileWithIni(`${g10L1L10Dir}/test.ngc`, `${g10L1L10Dir}/test.ini`), @@ -3353,7 +3359,8 @@ verifyExpectedOutput( ); 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( "interp_g10_l11_wasm", interp.runFileWithIni(`${g10L11Dir}/test.ngc`, `${g10L11Dir}/test.ini`), @@ -3371,7 +3378,8 @@ verifyExpectedOutput( ); 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( "interp_g10_l2_while_active_wasm", interp.runFile(`${g10L2WhileActiveDir}/test.ngc`), @@ -3390,7 +3398,8 @@ verifyExpectedOutput( ); 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( "interp_g10_l20_while_active_wasm", interp.runFile(`${g10L20WhileActiveDir}/test.ngc`), @@ -3408,7 +3417,8 @@ verifyExpectedOutput( ); 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( "interp_g10_with_g92_wasm", interp.runFileWithIni(`${g10WithG92Dir}/test.ngc`, `${g10WithG92Dir}/test.ini`),