Files
cnc_wams/wasm-port/tools/verify_task_emctask_state_mode.sh
2026-07-10 03:22:55 -04:00

65 lines
2.6 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
LINUXCNC_ROOT="${LINUXCNC_ROOT:-$ROOT_DIR/../linuxcnc}"
UPSTREAM="$LINUXCNC_ROOT/src/emc/task/emctask.cc"
SUBSET_SRC="$ROOT_DIR/runtime/core/linuxcnc_task_subset/emctask_wasm_subset.cc"
SUBSET_HDR="$ROOT_DIR/runtime/core/linuxcnc_task_subset/emctask_wasm_subset.hh"
TASK_WRAPPER="$ROOT_DIR/runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp"
WASM_TEST="$ROOT_DIR/tests/wasm/node/verify_task_hal_wasm.mjs"
STATE_MATRIX="$ROOT_DIR/tests/wasm/node/verify_task_state_matrix.mjs"
MATRIX="$ROOT_DIR/working/04-任务矩阵.md"
fail() {
printf 'task_emctask_state_mode_status=fail\n'
printf 'task_emctask_state_mode_error=%s\n' "$1"
exit 1
}
require_file() {
local label="$1"
local file="$2"
[[ -f "$file" ]] || fail "$label missing: $file"
printf 'task_emctask_state_mode_%s=ok\n' "$label"
}
require_text() {
local label="$1"
local file="$2"
local text="$3"
grep -Fq "$text" "$file" || fail "$label missing"
printf 'task_emctask_state_mode_%s=ok\n' "$label"
}
require_file upstream "$UPSTREAM"
require_file subset_source "$SUBSET_SRC"
require_file subset_header "$SUBSET_HDR"
require_file task_wrapper "$TASK_WRAPPER"
require_file wasm_test "$WASM_TEST"
require_file state_matrix "$STATE_MATRIX"
require_file matrix "$MATRIX"
for fn in emcTaskAbort emcTaskSetMode emcTaskSetState; do
require_text "upstream_$fn" "$UPSTREAM" "int $fn("
done
require_text subset_result_type "$SUBSET_HDR" "LcEmcTaskSubsetCommandResult"
require_text subset_abort_fn "$SUBSET_HDR" "lc_emctask_subset_abort"
require_text subset_mode_fn "$SUBSET_HDR" "lc_emctask_subset_set_mode"
require_text subset_state_fn "$SUBSET_HDR" "lc_emctask_subset_set_state"
require_text subset_anchor "$SUBSET_SRC" "emcTaskAbort,emcTaskSetMode,emcTaskSetState,emcTaskPlanSynch,emcTaskPlanClose,emcTaskPlanReset"
require_text wrapper_uses_abort "$TASK_WRAPPER" "lc_emctask_subset_abort"
require_text wrapper_uses_mode "$TASK_WRAPPER" "lc_emctask_subset_set_mode"
require_text wrapper_uses_state "$TASK_WRAPPER" "lc_emctask_subset_set_state"
require_text wrapper_result_apply "$TASK_WRAPPER" "apply_emctask_command_result"
require_text wrapper_status_count "$TASK_WRAPPER" "stateModeIssueCount"
require_text wasm_test_asserts "$WASM_TEST" "stateModeAnchors"
require_text state_matrix_gate "$STATE_MATRIX" "task_state_matrix=ok"
require_text matrix_t037_done "$MATRIX" '| T-037 | `emctask.cc` abort/state/mode 子集 | 完成 |'
require_text matrix_t038_done "$MATRIX" '| T-038 | `emctask.cc` determine/update 子集 | 完成 |'
printf 'task_emctask_state_mode_status=ok\n'