From 4c4ee2ae020ee960765a36fbbaf9eb1cd7fea1f6 Mon Sep 17 00:00:00 2001 From: wangdequan Date: Sat, 13 Jun 2026 15:07:06 +0800 Subject: [PATCH] Guard local INI/direct fixture staging --- text7.txt | 68 +++++++++++++++++++ wasm-port/tests/browser/interp_smoke.html | 43 ++++++++---- .../tests/wasm/node/verify_interp_wasm.mjs | 40 +++++++---- 3 files changed, 123 insertions(+), 28 deletions(-) diff --git a/text7.txt b/text7.txt index 9f03917..002e5e7 100644 --- a/text7.txt +++ b/text7.txt @@ -490,3 +490,71 @@ runtime promotion。 ```bash git status --short && git log -5 --oneline && tail -n 120 text7.txt && awk '/^[一二三四五六七八九十百]+、/ {print}' text7.txt | sort | uniq -d ``` + +十一、2026-06-13 继续执行记录:local INI/direct fixture staging guard + +1. 本批目标。 + +继续 staged path guard inventory 第六轮,处理 Node/browser 成对覆盖的 local INI 与 +direct G-code fixture staging: + +```text +spindle_orient_offset.ini +disable_fanuc_style_sub.ini +spindle_orient_offset.ngc +disable_fanuc_style_sub_m98.ngc +``` + +2. 已完成改动。 + +- Node 侧新增 `writeLocalIniFixture(...)`; +- browser 侧新增 `writeLocalIniFixture(...)`; +- `spindle_orient_offset.ini` 和 `disable_fanuc_style_sub.ini` 两侧均改为 helper 写入; +- `spindle_orient_offset.ngc` 和 `disable_fanuc_style_sub_m98.ngc` 两侧均改为 + `writeLocalGcodeFixture(...)` 写入; +- helper 显式检查 staged `wasmPath` 与期望路径一致; +- browser 侧仍不枚举目录; +- 未修改 INI 内容、G-code 内容、canon expected、tool table 或 interpreter 语义。 + +涉及文件: + +```text +wasm-port/tests/wasm/node/verify_interp_wasm.mjs +wasm-port/tests/browser/interp_smoke.html +``` + +3. 已完成的目标验证。 + +```bash +git diff --check +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 +``` + +4. 本批剩余建议验证。 + +```bash +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_sim_configs_inventory_wasm.sh +wasm-port/tests/host/verify_host_smokes.sh +``` + +如果通过,提交建议: + +```text +Guard local INI/direct fixture staging +``` + +5. 下一步工作建议。 + +继续 staged path guard inventory 第七轮,优先处理 `INTERP_FILE_FIXTURES` / +`INTERP_BROWSER_FILE_FIXTURES` 和 `INTERP_ERROR_FIXTURES` 这类循环写入点,增加 +loop-level single-file staging helper 或 manifest parity guard;继续避开 +parameter/tool table runtime state tests 和 blocked runtime promotion。 + +下一轮第一条命令仍保持: + +```bash +git status --short && git log -5 --oneline && tail -n 120 text7.txt && awk '/^[一二三四五六七八九十百]+、/ {print}' text7.txt | sort | uniq -d +``` diff --git a/wasm-port/tests/browser/interp_smoke.html b/wasm-port/tests/browser/interp_smoke.html index a02988d..991db89 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -4320,6 +4320,14 @@ } } + async function writeLocalIniFixture(interp, filename, wasmPath, expectedWasmPath) { + if (wasmPath !== expectedWasmPath) { + throw new Error(`browser_${filename}_local_ini_staging: path drift`); + } + interp.writeTextFile(wasmPath, await fetchText(`../fixtures/ini/${filename}`)); + return wasmPath; + } + async function writeLocalGcodeFixture(interp, fixtureName, wasmPath, expectedWasmPath) { if (wasmPath !== expectedWasmPath) { throw new Error(`browser_${fixtureName}_local_gcode_staging: path drift`); @@ -5249,15 +5257,17 @@ const spindleOrientOffsetExpectedText = ( await fetchText(`../fixtures/canon/${INTERP_SPINDLE_ORIENT_OFFSET_FIXTURE}.events`) ).trimEnd(); - const spindleOrientOffsetIniPath = "/work/browser-spindle-orient-offset.ini"; - interp.writeTextFile( - spindleOrientOffsetIniPath, - await fetchText("../fixtures/ini/spindle_orient_offset.ini"), + const spindleOrientOffsetIniPath = await writeLocalIniFixture( + interp, + "spindle_orient_offset.ini", + "/work/browser-spindle-orient-offset.ini", + "/work/browser-spindle-orient-offset.ini", ); - const disableFanucStyleSubIniPath = "/work/browser-disable-fanuc-style-sub.ini"; - interp.writeTextFile( - disableFanucStyleSubIniPath, - await fetchText("../fixtures/ini/disable_fanuc_style_sub.ini"), + const disableFanucStyleSubIniPath = await writeLocalIniFixture( + interp, + "disable_fanuc_style_sub.ini", + "/work/browser-disable-fanuc-style-sub.ini", + "/work/browser-disable-fanuc-style-sub.ini", ); verifyExpectedOutput( INTERP_SPINDLE_ORIENT_OFFSET_FIXTURE, @@ -5353,18 +5363,23 @@ baselineIniExpectedText, ); - const spindleOrientOffsetPath = `/work/${INTERP_SPINDLE_ORIENT_OFFSET_FIXTURE}.ngc`; - interp.writeTextFile(spindleOrientOffsetPath, spindleOrientOffsetProgramText); + const spindleOrientOffsetPath = await writeLocalGcodeFixture( + interp, + INTERP_SPINDLE_ORIENT_OFFSET_FIXTURE, + `/work/${INTERP_SPINDLE_ORIENT_OFFSET_FIXTURE}.ngc`, + `/work/${INTERP_SPINDLE_ORIENT_OFFSET_FIXTURE}.ngc`, + ); verifyExpectedOutput( `${INTERP_SPINDLE_ORIENT_OFFSET_FIXTURE}_file`, interp.runFileWithIni(spindleOrientOffsetPath, spindleOrientOffsetIniPath), spindleOrientOffsetExpectedText, ); - const disableFanucStyleSubPath = "/work/browser-disable_fanuc_style_sub_m98.ngc"; - interp.writeTextFile( - disableFanucStyleSubPath, - await fetchText("../fixtures/gcode/disable_fanuc_style_sub_m98.ngc"), + const disableFanucStyleSubPath = await writeLocalGcodeFixture( + interp, + "disable_fanuc_style_sub_m98", + "/work/browser-disable_fanuc_style_sub_m98.ngc", + "/work/browser-disable_fanuc_style_sub_m98.ngc", ); verifyExpectedOutput( "browser_disable_fanuc_style_sub_m98_file", diff --git a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs index 7aba5f5..ca11e64 100644 --- a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs +++ b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs @@ -106,6 +106,15 @@ function writeVendorTextFile(sourcePath, wasmPath, targetInterp = interp) { targetInterp.writeTextFile(wasmPath, readFileSync(sourcePath, "utf8")); } +function writeLocalIniFixture(filename, wasmPath, expectedWasmPath, targetInterp = interp) { + assert.equal(wasmPath, expectedWasmPath, `${filename} local ini staging path drift`); + targetInterp.writeTextFile( + wasmPath, + readFileSync(resolve(rootDir, `tests/fixtures/ini/${filename}`), "utf8"), + ); + return wasmPath; +} + function writeLocalGcodeFixture(fixtureName, wasmPath, expectedWasmPath, targetInterp = interp) { assert.equal(wasmPath, expectedWasmPath, `${fixtureName} local gcode staging path drift`); targetInterp.writeTextFile( @@ -645,15 +654,15 @@ const spindleOrientOffsetExpected = readFileSync( resolve(rootDir, `tests/fixtures/canon/${INTERP_SPINDLE_ORIENT_OFFSET_FIXTURE}.events`), "utf8", ).trimEnd(); -const spindleOrientOffsetIniPath = "/work/spindle-orient-offset.ini"; -interp.writeTextFile( - spindleOrientOffsetIniPath, - readFileSync(resolve(rootDir, "tests/fixtures/ini/spindle_orient_offset.ini"), "utf8"), +const spindleOrientOffsetIniPath = writeLocalIniFixture( + "spindle_orient_offset.ini", + "/work/spindle-orient-offset.ini", + "/work/spindle-orient-offset.ini", ); -const disableFanucStyleSubIniPath = "/work/disable-fanuc-style-sub.ini"; -interp.writeTextFile( - disableFanucStyleSubIniPath, - readFileSync(resolve(rootDir, "tests/fixtures/ini/disable_fanuc_style_sub.ini"), "utf8"), +const disableFanucStyleSubIniPath = writeLocalIniFixture( + "disable_fanuc_style_sub.ini", + "/work/disable-fanuc-style-sub.ini", + "/work/disable-fanuc-style-sub.ini", ); verifyExpectedOutput( INTERP_SPINDLE_ORIENT_OFFSET_FIXTURE, @@ -753,18 +762,21 @@ verifyExpectedOutput( baselineIniExpected, ); -const spindleOrientOffsetFilePath = `/work/${INTERP_SPINDLE_ORIENT_OFFSET_FIXTURE}.ngc`; -interp.writeTextFile(spindleOrientOffsetFilePath, spindleOrientOffsetProgramText); +const spindleOrientOffsetFilePath = writeLocalGcodeFixture( + INTERP_SPINDLE_ORIENT_OFFSET_FIXTURE, + `/work/${INTERP_SPINDLE_ORIENT_OFFSET_FIXTURE}.ngc`, + `/work/${INTERP_SPINDLE_ORIENT_OFFSET_FIXTURE}.ngc`, +); verifyExpectedOutput( `${INTERP_SPINDLE_ORIENT_OFFSET_FIXTURE}_file`, interp.runFileWithIni(spindleOrientOffsetFilePath, spindleOrientOffsetIniPath), spindleOrientOffsetExpected, ); -const disableFanucStyleSubFilePath = "/work/disable_fanuc_style_sub_m98.ngc"; -interp.writeTextFile( - disableFanucStyleSubFilePath, - readFileSync(resolve(rootDir, "tests/fixtures/gcode/disable_fanuc_style_sub_m98.ngc"), "utf8"), +const disableFanucStyleSubFilePath = writeLocalGcodeFixture( + "disable_fanuc_style_sub_m98", + "/work/disable_fanuc_style_sub_m98.ngc", + "/work/disable_fanuc_style_sub_m98.ngc", ); verifyExpectedOutput( "disable_fanuc_style_sub_m98_file_wasm",