参考所有分组:补编号参数 native 覆盖,测试通过

This commit is contained in:
cnc
2026-06-03 00:26:07 +08:00
parent e3d47e8267
commit 2ba8cd7fb8
2 changed files with 291 additions and 0 deletions

View File

@@ -656,6 +656,41 @@ INI_FILE_NAME="$ini_named_parameter_file" CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS27
# Source basis: LinuxCNC src/emc/rs274ngc/interp_namedparams.cc lookup_named_param()
# and init_readonly_param() expose modal/unit/feed/spindle readonly parameters.
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_readonly_named_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_readonly_named_parameters.json"
# Source basis: LinuxCNC src/emc/rs274ngc/interp_array.cc defines
# required/readonly numbered parameters; interp_internal.cc set_probe_data()
# and interp_convert.cc update probe, tool, G28/G30, G92, G5X, and current
# position numbered parameters.
cp "$base_var_file" "$var_file"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_numbered_parameters.json"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_rotary_probe_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_rotary_probe_numbered_parameters.json"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_multi_rotary_probe_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_multi_rotary_probe_numbered_parameters.json"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_tool_info_zero_parameter.ngc >"$output_dir/cnc_sim_linuxcnc_tool_info_zero_parameter.json"
CNC_SIM_TOOL_IN_SPINDLE=1 CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_spindle_tool_info_parameter.ngc >"$output_dir/cnc_sim_linuxcnc_spindle_tool_info_parameter.json"
if CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_readonly_numbered_parameter_assign_error.ngc \
>"$output_dir/cnc_sim_linuxcnc_readonly_numbered_parameter_assign_error.json" 2>"$output_dir/cnc_sim_linuxcnc_readonly_numbered_parameter_assign_error.err"; then
echo "expected linuxcnc_readonly_numbered_parameter_assign_error.ngc to fail" >&2
exit 1
fi
grep -Fq "Parameter is readonly" \
"$output_dir/cnc_sim_linuxcnc_readonly_numbered_parameter_assign_error.err"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g28_g30_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_g28_g30_numbered_parameters.json"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_rotary_g28_g30_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_rotary_g28_g30_numbered_parameters.json"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g92_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_g92_numbered_parameters.json"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_rotary_g92_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_rotary_g92_numbered_parameters.json"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g52_g92_numbered_interaction.ngc >"$output_dir/cnc_sim_linuxcnc_g52_g92_numbered_interaction.json"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g5x_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_g5x_numbered_parameters.json"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g59_3_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_g59_3_numbered_parameters.json"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g59_3_rotary_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_g59_3_rotary_numbered_parameters.json"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g5x_rotary_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_g5x_rotary_numbered_parameters.json"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g54_rotary_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_g54_rotary_numbered_parameters.json"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_debug_level_parameter.ngc >"$output_dir/cnc_sim_linuxcnc_debug_level_parameter.json"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_m66_result_parameter.ngc >"$output_dir/cnc_sim_linuxcnc_m66_result_parameter.json"
cp "$base_var_file" "$var_file"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_tool_offset_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_tool_offset_numbered_parameters.json"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_rotary_tool_offset_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_rotary_tool_offset_numbered_parameters.json"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_current_position_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_current_position_numbered_parameters.json"
cp "$base_var_file" "$var_file"
# Source basis: LinuxCNC src/emc/rs274ngc/interp_read.cc
# read_parameter_setting(), read_parameter(), read_real_value(),
# read_atan(), read_unary(), and read_operation() reject malformed
@@ -1880,6 +1915,241 @@ expected_readonly_moves = [
if readonly_moves != expected_readonly_moves:
raise SystemExit(f"unexpected LinuxCNC readonly named parameter motions: {readonly_moves!r}")
numbered_parameters = load("cnc_sim_linuxcnc_numbered_parameters.json")
if not any(
event["type"] == "linear-feed" and
event["line"] == 6 and
event["end"]["x"] == 1
for event in numbered_parameters
):
raise SystemExit("missing LinuxCNC numbered tool/position parameter branch motion")
if not any(
event["type"] == "linear-feed" and
event["line"] == 10 and
event["end"]["y"] == 1
for event in numbered_parameters
):
raise SystemExit("missing LinuxCNC numbered probe parameter branch motion")
rotary_probe_numbered = load("cnc_sim_linuxcnc_rotary_probe_numbered_parameters.json")
if not any(
event["type"] == "linear-feed" and
event["line"] == 5 and
event["end"]["x"] == 1 and
event["end"]["a"] == 5
for event in rotary_probe_numbered
):
raise SystemExit("missing LinuxCNC numbered rotary probe parameter branch motion")
multi_rotary_probe_numbered = load("cnc_sim_linuxcnc_multi_rotary_probe_numbered_parameters.json")
if not any(
event["type"] == "linear-feed" and
event["line"] == 5 and
event["end"]["x"] == 1 and
event["end"]["a"] == 5 and
event["end"]["b"] == 6 and
event["end"]["c"] == 7 and
event["end"]["u"] == 8 and
event["end"]["v"] == 9 and
event["end"]["w"] == 10
for event in multi_rotary_probe_numbered
):
raise SystemExit("missing LinuxCNC numbered multi-axis rotary probe parameter branch motion")
tool_info_zero_parameter = load("cnc_sim_linuxcnc_tool_info_zero_parameter.json")
if not any(
event["type"] == "linear-feed" and
event["line"] == 5 and
event["end"]["x"] == 1
for event in tool_info_zero_parameter
):
raise SystemExit("missing LinuxCNC zeroed #5400/#5410/#5411/#5412/#5413 branch motion")
spindle_tool_info_parameter = load("cnc_sim_linuxcnc_spindle_tool_info_parameter.json")
if not any(
event["type"] == "linear-feed" and
event["line"] == 4 and
event["end"]["x"] == 1
for event in spindle_tool_info_parameter
):
raise SystemExit("missing LinuxCNC preloaded spindle-tool #5400/#5410/#5411/#5412/#5413 branch motion")
g28_g30_numbered = load("cnc_sim_linuxcnc_g28_g30_numbered_parameters.json")
if not any(
event["type"] == "linear-feed" and
event["line"] == 7 and
event["end"]["x"] == 10
for event in g28_g30_numbered
):
raise SystemExit("missing LinuxCNC G28/G30 numbered parameter branch motion")
rotary_g28_g30_numbered = load("cnc_sim_linuxcnc_rotary_g28_g30_numbered_parameters.json")
if not any(
event["type"] == "linear-feed" and
event["line"] == 7 and
event["end"]["x"] == 1 and
event["end"]["a"] == 7 and
event["end"]["b"] == 8 and
event["end"]["c"] == 9 and
event["end"]["u"] == 10 and
event["end"]["v"] == 11 and
event["end"]["w"] == 12
for event in rotary_g28_g30_numbered
):
raise SystemExit("missing LinuxCNC rotary G28/G30 numbered parameter branch motion")
g92_numbered = load("cnc_sim_linuxcnc_g92_numbered_parameters.json")
if not any(
event["type"] == "linear-feed" and
event["line"] == 4 and
event["end"]["x"] == 1
for event in g92_numbered
):
raise SystemExit("missing LinuxCNC G92 numbered parameter branch motion")
rotary_g92_numbered = load("cnc_sim_linuxcnc_rotary_g92_numbered_parameters.json")
if not any(
event["type"] == "linear-feed" and
event["line"] == 4 and
event["end"]["x"] == 1
for event in rotary_g92_numbered
):
raise SystemExit("missing LinuxCNC rotary G92 numbered parameter branch motion")
g52_g92_numbered = load("cnc_sim_linuxcnc_g52_g92_numbered_interaction.json")
if not any(
event["type"] == "linear-feed" and
event["line"] == 6 and
event["end"]["x"] == 1
for event in g52_g92_numbered
):
raise SystemExit("missing LinuxCNC G52 X0 Y0 #5210/#5211/#5212 branch motion")
g5x_numbered = load("cnc_sim_linuxcnc_g5x_numbered_parameters.json")
if not any(
event["type"] == "linear-feed" and
event["line"] == 5 and
event["end"]["x"] == 1
for event in g5x_numbered
):
raise SystemExit("missing LinuxCNC G5X numbered parameter branch motion")
g593_numbered = load("cnc_sim_linuxcnc_g59_3_numbered_parameters.json")
if not any(
event["type"] == "linear-feed" and
event["line"] == 5 and
event["end"]["x"] == 1
for event in g593_numbered
):
raise SystemExit("missing LinuxCNC G59.3 numbered parameter branch motion")
g593_rotary_numbered = load("cnc_sim_linuxcnc_g59_3_rotary_numbered_parameters.json")
if not any(
event["type"] == "linear-feed" and
event["line"] == 5 and
event["end"]["x"] == 1
for event in g593_rotary_numbered
):
raise SystemExit("missing LinuxCNC rotary G59.3 numbered parameter branch motion")
g5x_rotary_numbered = load("cnc_sim_linuxcnc_g5x_rotary_numbered_parameters.json")
if not any(
event["type"] == "linear-feed" and
event["line"] == 5 and
event["end"]["x"] == 1
for event in g5x_rotary_numbered
):
raise SystemExit("missing LinuxCNC rotary G5X numbered parameter branch motion")
g54_rotary_numbered = load("cnc_sim_linuxcnc_g54_rotary_numbered_parameters.json")
if not any(
event["type"] == "linear-feed" and
event["line"] == 4 and
event["end"]["x"] == 1
for event in g54_rotary_numbered
):
raise SystemExit("missing LinuxCNC rotary G54 numbered parameter branch motion")
debug_level_parameter = load("cnc_sim_linuxcnc_debug_level_parameter.json")
if not any(
event["type"] == "linear-feed" and
event["line"] == 3 and
event["end"]["x"] == 1
for event in debug_level_parameter
):
raise SystemExit("missing LinuxCNC #5599 enabled debug-level branch motion")
if not any(
event["type"] == "linear-feed" and
event["line"] == 8 and
event["end"]["y"] == 1
for event in debug_level_parameter
):
raise SystemExit("missing LinuxCNC #5599 disabled debug-level branch motion")
if any(
event["type"] == "comment" and event["line"] in {5, 10}
for event in debug_level_parameter
):
raise SystemExit("unexpected LinuxCNC generic comment event for DEBUG hot comment")
m66_result_parameter = load("cnc_sim_linuxcnc_m66_result_parameter.json")
if not any(
event["type"] == "linear-feed" and
event["line"] == 4 and
event["end"]["x"] == 1
for event in m66_result_parameter
):
raise SystemExit("missing LinuxCNC #5399 digital M66 result branch motion")
if not any(
event["type"] == "linear-feed" and
event["line"] == 9 and
event["end"]["y"] == 1
for event in m66_result_parameter
):
raise SystemExit("missing LinuxCNC #5399 analog M66 result branch motion")
tool_offset_numbered = load("cnc_sim_linuxcnc_tool_offset_numbered_parameters.json")
if not any(
event["type"] == "linear-feed" and
event["line"] == 4 and
event["end"]["x"] == -1 and
event["end"]["y"] == 1 and
event["end"]["z"] == -2
for event in tool_offset_numbered
):
raise SystemExit("missing LinuxCNC numbered tool-offset/current-position parameter branch motion")
rotary_tool_offset_numbered = load("cnc_sim_linuxcnc_rotary_tool_offset_numbered_parameters.json")
if not any(
event["type"] == "linear-feed" and
event["line"] == 4 and
event["end"]["x"] == 1 and
event["end"]["a"] == -1 and
event["end"]["b"] == -2 and
event["end"]["c"] == -3 and
event["end"]["u"] == -4 and
event["end"]["v"] == -5 and
event["end"]["w"] == -6
for event in rotary_tool_offset_numbered
):
raise SystemExit("missing LinuxCNC numbered rotary tool-offset/current-position parameter branch motion")
current_position_numbered = load("cnc_sim_linuxcnc_current_position_numbered_parameters.json")
if not any(
event["type"] == "linear-feed" and
event["line"] == 5 and
event["end"]["x"] == 10 and
event["end"]["y"] == 2 and
event["end"]["z"] == 3 and
event["end"]["a"] == 4 and
event["end"]["b"] == 5 and
event["end"]["c"] == 6 and
event["end"]["u"] == 7 and
event["end"]["v"] == 8 and
event["end"]["w"] == 9
for event in current_position_numbered
):
raise SystemExit("missing LinuxCNC numbered current-position parameter branch motion")
coords = load("cnc_sim_linuxcnc_coordinate_offsets.json")
g5x = [event for event in coords if event["type"] == "set-g5x-offset"]
g92 = [event for event in coords if event["type"] == "set-g92-offset"]
@@ -2038,6 +2308,26 @@ echo "dumped $output_dir/cnc_sim_linuxcnc_indexed_parameters.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_named_parameter_normalization.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_ini_named_parameter.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_readonly_named_parameters.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_numbered_parameters.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_rotary_probe_numbered_parameters.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_multi_rotary_probe_numbered_parameters.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_tool_info_zero_parameter.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_spindle_tool_info_parameter.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_g28_g30_numbered_parameters.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_rotary_g28_g30_numbered_parameters.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_g92_numbered_parameters.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_rotary_g92_numbered_parameters.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_g52_g92_numbered_interaction.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_g5x_numbered_parameters.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_g59_3_numbered_parameters.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_g59_3_rotary_numbered_parameters.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_g5x_rotary_numbered_parameters.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_g54_rotary_numbered_parameters.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_debug_level_parameter.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_m66_result_parameter.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_tool_offset_numbered_parameters.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_rotary_tool_offset_numbered_parameters.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_current_position_numbered_parameters.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_coordinate_offsets.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_coordinate_l20.json"
echo "dumped $output_dir/cnc_sim_linuxcnc_coordinate_p0.json"