按提示词结论补参数文件默认回落锁

This commit is contained in:
cnc
2026-06-02 13:10:32 +08:00
parent d807464cf7
commit cee1bf3a3f
3 changed files with 50 additions and 0 deletions

View File

@@ -6163,6 +6163,48 @@ int main() {
"expected LinuxCNC rotary/UVW persistent numbered parameters to reload from parameter file");
}
const std::string parameter_env_leak_guard_var_path = temp_dir.file("parameter_env_leak_guard.var");
{
std::ofstream var_file(parameter_env_leak_guard_var_path);
var_file << "5001\t17.000000\n";
}
{
ScopedEnv var_env("CNC_SIM_RS274_VAR", parameter_env_leak_guard_var_path.c_str());
const char parameter_env_leak_guard_set_program[] =
"#5001 = 91\n"
"M30\n";
events.clear();
ok &= expect(cnc_sim_parse_program(sim,
parameter_env_leak_guard_set_program,
sizeof(parameter_env_leak_guard_set_program) - 1) == 0,
cnc_sim_last_error(sim));
}
{
const char parameter_env_default_check_program[] =
"F100\n"
"O10 if [#5001 EQ 91]\n"
"G1 X1\n"
"O10 endif\n";
events.clear();
ok &= expect(cnc_sim_parse_program(sim,
parameter_env_default_check_program,
sizeof(parameter_env_default_check_program) - 1) == 0,
cnc_sim_last_error(sim));
bool saw_stale_env_parameter = false;
for (const auto &event : events) {
saw_stale_env_parameter = saw_stale_env_parameter ||
(event.type == CNC_SIM_EVENT_LINEAR_FEED &&
event.line == 3 &&
near(event.end.x, 1.0));
}
// LinuxCNC source basis: rs274ngc_pre.cc rs274_ngc_init() falls back
// to RS274NGC_PARAMETER_FILE_NAME_DEFAULT when the external parameter
// file name is empty. The project env override must not persist after
// CNC_SIM_RS274_VAR is unset.
ok &= expect(!saw_stale_env_parameter,
"expected LinuxCNC parameter env override not to leak into default parses");
}
const char volatile_global_set_program[] =
"#31 = 7\n"
"M30\n";