继续按 align-linuxcnc 约束:补 convert_m 参数错误源码覆盖,测试通过

This commit is contained in:
cnc
2026-06-02 19:36:22 +08:00
parent 7e15a99d28
commit e875496fe0
14 changed files with 68 additions and 3 deletions

View File

@@ -199,6 +199,35 @@ CNC_SIM_RS274_VAR="$var_file" \
CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_io_controls.ngc \
>"$output_dir/cnc_sim_linuxcnc_source_io_controls.json"
# Source basis: LinuxCNC src/emc/rs274ngc/interp_convert.cc convert_m()
# validates M62-M68 input/output words, M61 Q tool numbers, and M19 Q wait
# values before issuing Canon output/input, tool, or spindle-orient calls.
convert_m_error_cases=(
"linuxcnc_m62_missing_p_word_error|No valid P word with M62"
"linuxcnc_m63_missing_p_word_error|No valid P word with M63"
"linuxcnc_m64_missing_p_word_error|No valid P word with M64"
"linuxcnc_m65_missing_p_word_error|No valid P word with M65"
"linuxcnc_m66_missing_input_error|Need to have either a valid P or a valid E word with M66"
"linuxcnc_m66_both_inputs_error|Invalid to select both a digital and an analog input with M66"
"linuxcnc_m66_zero_timeout_error|Zero timeout with wait type != immediate return"
"linuxcnc_m66_analog_wait_error|Can't select analog input with wait type != immediate return"
"linuxcnc_m67_missing_e_word_error|Invalid analog index with M67"
"linuxcnc_m68_missing_e_word_error|Invalid analog index with M68"
"linuxcnc_m19_zero_q_error|Q word with M19 requires a value > 0"
"linuxcnc_m61_negative_q_error|Need non-negative Q-word to specify tool number with M61"
)
for case in "${convert_m_error_cases[@]}"; do
fixture=${case%%|*}
expected=${case#*|}
if CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" "tests/gcode/$fixture.ngc" \
>"$output_dir/cnc_sim_linuxcnc_source_$fixture.json" \
2>"$output_dir/cnc_sim_linuxcnc_source_$fixture.err"; then
echo "expected $fixture.ngc to fail" >&2
exit 1
fi
grep -Fq "$expected" "$output_dir/cnc_sim_linuxcnc_source_$fixture.err"
done
CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_override_controls.ngc \
>"$output_dir/cnc_sim_linuxcnc_source_override_controls.json"