继续按 align-linuxcnc 约束:补文件读取错误源码覆盖
结论:新增 read_text 和 read_n_number 的 EOF、百分号文件、过长行和 N 行号错误 source-link 断言;依据 LinuxCNC interp_read.cc,未扩展 smoke。
This commit is contained in:
@@ -893,6 +893,38 @@ for case in "${oword_reader_error_cases[@]}"; do
|
||||
fi
|
||||
grep -q "$expected" "$output_dir/cnc_sim_linuxcnc_source_$fixture.err"
|
||||
done
|
||||
# Source basis: LinuxCNC src/emc/rs274ngc/interp_read.cc read_text()
|
||||
# rejects EOF without the matching percent/program end and overlong file
|
||||
# lines; read_n_number() rejects malformed N-line numbers through
|
||||
# read_integer_unsigned().
|
||||
read_text_error_cases=(
|
||||
"linuxcnc_file_ended_no_program_end_error|File ended with no percent sign"
|
||||
"linuxcnc_file_ended_no_percent_error|File ended with no percent sign"
|
||||
"linuxcnc_bad_n_number_format_error|Bad format unsigned integer"
|
||||
)
|
||||
for case in "${read_text_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
|
||||
long_line_fixture="$output_dir/linuxcnc_command_too_long_error.ngc"
|
||||
printf 'G1 X' > "$long_line_fixture"
|
||||
printf '1%.0s' {1..260} >> "$long_line_fixture"
|
||||
printf '\n' >> "$long_line_fixture"
|
||||
if CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
|
||||
"$build_dir/linuxcnc_rs274_source_dump" "$long_line_fixture" \
|
||||
>"$output_dir/cnc_sim_linuxcnc_source_linuxcnc_command_too_long_error.json" 2>"$output_dir/cnc_sim_linuxcnc_source_linuxcnc_command_too_long_error.err"; then
|
||||
echo "expected linuxcnc_command_too_long_error.ngc to fail" >&2
|
||||
exit 1
|
||||
fi
|
||||
grep -q "Command too long" \
|
||||
"$output_dir/cnc_sim_linuxcnc_source_linuxcnc_command_too_long_error.err"
|
||||
if CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
|
||||
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_canned_cycle_reject_rotary_followup.ngc \
|
||||
>"$output_dir/cnc_sim_linuxcnc_source_canned_cycle_reject_rotary_followup.json" 2>"$output_dir/cnc_sim_linuxcnc_source_canned_cycle_reject_rotary_followup.err"; then
|
||||
|
||||
Reference in New Issue
Block a user