继续按 align-linuxcnc 约束:补齐 read_operation 源码错误覆盖

结论:覆盖 LinuxCNC interp_read.cc read_operation() 的未知二元操作名前缀、未知操作字符和未闭合表达式错误;未扩展 smoke。

验证:./test-native.sh;./test-linuxcnc-source-link.sh。
This commit is contained in:
cnc
2026-06-02 16:10:03 +08:00
parent 3f5c3faf25
commit b4d0bfae46
12 changed files with 48 additions and 1 deletions

View File

@@ -627,6 +627,33 @@ if CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
fi
grep -q "Unknown word starting with a" \
"$output_dir/cnc_sim_linuxcnc_source_unary_unknown_word_error.err"
# Source basis: LinuxCNC src/emc/rs274ngc/interp_read.cc
# read_operation() rejects unknown binary operation names by prefix,
# unknown operation characters, and expressions that reach end-of-line
# before a right bracket.
binary_operation_error_cases=(
"linuxcnc_binary_unknown_a_operation_error|Unknown operation name starting with a"
"linuxcnc_binary_unknown_e_operation_error|Unknown operation name starting with e"
"linuxcnc_binary_unknown_g_operation_error|Unknown operation name starting with g"
"linuxcnc_binary_unknown_l_operation_error|Unknown operation name starting with l"
"linuxcnc_binary_unknown_m_operation_error|Unknown operation name starting with m"
"linuxcnc_binary_unknown_n_operation_error|Unknown operation name starting with n"
"linuxcnc_binary_unknown_o_operation_error|Unknown operation name starting with o"
"linuxcnc_binary_unknown_x_operation_error|Unknown operation name starting with x"
"linuxcnc_binary_unknown_operation_error|Unknown operation"
"linuxcnc_unclosed_expression_error|Unclosed expression"
)
for case in "${binary_operation_error_cases[@]}"; do
fixture=${case%%|*}
expected=${case#*|}
if CNC_SIM_RS274_FILE_MODE=1 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 -q "$expected" "$output_dir/cnc_sim_linuxcnc_source_$fixture.err"
done
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_value_returned.ngc \
>"$output_dir/cnc_sim_linuxcnc_source_value_returned.json"