Files
opendance-windows/build/verify.sh
T

90 lines
2.9 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# ============================================================
# OpenDance Studio —— Windows 客户端一键验证
#
# 依次执行:脚本编译检查 → 无头单元/集成测试 → 应用启动检查
# 任一环节失败即退出非 0。
#
# 用法:GODOT_BIN=/path/to/godot bash build/verify.sh
# ============================================================
set -uo pipefail
PROJECT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
cd "$PROJECT_DIR"
GODOT_BIN="${GODOT_BIN:-}"
if [ -z "$GODOT_BIN" ]; then
for candidate in godot godot4 Godot; do
if command -v "$candidate" >/dev/null 2>&1; then GODOT_BIN="$candidate"; break; fi
done
fi
if [ -z "$GODOT_BIN" ]; then
echo "错误:未找到 Godot。请用 GODOT_BIN=<路径> 指定。" >&2
exit 1
fi
FAILED=0
echo "============================================================"
echo " 1/3 脚本编译检查"
echo "============================================================"
IMPORT_LOG=$(mktemp)
"$GODOT_BIN" --headless --path "$PROJECT_DIR" --import >"$IMPORT_LOG" 2>&1
if grep -qE "SCRIPT ERROR|Parse Error|Compile Error" "$IMPORT_LOG"; then
echo "✗ 存在脚本编译错误:"
grep -E "SCRIPT ERROR|Parse Error|Compile Error" "$IMPORT_LOG" | head -20
FAILED=1
else
echo "✓ 全部脚本编译通过"
fi
rm -f "$IMPORT_LOG"
echo ""
echo "============================================================"
echo " 2/3 无头测试(单元 + 真实 API 集成)"
echo "============================================================"
TEST_LOG=$(mktemp)
"$GODOT_BIN" --headless --path "$PROJECT_DIR" --script res://tests/run_tests.gd >"$TEST_LOG" 2>&1
TEST_STATUS=$?
grep -E "^(== 结果|全部通过)" "$TEST_LOG" || true
if [ "$TEST_STATUS" -ne 0 ]; then
echo "✗ 测试失败(退出码 $TEST_STATUS)"
grep -E "✗" "$TEST_LOG" | head -20
FAILED=1
else
echo "✓ 测试全部通过"
fi
rm -f "$TEST_LOG"
echo ""
echo "============================================================"
echo " 3/3 应用启动检查(180 帧)"
echo "============================================================"
RUN_LOG=$(mktemp)
timeout 120 "$GODOT_BIN" --headless --path "$PROJECT_DIR" --quit-after 180 >"$RUN_LOG" 2>&1
RUN_STATUS=$?
if [ "$RUN_STATUS" -ne 0 ]; then
echo "✗ 启动失败(退出码 $RUN_STATUS)"
tail -20 "$RUN_LOG"
FAILED=1
elif grep -qE "SCRIPT ERROR|ERROR:" "$RUN_LOG"; then
echo "✗ 启动过程有错误:"
grep -E "SCRIPT ERROR|ERROR:" "$RUN_LOG" | head -10
FAILED=1
else
echo "✓ 应用启动正常,无运行时错误"
fi
rm -f "$RUN_LOG"
echo ""
if [ "$FAILED" -ne 0 ]; then
echo "============================================================"
echo " 验证失败"
echo "============================================================"
exit 1
fi
echo "============================================================"
echo " 验证全部通过"
echo "============================================================"