继续按 align-linuxcnc 约束:补词读取 native 覆盖,测试通过

This commit is contained in:
cnc
2026-06-02 23:20:55 +08:00
parent cc05532528
commit c52ecc09eb
2 changed files with 62 additions and 1 deletions

View File

@@ -189,6 +189,67 @@ for case in "${gm_reader_error_cases[@]}"; do
fi
grep -Fq "$expected" "$output_dir/cnc_sim_linuxcnc_$fixture.err"
done
# Source basis: LinuxCNC src/emc/rs274ngc/interp_read.cc
# read_f()/read_g()/read_h()/read_l()/read_m()/read_s()/read_t()
# reject negative word values before command execution.
negative_word_error_cases=(
"linuxcnc_negative_f_word_error|Negative f word used"
"linuxcnc_negative_g_code_error|Negative g code used"
"linuxcnc_negative_h_word_error|Negative h word used"
"linuxcnc_negative_l_word_error|Negative l word used"
"linuxcnc_negative_m_code_error|Negative m code used"
"linuxcnc_negative_s_word_error|Negative spindle speed used"
"linuxcnc_negative_t_word_error|Negative tool id (tool not found)"
)
for case in "${negative_word_error_cases[@]}"; do
fixture=${case%%|*}
expected=${case#*|}
if CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_dump" "tests/gcode/$fixture.ngc" \
>"$output_dir/cnc_sim_linuxcnc_$fixture.json" 2>"$output_dir/cnc_sim_linuxcnc_$fixture.err"; then
echo "expected $fixture.ngc to fail" >&2
exit 1
fi
grep -Fq "$expected" "$output_dir/cnc_sim_linuxcnc_$fixture.err"
done
# Source basis: LinuxCNC src/emc/rs274ngc/interp_read.cc
# the word-specific reader functions reject repeated words while
# filling a single block.
multiple_word_error_cases=(
"linuxcnc_multiple_a_words_error|Multiple a words on one line"
"linuxcnc_multiple_b_words_error|Multiple b words on one line"
"linuxcnc_multiple_c_words_error|Multiple c words on one line"
"linuxcnc_multiple_d_words_error|Multiple d words on one line"
"linuxcnc_multiple_e_words_error|Multiple e words on one line"
"linuxcnc_multiple_f_words_error|Multiple f words on one line"
"linuxcnc_multiple_h_words_error|Multiple h words on one line"
"linuxcnc_multiple_i_words_error|Multiple i words on one line"
"linuxcnc_multiple_j_words_error|Multiple j words on one line"
"linuxcnc_multiple_k_words_error|Multiple k words on one line"
"linuxcnc_multiple_l_words_error|Multiple l words on one line"
"linuxcnc_multiple_p_words_error|Multiple p words on one line"
"linuxcnc_multiple_q_words_error|Multiple q words on one line"
"linuxcnc_multiple_r_words_error|Multiple r words on one line"
"linuxcnc_multiple_s_words_error|Multiple s words on one line"
"linuxcnc_multiple_t_words_error|Multiple t words on one line"
"linuxcnc_multiple_u_words_error|Multiple U words on one line"
"linuxcnc_multiple_v_words_error|Multiple V words on one line"
"linuxcnc_multiple_w_words_error|Multiple W words on one line"
"linuxcnc_multiple_x_words_error|Multiple x words on one line"
"linuxcnc_multiple_y_words_error|Multiple y words on one line"
"linuxcnc_multiple_z_words_error|Multiple z words on one line"
)
for case in "${multiple_word_error_cases[@]}"; do
fixture=${case%%|*}
expected=${case#*|}
if CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_dump" "tests/gcode/$fixture.ngc" \
>"$output_dir/cnc_sim_linuxcnc_$fixture.json" 2>"$output_dir/cnc_sim_linuxcnc_$fixture.err"; then
echo "expected $fixture.ngc to fail" >&2
exit 1
fi
grep -Fq "$expected" "$output_dir/cnc_sim_linuxcnc_$fixture.err"
done
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_threading_sync.ngc >"$output_dir/cnc_sim_linuxcnc_threading_sync.json"
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_threading_cycle.ngc >"$output_dir/cnc_sim_linuxcnc_threading_cycle.json"
# Source basis: LinuxCNC src/emc/rs274ngc/interp_convert.cc