Guard INI context fixture staging

This commit is contained in:
2026-06-13 15:22:21 +08:00
parent dfeedeb675
commit dfa817a0f8
3 changed files with 159 additions and 33 deletions

View File

@@ -133,6 +133,24 @@ function writeLocalErrorGcodeFixture(fixtureName, wasmPath, expectedWasmPath, ta
return wasmPath;
}
function writeIniToolTableFixtureStaging(wasmDir, expectedWasmDir, targetInterp = interp) {
assert.equal(wasmDir, expectedWasmDir, "ini_tool_table staging root drift");
const files = ["ini_tool_table.ini", "ini_tool_table.tbl", "ini_tool_table.ngc"];
assert.equal(new Set(files).size, files.length, "ini_tool_table staging manifest duplicate");
for (const file of files) {
assert.equal(`${wasmDir}/${file}`, `${expectedWasmDir}/${file}`, `ini_tool_table ${file} staging path drift`);
}
writeLocalIniFixture("ini_tool_table.ini", `${wasmDir}/ini_tool_table.ini`, `${expectedWasmDir}/ini_tool_table.ini`, targetInterp);
writeLocalIniFixture("ini_tool_table.tbl", `${wasmDir}/ini_tool_table.tbl`, `${expectedWasmDir}/ini_tool_table.tbl`, targetInterp);
writeLocalGcodeFixture("ini_tool_table", `${wasmDir}/ini_tool_table.ngc`, `${expectedWasmDir}/ini_tool_table.ngc`, targetInterp);
return {
iniPath: `${wasmDir}/ini_tool_table.ini`,
programPath: `${wasmDir}/ini_tool_table.ngc`,
};
}
function stageInterpIniContext(name, programFile = "test.ngc") {
const sourceRootRel = `tests/interp/${name}`;
const iniText = readFileSync(
@@ -732,8 +750,11 @@ verifyExpectedOutput(
].join("\n"),
);
const namedParamFilePath = `/work/${INTERP_INI_FIXTURE}.ngc`;
interp.writeTextFile(namedParamFilePath, namedParamProgramText);
const namedParamFilePath = writeLocalGcodeFixture(
INTERP_INI_FIXTURE,
`/work/${INTERP_INI_FIXTURE}.ngc`,
`/work/${INTERP_INI_FIXTURE}.ngc`,
);
verifyExpectedOutput(
"namedparam_semantics_file",
interp.runFileWithIni(namedParamFilePath, namedParamIniPath),
@@ -741,28 +762,21 @@ verifyExpectedOutput(
);
const iniToolTableDir = "/work/ini-tool-table";
const iniToolTableIniPath = `${iniToolTableDir}/ini_tool_table.ini`;
const iniToolTableProgramPath = `${iniToolTableDir}/ini_tool_table.ngc`;
interp.writeTextFile(
iniToolTableIniPath,
readFileSync(resolve(rootDir, "tests/fixtures/ini/ini_tool_table.ini"), "utf8"),
);
interp.writeTextFile(
`${iniToolTableDir}/ini_tool_table.tbl`,
readFileSync(resolve(rootDir, "tests/fixtures/ini/ini_tool_table.tbl"), "utf8"),
);
interp.writeTextFile(
iniToolTableProgramPath,
readFileSync(resolve(rootDir, "tests/fixtures/gcode/ini_tool_table.ngc"), "utf8"),
const iniToolTable = writeIniToolTableFixtureStaging(
iniToolTableDir,
"/work/ini-tool-table",
);
verifyExpectedOutput(
"ini_tool_table_file",
interp.runFileWithIni(iniToolTableProgramPath, iniToolTableIniPath),
interp.runFileWithIni(iniToolTable.programPath, iniToolTable.iniPath),
readFileSync(resolve(rootDir, "tests/fixtures/canon/ini_tool_table.events"), "utf8").trimEnd(),
);
const baselineIniFilePath = `/work/${INTERP_BASELINE_INI_FIXTURE}.ngc`;
interp.writeTextFile(baselineIniFilePath, baselineIniProgramText);
const baselineIniFilePath = writeLocalGcodeFixture(
INTERP_BASELINE_INI_FIXTURE,
`/work/${INTERP_BASELINE_INI_FIXTURE}.ngc`,
`/work/${INTERP_BASELINE_INI_FIXTURE}.ngc`,
);
verifyExpectedOutput(
`${INTERP_BASELINE_INI_FIXTURE}_file`,
interp.runFileWithIni(baselineIniFilePath, namedParamIniPath),