From 18f14ca111fccf38edeb38c30ae41bd6e8b98444 Mon Sep 17 00:00:00 2001 From: cnc Date: Wed, 3 Jun 2026 13:42:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=82=E8=80=83=E6=89=80=E6=9C=89=E5=88=86?= =?UTF-8?q?=E7=BB=84=EF=BC=8C=E5=AE=8C=E6=88=90=E5=B0=BD=E9=87=8F=E5=A4=9A?= =?UTF-8?q?=E7=9A=84=E5=86=85=E5=AE=B9=E3=80=82=E7=A6=81=E6=AD=A2=E9=A1=BA?= =?UTF-8?q?=E6=89=8B=E6=89=A9=E5=8A=9F=E8=83=BD=20smoke?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 结论:按 align-linuxcnc 约束增强 kinematics manifest lister 的 all-native 守卫,覆盖 asset/tooldata/generated 分组、full 输出以及未知 filter/output 负例;只收紧源清单约束,不扩展 smoke 行为。 源依据:linuxcnc-kinematics-source-files.txt 中由 ../linuxcnc/configs/sim、src/hal/user_comps、src/objects/hal/components 等 LinuxCNC 源/生成源组成的 kinematics、switchkins、TOOL_TABLE 覆盖。 验证:CNC_SIM_ALL_NATIVE_GUARDRAILS_ONLY=1 ./test-all-native.sh 通过;./test-native.sh 通过;./test-linuxcnc-source-link.sh 通过。 --- test-all-native.sh | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/test-all-native.sh b/test-all-native.sh index b459d8f..217c7ee 100755 --- a/test-all-native.sh +++ b/test-all-native.sh @@ -31,6 +31,8 @@ missing_bridge_source_log=$(mktemp "${TMPDIR:-/tmp}/cnc_sim_missing_bridge_smoke missing_support_object_log=$(mktemp "${TMPDIR:-/tmp}/cnc_sim_missing_linuxcnc_support_object.XXXXXX.log") missing_source_manifest=$(mktemp "${TMPDIR:-/tmp}/cnc_sim_native_syntax_missing_source_manifest.XXXXXX.txt") missing_source_log=$(mktemp "${TMPDIR:-/tmp}/cnc_sim_native_syntax_missing_source.XXXXXX.log") +kinematics_unknown_filter_log=$(mktemp "${TMPDIR:-/tmp}/cnc_sim_kinematics_manifest_unknown_filter.XXXXXX.log") +kinematics_unknown_output_log=$(mktemp "${TMPDIR:-/tmp}/cnc_sim_kinematics_manifest_unknown_output.XXXXXX.log") bad_line_manifest=$(mktemp "${TMPDIR:-/tmp}/cnc_sim_bad_manifest_line.XXXXXX.txt") bad_line_log=$(mktemp "${TMPDIR:-/tmp}/cnc_sim_bad_manifest_line.XXXXXX.log") absolute_source_manifest=$(mktemp "${TMPDIR:-/tmp}/cnc_sim_absolute_manifest_source.XXXXXX.txt") @@ -58,6 +60,8 @@ cleanup_native_test_temps() { "$missing_support_object_log" \ "$missing_source_manifest" \ "$missing_source_log" \ + "$kinematics_unknown_filter_log" \ + "$kinematics_unknown_output_log" \ "$bad_line_manifest" \ "$bad_line_log" \ "$absolute_source_manifest" \ @@ -161,6 +165,8 @@ for forbidden_manual_cleanup in \ 'rm -f "$missing_bridge_source_log"' \ 'rm -f "$missing_support_object_log"' \ 'rm -f "$missing_source_manifest" "$missing_source_log"' \ + 'rm -f "$kinematics_unknown_filter_log"' \ + 'rm -f "$kinematics_unknown_output_log"' \ 'rm -f "$bad_line_manifest" "$bad_line_log"' \ 'rm -f "$absolute_source_manifest" "$absolute_source_log"' \ 'rm -f "$invalid_build_jobs_log"' \ @@ -1051,6 +1057,42 @@ kinematics_manifest_config=$(./list-linuxcnc-kinematics-manifest-sources.sh linu grep -Fx "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini" <<<"$kinematics_manifest_config" >/dev/null grep -Fx "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini" <<<"$kinematics_manifest_config" >/dev/null grep -Fx "configs/sim/axis/vismach/puma/puma560_dh.hal" <<<"$kinematics_manifest_config" >/dev/null +kinematics_manifest_asset=$(./list-linuxcnc-kinematics-manifest-sources.sh linuxcnc-kinematics-source-files.txt asset) +grep -Fx "configs/sim/axis/vismach/5axis/bridgemill/README" <<<"$kinematics_manifest_asset" >/dev/null +grep -Fx "src/hal/user_comps/vismach/5axisgui.py" <<<"$kinematics_manifest_asset" >/dev/null +grep -Fx "share/qtvcp/panels/vismach_scara/vismach_scara.ui" <<<"$kinematics_manifest_asset" >/dev/null +kinematics_manifest_tooldata=$(./list-linuxcnc-kinematics-manifest-sources.sh linuxcnc-kinematics-source-files.txt tooldata) +grep -Fx "configs/sim/axis/vismach/5axis/bridgemill/5axis.tbl" <<<"$kinematics_manifest_tooldata" >/dev/null +grep -Fx "configs/sim/axis/vismach/millturn/millturn.tbl" <<<"$kinematics_manifest_tooldata" >/dev/null +grep -Fx "configs/sim/qtaxis/non-trivial/scara/scara.tbl" <<<"$kinematics_manifest_tooldata" >/dev/null +if [[ "$(grep -Ec '\.tbl$' <<<"$kinematics_manifest_tooldata")" -ne 10 ]]; then + echo "all-native guardrail expected all LinuxCNC switchkins TOOL_TABLE tooldata sources" >&2 + exit 1 +fi +kinematics_manifest_generated=$(./list-linuxcnc-kinematics-manifest-sources.sh linuxcnc-kinematics-source-files.txt generated) +grep -Fx "src/objects/hal/components/xyzab_tdr_kins.c" <<<"$kinematics_manifest_generated" >/dev/null +grep -Fx "src/objects/hal/components/xyzacb_trsrn.c" <<<"$kinematics_manifest_generated" >/dev/null +grep -Fx "src/objects/hal/components/xyzbca_trsrn.c" <<<"$kinematics_manifest_generated" >/dev/null +kinematics_manifest_config_full=$(LINUXCNC_ROOT="$linuxcnc_root" ./list-linuxcnc-kinematics-manifest-sources.sh linuxcnc-kinematics-source-files.txt config full) +grep -Fx "$linuxcnc_root_full/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini" <<<"$kinematics_manifest_config_full" >/dev/null +if ./list-linuxcnc-kinematics-manifest-sources.sh linuxcnc-kinematics-source-files.txt bogus >"$kinematics_unknown_filter_log" 2>&1; then + echo "kinematics manifest source lister accepted unknown filter" >&2 + exit 1 +fi +if ! grep -F "unknown manifest source filter: bogus" "$kinematics_unknown_filter_log" >/dev/null; then + echo "kinematics manifest source lister did not report unknown filter clearly" >&2 + sed -n '1,20p' "$kinematics_unknown_filter_log" >&2 + exit 1 +fi +if ./list-linuxcnc-kinematics-manifest-sources.sh linuxcnc-kinematics-source-files.txt config bogus >"$kinematics_unknown_output_log" 2>&1; then + echo "kinematics manifest source lister accepted unknown output mode" >&2 + exit 1 +fi +if ! grep -F "unknown manifest source output mode: bogus" "$kinematics_unknown_output_log" >/dev/null; then + echo "kinematics manifest source lister did not report unknown output mode clearly" >&2 + sed -n '1,20p' "$kinematics_unknown_output_log" >&2 + exit 1 +fi kinematics_manifest_metadata=$(./list-linuxcnc-kinematics-manifest-sources.sh linuxcnc-kinematics-source-files.txt metadata) grep -Fx "src/objects/man/man9/corexy_by_hal.9.adoc" <<<"$kinematics_manifest_metadata" >/dev/null grep -Fx "src/objects/man/man9/gantry.9.adoc" <<<"$kinematics_manifest_metadata" >/dev/null