按规划继续工作

结论:新增 namedparam_ini_semantics 夹具,将本地命名参数和 _ini[...] 查询纳入 upstream rs274 -i 基线,并接入 Node WASM 与浏览器 INI-aware 解释器 smoke;HAL 查询继续保留在 standalone adapter 边界。
This commit is contained in:
2026-06-08 12:18:02 +08:00
parent fb8fcee104
commit 657eecfcc3
9 changed files with 91 additions and 17 deletions

View File

@@ -29,6 +29,7 @@
saveMachineTextFiles,
} from "../../runtime/opfs/machine-file-store.js";
import {
INTERP_BASELINE_INI_FIXTURE,
INTERP_BROWSER_FILE_FIXTURES,
INTERP_BROWSER_MDI_FIXTURES,
INTERP_ERROR_FIXTURES,
@@ -240,6 +241,18 @@
namedParamExpectedText,
);
const baselineIniProgramText = await fetchText(
`../fixtures/gcode/${INTERP_BASELINE_INI_FIXTURE}.ngc`,
);
const baselineIniExpectedText = (
await fetchText(`../fixtures/canon/${INTERP_BASELINE_INI_FIXTURE}.events`)
).trimEnd();
verifyExpectedOutput(
INTERP_BASELINE_INI_FIXTURE,
interp.runProgramWithIni(baselineIniProgramText, namedParamIniPath),
baselineIniExpectedText,
);
const positionParamsText = await fetchText(
`../fixtures/gcode/${INTERP_POSITION_PARAMS_FILE_FIXTURE}.ngc`,
);
@@ -273,6 +286,14 @@
namedParamExpectedText,
);
const baselineIniPath = `/work/${INTERP_BASELINE_INI_FIXTURE}.ngc`;
interp.writeTextFile(baselineIniPath, baselineIniProgramText);
verifyExpectedOutput(
`${INTERP_BASELINE_INI_FIXTURE}_file`,
interp.runFileWithIni(baselineIniPath, namedParamIniPath),
baselineIniExpectedText,
);
verifyExpectedOutput(
"restore_parameters_missing_file",
interp.restoreParameters("/work/browser-missing.var"),

View File

@@ -0,0 +1,4 @@
canon_event=MESSAGE: named local=7.2500
canon_event=MESSAGE: exists local=1 missing=0
canon_event=MESSAGE: ini velocity=35
canon_event=PROGRAM_END

View File

@@ -0,0 +1,8 @@
#<local_probe> = 7.25
#<exists_local> = EXISTS[#<local_probe>]
#<exists_missing> = EXISTS[#<missing_probe>]
#<ini_velocity> = #<_ini[traj]max_linear_velocity>
(DEBUG, named local=%f#<local_probe>)
(DEBUG, exists local=%d#<exists_local> missing=%d#<exists_missing>)
(DEBUG, ini velocity=%d#<ini_velocity>)
M2

View File

@@ -71,4 +71,5 @@ export const INTERP_FILE_FIXTURES = [
export const INTERP_BROWSER_FILE_FIXTURES = INTERP_FILE_FIXTURES;
export const INTERP_INI_FIXTURE = "namedparam_semantics";
export const INTERP_BASELINE_INI_FIXTURE = "namedparam_ini_semantics";
export const INTERP_POSITION_PARAMS_FILE_FIXTURE = "position_params";

View File

@@ -5,6 +5,7 @@ import assert from "node:assert/strict";
import { createLinuxCncInterpSdk } from "../../../runtime/sdk/src/index.js";
import {
INTERP_BASELINE_INI_FIXTURE,
INTERP_ERROR_FIXTURES,
INTERP_FILE_FIXTURES,
INTERP_INI_FIXTURE,
@@ -188,6 +189,20 @@ verifyExpectedOutput(
namedParamExpected,
);
const baselineIniProgramText = readFileSync(
resolve(rootDir, `tests/fixtures/gcode/${INTERP_BASELINE_INI_FIXTURE}.ngc`),
"utf8",
);
const baselineIniExpected = readFileSync(
resolve(rootDir, `tests/fixtures/canon/${INTERP_BASELINE_INI_FIXTURE}.events`),
"utf8",
).trimEnd();
verifyExpectedOutput(
INTERP_BASELINE_INI_FIXTURE,
interp.runProgramWithIni(baselineIniProgramText, namedParamIniPath),
baselineIniExpected,
);
for (const fixtureName of INTERP_ERROR_FIXTURES) {
const programText = readFileSync(
resolve(rootDir, `tests/fixtures/gcode_errors/${fixtureName}.ngc`),
@@ -239,6 +254,14 @@ verifyExpectedOutput(
namedParamExpected,
);
const baselineIniFilePath = `/work/${INTERP_BASELINE_INI_FIXTURE}.ngc`;
interp.writeTextFile(baselineIniFilePath, baselineIniProgramText);
verifyExpectedOutput(
`${INTERP_BASELINE_INI_FIXTURE}_file`,
interp.runFileWithIni(baselineIniFilePath, namedParamIniPath),
baselineIniExpected,
);
const positionParamsFilePath = "/work/position_params.ngc";
interp.writeTextFile(
positionParamsFilePath,