feat(win): T-WIN-011 Windows 打包与一键验证脚本
This commit is contained in:
Executable
+89
@@ -0,0 +1,89 @@
|
||||
#!/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 "============================================================"
|
||||
Reference in New Issue
Block a user