Cover probe moves in source link tests

This commit is contained in:
cnc
2026-05-22 17:28:10 +08:00
parent ea2c9c2ba9
commit 49c2581292
2 changed files with 18 additions and 0 deletions

View File

@@ -194,6 +194,7 @@ This matrix tracks LinuxCNC feature coverage for the web/WASM simulator. A featu
| Canned cycle `G81/G80` | covered for drilling expand-to-canon path | `tests/gcode/linuxcnc_canned_cycle.ngc` | | Canned cycle `G81/G80` | covered for drilling expand-to-canon path | `tests/gcode/linuxcnc_canned_cycle.ngc` |
| Coordinate offset Canon events `G10 L2`, `G10 L20`, `G92/G92.1` | covered through LinuxCNC native/source backends | `tests/gcode/linuxcnc_coordinate_offsets.ngc`, `tests/gcode/linuxcnc_coordinate_l20.ngc` | | Coordinate offset Canon events `G10 L2`, `G10 L20`, `G92/G92.1` | covered through LinuxCNC native/source backends | `tests/gcode/linuxcnc_coordinate_offsets.ngc`, `tests/gcode/linuxcnc_coordinate_l20.ngc` |
| Cutter compensation | covered for tool-table `G41/G42 D...` and explicit-radius `G41.1/G42.1/G40` through LinuxCNC native/source backends | `tests/gcode/linuxcnc_cutter_comp.ngc` | | Cutter compensation | covered for tool-table `G41/G42 D...` and explicit-radius `G41.1/G42.1/G40` through LinuxCNC native/source backends | `tests/gcode/linuxcnc_cutter_comp.ngc` |
| Probe move `G38.3` | covered as a distinct probe event through LinuxCNC native/source backends | `tests/gcode/linuxcnc_probe_no_error.ngc` |
| O-word subroutines and calls | covered for numeric `O... sub/call/return/endsub` through LinuxCNC file mode; smoke parser also covers named `O<name>` sub/call/return/endsub | `tests/gcode/smoke_oword_subprogram.ngc` | | O-word subroutines and calls | covered for numeric `O... sub/call/return/endsub` through LinuxCNC file mode; smoke parser also covers named `O<name>` sub/call/return/endsub | `tests/gcode/smoke_oword_subprogram.ngc` |
| Broader canned cycles `G73`, `G82`-`G89` | partially covered: `G73`, `G82`, `G83`, `G85`, `G86`, `G89` | `tests/gcode/linuxcnc_canned_cycles_extended.ngc`, smoke API regression | | Broader canned cycles `G73`, `G82`-`G89` | partially covered: `G73`, `G82`, `G83`, `G85`, `G86`, `G89` | `tests/gcode/linuxcnc_canned_cycles_extended.ngc`, smoke API regression |
| Full source-level wasm build | pending | replace Python/HAL/INI/tooldata support dependencies | | Full source-level wasm build | pending | replace Python/HAL/INI/tooldata support dependencies |

View File

@@ -115,6 +115,9 @@ CNC_SIM_RS274_VAR="$var_file" \
CNC_SIM_RS274_VAR="$var_file" \ CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_cutter_comp.ngc \ "$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_cutter_comp.ngc \
>/tmp/cnc_sim_linuxcnc_source_cutter_comp.json >/tmp/cnc_sim_linuxcnc_source_cutter_comp.json
CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_probe_no_error.ngc \
>/tmp/cnc_sim_linuxcnc_source_probe_no_error.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \ CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/smoke_oword_subprogram.ngc \ "$build_dir/linuxcnc_rs274_source_dump" tests/gcode/smoke_oword_subprogram.ngc \
>/tmp/cnc_sim_linuxcnc_source_oword_subprogram.json >/tmp/cnc_sim_linuxcnc_source_oword_subprogram.json
@@ -251,6 +254,19 @@ actual_cutter_comp = [
if actual_cutter_comp != expected_cutter_comp: if actual_cutter_comp != expected_cutter_comp:
raise SystemExit(f"unexpected source-linked cutter compensation path: {actual_cutter_comp!r}") raise SystemExit(f"unexpected source-linked cutter compensation path: {actual_cutter_comp!r}")
probe = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_probe_no_error.json").read_text())
if not any(
event["type"] == "probe" and
event["line"] == 4 and
event["feed"] == 100 and
event["start"]["z"] == 5 and
event["end"]["z"] == 0
for event in probe
):
raise SystemExit("missing source-linked G38.3 probe event")
if any(event["type"] == "linear-feed" and event["line"] == 4 for event in probe):
raise SystemExit("source-linked G38.3 probe should not be emitted as linear-feed")
oword = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_oword_subprogram.json").read_text()) oword = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_oword_subprogram.json").read_text())
if not any( if not any(
event["type"] == "linear-feed" and event["type"] == "linear-feed" and
@@ -324,6 +340,7 @@ echo "dumped /tmp/cnc_sim_linuxcnc_source_tool_length.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_canned_cycle.json" echo "dumped /tmp/cnc_sim_linuxcnc_source_canned_cycle.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_canned_cycles_extended.json" echo "dumped /tmp/cnc_sim_linuxcnc_source_canned_cycles_extended.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_cutter_comp.json" echo "dumped /tmp/cnc_sim_linuxcnc_source_cutter_comp.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_probe_no_error.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_oword_subprogram.json" echo "dumped /tmp/cnc_sim_linuxcnc_source_oword_subprogram.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_coordinate_offsets.json" echo "dumped /tmp/cnc_sim_linuxcnc_source_coordinate_offsets.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_coordinate_l20.json" echo "dumped /tmp/cnc_sim_linuxcnc_source_coordinate_l20.json"