Files
wasm-simulator/test-native.sh
cnc de273bf830 接续上一轮:推进浏览器验证与M428配置收拢
结论:已完成浏览器侧真实加载验证,M428/M429/M430 的配置入口进一步从 LinuxCNC INI/HALFILE/REMAP 来源生成,native 与 source-link 验证通过。
2026-05-30 10:03:21 +08:00

136 lines
8.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")"
cxx=${CXX:-g++}
build_dir=$(mktemp -d "${TMPDIR:-/tmp}/cnc_sim_native.XXXXXX")
trap 'rm -rf "$build_dir"' EXIT
./check-linuxcnc-inputs.sh linuxcnc-rs274-source-files.txt --require-rs274-complete
./check-linuxcnc-inputs.sh linuxcnc-rs274-wasm-source-files.txt --require-rs274-complete
./check-linuxcnc-inputs.sh linuxcnc-kinematics-source-files.txt --require-kinematics-complete
./check-linuxcnc-switchkins-remap-table.sh linuxcnc-kinematics-source-files.txt
grep -F '#include "linuxcnc_switchkins_remap_table.inc"' core/src/cnc_sim_api.cpp >/dev/null
grep -F 'switchkins: options.switchkins' web/src/wasm-core.js >/dev/null
grep -F 'kinematics: options.kinematics' web/src/wasm-core.js >/dev/null
grep -F 'pivotLength: options.pivotLength' web/src/wasm-core.js >/dev/null
grep -F 'xyzbcTrt: options.xyzbcTrt' web/src/wasm-core.js >/dev/null
grep -F 'globalThis.createCncSimModule' web/src/wasm-core.js >/dev/null
grep -F 'createModule(moduleOptions)' web/src/wasm-core.js >/dev/null
grep -F 'export type CncParseOptions' web/src/index.ts >/dev/null
grep -F '): CncEvent[];' web/src/index.ts >/dev/null
grep -F 'options?: CncParseOptions' web/src/wasm-core.d.ts >/dev/null
grep -F 'export type WasmModuleOptions' web/src/wasm-core.d.ts >/dev/null
grep -F 'printErr?: (text: string) => void;' web/src/wasm-core.d.ts >/dev/null
grep -F '"moduleResolution": "Bundler"' web/tsconfig.json >/dev/null
grep -F '"include": ["src/index.ts", "src/**/*.d.ts"]' web/tsconfig.json >/dev/null
grep -F 'createWasmSimulator' test-web-wasm-node-smoke.cjs >/dev/null
grep -F 'locateFile: (file) => path.join(wasmDir, file)' test-web-wasm-node-smoke.cjs >/dev/null
grep -F 'printErr: () => {}' test-web-wasm-node-smoke.cjs >/dev/null
grep -F 'expected web wasm-core options to pass LinuxCNC xyzac-trt RTCP config into WASM' test-web-wasm-node-smoke.cjs >/dev/null
grep -F 'node test-web-wasm-node-smoke.cjs' test-web-wasm-node-smoke.sh >/dev/null
grep -F 'createWasmSimulator' web/test-browser-wasm-smoke.html >/dev/null
grep -F 'browser wasm smoke passed' web/test-browser-wasm-smoke.html >/dev/null
grep -F 'chromium chromium-browser google-chrome' test-web-wasm-browser-smoke.sh >/dev/null
grep -F 'browser wasm smoke passed' test-web-wasm-browser-smoke.sh >/dev/null
kinematics_manifest_sources="$build_dir/linuxcnc_kinematics_manifest_sources.txt"
./list-linuxcnc-kinematics-manifest-sources.sh linuxcnc-kinematics-source-files.txt all > "$kinematics_manifest_sources"
grep -Fx "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/axis/vismach/5axis/bridgemill/5axis.ini" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/axis/vismach/hexapod-sim/hexapod.ini" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/axis/vismach/melfa-sim/melfa.ini" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/axis/vismach/millturn/millturn.ini" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/axis/vismach/puma/puma.ini" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/axis/vismach/puma/puma_cube.ini" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/axis/vismach/puma/puma560.ini" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/axis/vismach/puma/puma560_uvw.ini" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/axis/vismach/scara/scara.ini" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/qtaxis/non-trivial/scara/scara.ini" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/qtvcp_screens/non-trivial/scara/scara.ini" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/axis/vismach/puma/puma560_dh.hal" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/axis/vismach/5axis/bridgemill/remap_subs/428remap.ngc" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/axis/vismach/5axis/table-dual-rotary/remap_subs/428remap.ngc" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/430remap.ngc" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/429remap.ngc" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/axis/vismach/hexapod-sim/remap_subs/430remap.ngc" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/axis/vismach/melfa-sim/remap_subs/429remap.ngc" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/axis/vismach/millturn/remap_subs/429remap.ngc" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/axis/vismach/puma/remap_subs/430remap.ngc" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/axis/vismach/scara/remap_subs/428remap.ngc" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/qtaxis/non-trivial/scara/remap_subs/429remap.ngc" "$kinematics_manifest_sources" >/dev/null
grep -Fx "configs/sim/qtvcp_screens/non-trivial/scara/remap_subs/430remap.ngc" "$kinematics_manifest_sources" >/dev/null
if [[ "$(grep -Ec '/remap_subs/(428|429|430)remap\.ngc$' "$kinematics_manifest_sources")" -ne 31 ]]; then
echo "expected kinematics manifest to cover all LinuxCNC M428/M429/M430 remap sources" >&2
exit 1
fi
grep -Fx "src/hal/components/xyzab_tdr_kins.comp" "$kinematics_manifest_sources" >/dev/null
grep -Fx "src/objects/hal/components/xyzab_tdr_kins.c" "$kinematics_manifest_sources" >/dev/null
grep -Fx "src/hal/components/xyzacb_trsrn.comp" "$kinematics_manifest_sources" >/dev/null
grep -Fx "src/objects/hal/components/xyzacb_trsrn.c" "$kinematics_manifest_sources" >/dev/null
grep -Fx "src/hal/components/xyzbca_trsrn.comp" "$kinematics_manifest_sources" >/dev/null
grep -Fx "src/objects/hal/components/xyzbca_trsrn.c" "$kinematics_manifest_sources" >/dev/null
grep -Fx "src/hal/components/matrixkins.comp" "$kinematics_manifest_sources" >/dev/null
grep -Fx "src/objects/hal/components/matrixkins.c" "$kinematics_manifest_sources" >/dev/null
grep -Fx "src/hal/components/userkins.comp" "$kinematics_manifest_sources" >/dev/null
grep -Fx "src/objects/hal/components/userkins.c" "$kinematics_manifest_sources" >/dev/null
core_source_list="$build_dir/cnc_sim_core_sources.txt"
./list-cnc-sim-core-sources.sh --with-smoke > "$core_source_list"
mapfile -t core_sources < "$core_source_list"
smoke_cxxflags=(-std=c++17 -fpermissive -DCNC_SIM_ENABLE_SMOKE_BACKEND -I core/include -I core/src -I ../linuxcnc/include)
"$cxx" "${smoke_cxxflags[@]}" \
"${core_sources[@]}" \
core/tests/canon_event_sink_smoke.cpp \
-o "$build_dir/canon_event_sink_smoke"
"$cxx" "${smoke_cxxflags[@]}" \
"${core_sources[@]}" \
core/tests/rtcp_kinematics_smoke.cpp \
-o "$build_dir/rtcp_kinematics_smoke"
"$cxx" "${smoke_cxxflags[@]}" \
core/tests/linuxcnc_gees_table_smoke.cpp \
-o "$build_dir/linuxcnc_gees_table_smoke"
"$cxx" "${smoke_cxxflags[@]}" \
"${core_sources[@]}" \
core/tests/simulator_gcode_controls_smoke.cpp \
-o "$build_dir/simulator_gcode_controls_smoke"
"$cxx" "${smoke_cxxflags[@]}" \
"${core_sources[@]}" \
core/tests/cnc_sim_api_smoke.cpp \
-o "$build_dir/cnc_sim_api_smoke"
"$cxx" "${smoke_cxxflags[@]}" \
"${core_sources[@]}" \
core/tools/cnc_sim_dump.cpp \
-o "$build_dir/cnc_sim_dump"
"$build_dir/canon_event_sink_smoke"
"$build_dir/rtcp_kinematics_smoke"
"$build_dir/linuxcnc_gees_table_smoke"
"$build_dir/simulator_gcode_controls_smoke"
"$build_dir/cnc_sim_api_smoke"
./test-web-wasm-node-smoke.sh
./test-web-wasm-browser-smoke.sh
basic_mill_json="$build_dir/cnc_sim_basic_mill.json"
incremental_arc_json="$build_dir/cnc_sim_incremental_and_r_arc.json"
subprogram_m98_json="$build_dir/cnc_sim_smoke_subprogram_m98.json"
oword_subprogram_json="$build_dir/cnc_sim_smoke_oword_subprogram.json"
"$build_dir/cnc_sim_dump" tests/gcode/basic_mill.ngc >"$basic_mill_json"
"$build_dir/cnc_sim_dump" tests/gcode/incremental_and_r_arc.ngc >"$incremental_arc_json"
"$build_dir/cnc_sim_dump" tests/gcode/smoke_subprogram_m98.ngc >"$subprogram_m98_json"
"$build_dir/cnc_sim_dump" tests/gcode/smoke_oword_subprogram.ngc >"$oword_subprogram_json"
echo "native tests passed"
echo "dumped $basic_mill_json"
echo "dumped $incremental_arc_json"
echo "dumped $subprogram_m98_json"
echo "dumped $oword_subprogram_json"