Files
cnc_wams/wasm-port/tools/verify_task_standalone_emc_status.sh
2026-07-08 09:20:47 -04:00

73 lines
3.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
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"
SDK_TEST="$ROOT_DIR/tests/wasm/node/verify_task_hal_sdk.mjs"
STATE_MATRIX="$ROOT_DIR/tests/wasm/node/verify_task_state_matrix.mjs"
SOURCE_REUSE="$ROOT_DIR/docs/source-reuse-map.md"
DRIFT="$ROOT_DIR/docs/drift-report.md"
COMPAT="$ROOT_DIR/docs/compatibility-validation.md"
MATRIX="$ROOT_DIR/working/04-任务矩阵.md"
fail() {
printf 'task_standalone_emc_status_status=fail\n'
printf 'task_standalone_emc_status_error=%s\n' "$1"
exit 1
}
require_file() {
local label="$1"
local file="$2"
[[ -f "$file" ]] || fail "$label missing: $file"
printf 'task_standalone_emc_status_%s=ok\n' "$label"
}
require_text() {
local label="$1"
local file="$2"
local text="$3"
grep -Fq "$text" "$file" || fail "$label missing"
printf 'task_standalone_emc_status_%s=ok\n' "$label"
}
require_file task_wrapper "$TASK_WRAPPER"
require_file wasm_test "$WASM_TEST"
require_file sdk_test "$SDK_TEST"
require_file state_matrix "$STATE_MATRIX"
require_file source_reuse "$SOURCE_REUSE"
require_file drift "$DRIFT"
require_file compatibility "$COMPAT"
require_file matrix "$MATRIX"
require_text wrapper_status_struct "$TASK_WRAPPER" "struct StandaloneEmcStatus"
require_text wrapper_task_struct "$TASK_WRAPPER" "struct StandaloneEmcTaskStatus"
require_text wrapper_motion_struct "$TASK_WRAPPER" "struct StandaloneEmcMotionStatus"
require_text wrapper_io_struct "$TASK_WRAPPER" "struct StandaloneEmcIoStatus"
require_text wrapper_sync "$TASK_WRAPPER" "sync_standalone_emc_status"
require_text wrapper_status_source "$TASK_WRAPPER" 'statusSource'
require_text wrapper_emc_status_json "$TASK_WRAPPER" 'emcStatus'
require_text wrapper_task_from_container "$TASK_WRAPPER" "const StandaloneEmcTaskStatus &task_status = emc_status.task"
require_text wrapper_motion_from_container "$TASK_WRAPPER" "const StandaloneEmcMotionStatus &motion = emc_status.motion"
require_text wasm_status "$WASM_TEST" "standalone_emc_status_container=ok"
require_text wasm_source "$WASM_TEST" 'snapshot.statusSource, "StandaloneEmcStatus"'
require_text wasm_top_match "$WASM_TEST" "snapshot.emcStatus.top.status, snapshot.taskTopLevelStatus"
require_text wasm_motion_match "$WASM_TEST" "snapshot.emcStatus.motion.programLine, snapshot.motionStatus.motion.programLine"
require_text sdk_status "$SDK_TEST" "task_hal_sdk_standalone_emc_status=ok"
require_text sdk_source "$SDK_TEST" 'status.statusSource, "StandaloneEmcStatus"'
require_text state_matrix_status "$STATE_MATRIX" "standalone_emc_status_matrix=ok"
require_text state_matrix_helper "$STATE_MATRIX" "function assertStandaloneEmcStatus(status)"
require_text docs_source "$SOURCE_REUSE" 'T-007 adds `StandaloneEmcStatus`'
require_text docs_drift "$DRIFT" "T-007 StandaloneEmcStatus"
require_text docs_compat_gate "$COMPAT" "tools/verify_task_standalone_emc_status.sh"
require_text docs_compat_status "$COMPAT" "standalone_emc_status_container=ok"
require_text matrix_t007_done "$MATRIX" '| T-007 | 建立 `EMC_STAT` 等价状态容器 | 完成 |'
require_text matrix_next_none "$MATRIX" '下一条优先任务:无'
printf 'task_standalone_emc_status_status=ok\n'