继续按 align-linuxcnc 约束:补齐 read_operation 源码错误覆盖
结论:覆盖 LinuxCNC interp_read.cc read_operation() 的未知二元操作名前缀、未知操作字符和未闭合表达式错误;未扩展 smoke。 验证:./test-native.sh;./test-linuxcnc-source-link.sh。
This commit is contained in:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user