From 83f409c900e88d4f3d6be20934851be9f4eb8984 Mon Sep 17 00:00:00 2001 From: wangdequan Date: Mon, 8 Jun 2026 10:09:14 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=20INI=20WASM=20=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=90=8D=E6=9F=A5=E8=AF=A2=E8=A6=86=E7=9B=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 结论:Node INI WASM smoke 现在通过 LinuxCNC-backed getString 路径验证 PARAMETER_FILE 和 TOOL_TABLE 文件名查询,支撑后续 OPFS 会话桥接输入。 --- wasm-port/docs/compatibility-validation.md | 6 ++++-- wasm-port/tests/wasm/node/verify_ini_wasm.mjs | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/wasm-port/docs/compatibility-validation.md b/wasm-port/docs/compatibility-validation.md index 0322cca..88fbea4 100644 --- a/wasm-port/docs/compatibility-validation.md +++ b/wasm-port/docs/compatibility-validation.md @@ -76,7 +76,9 @@ The WASM INI smoke script builds `runtime/ui/ini-panel/linuxcnc_ini.js` and `linuxcnc_ini.wasm` from vendored LinuxCNC `inifile.cc`, then loads that module through `runtime/sdk/src/index.js` in Node and verifies INI string and boolean queries against a file written to the Emscripten filesystem. Boolean -conversion is validated through vendored LinuxCNC `iniFindBool()`. +conversion is validated through vendored LinuxCNC `iniFindBool()`, and +machine-session file-name lookup is validated through LinuxCNC string queries +for `[RS274NGC]PARAMETER_FILE` and `[EMCIO]TOOL_TABLE`. The WASM interpreter-core smoke script builds `build/wasm/core/linuxcnc_interp.js` and `linuxcnc_interp.wasm` from the same @@ -190,7 +192,7 @@ The validation fails if: | Harness | Purpose | | --- | --- | -| `tests/wasm/node/verify_ini_wasm.sh` | Validates the browser-facing INI WASM module can be built from vendored LinuxCNC `inifile.cc`, loaded through the JS SDK in Node, and queried through the exported C ABI. | +| `tests/wasm/node/verify_ini_wasm.sh` | Validates the browser-facing INI WASM module can be built from vendored LinuxCNC `inifile.cc`, loaded through the JS SDK in Node, and queried through the exported C ABI, including LinuxCNC-backed boolean conversion and machine-session file-name string lookup. | | `tests/wasm/node/verify_interp_wasm.sh` | Validates the initial interpreter-core WASM module can be built from vendored LinuxCNC interpreter source, loaded through the interpreter JS SDK, run the first fixture group through `Interp::execute()` and selected file fixtures through `Interp::open()`/`read()`/`execute()`, match the native canonical event plus required state readback fixtures, and run parameter-file restore/save through vendored LinuxCNC `Interp::restore_parameters()` and `Interp::save_parameters()`. | | `tests/opfs/node/verify_file_service.sh` | Validates the host-owned OPFS text-file adapter, path model, session snapshot store including custom filenames and envelope/path rejection paths, machine file store, G-code text store including filename rejection paths, OPFS-to-WASM parameter/tool-table bridges, and grouped machine-session loading without moving file persistence, parameter semantics, or tool-table semantics into the WASM core. | | `tests/browser/verify_ini_panel_browser.sh` | Validates the INI SDK, INI/interpreter WASM module loading, OPFS text-file round trip, generic session snapshot round trip plus custom filename and envelope/path rejection paths, machine file text round trip, G-code text round trip plus filename rejection paths, and the INI panel UI's machine-session load with default OPFS parameter/tool-table file mapping, G-code run, and canonical-event display paths in a real browser runtime. | diff --git a/wasm-port/tests/wasm/node/verify_ini_wasm.mjs b/wasm-port/tests/wasm/node/verify_ini_wasm.mjs index 025240a..08e96d3 100644 --- a/wasm-port/tests/wasm/node/verify_ini_wasm.mjs +++ b/wasm-port/tests/wasm/node/verify_ini_wasm.mjs @@ -31,9 +31,13 @@ COORDINATES = X Y Z A B KINEMATICS = xyzbc-trt-kins JOINTS = 5 +[RS274NGC] +PARAMETER_FILE = node-linuxcnc.var + [EMCIO] RANDOM_TOOLCHANGER = ON NON_RANDOM_TOOLCHANGER = no +TOOL_TABLE = node-tool.tbl `, ); @@ -46,6 +50,14 @@ assert.equal( ini.getString("/work/node-smoke.ini", "KINS", "KINEMATICS"), "xyzbc-trt-kins", ); +assert.equal( + ini.getString("/work/node-smoke.ini", "RS274NGC", "PARAMETER_FILE"), + "node-linuxcnc.var", +); +assert.equal( + ini.getString("/work/node-smoke.ini", "EMCIO", "TOOL_TABLE"), + "node-tool.tbl", +); assert.equal(ini.getString("/work/node-smoke.ini", "TRAJ", "MISSING"), null); assert.equal(ini.getBool("/work/node-smoke.ini", "EMCIO", "RANDOM_TOOLCHANGER"), true); assert.equal(ini.getBool("/work/node-smoke.ini", "EMCIO", "NON_RANDOM_TOOLCHANGER"), false); @@ -54,9 +66,13 @@ assert.equal(ini.getBool("/work/node-smoke.ini", "EMCIO", "MISSING"), null); assert.deepEqual(ini.getFields("/work/node-smoke.ini", { machine: { section: "EMC", tag: "MACHINE" }, joints: { section: "KINS", tag: "JOINTS" }, + parameterFile: { section: "RS274NGC", tag: "PARAMETER_FILE" }, + toolTable: { section: "EMCIO", tag: "TOOL_TABLE" }, }), { machine: "wasm-node-smoke", joints: "5", + parameterFile: "node-linuxcnc.var", + toolTable: "node-tool.tbl", }); console.log("ini_wasm_node_smoke=ok");