#!/usr/bin/env bash # 统一测试入口。 # # ./run_tests.sh 纯 Python 单元测试(秒级) # ./run_tests.sh --with-render 额外跑渲染桥联测(需 Java + Xvfb,约 4 分钟) # # 渲染联测需要: # MCFOLD_RENDER_CLASSPATH 含 client-named.jar 与 McfoldRenderServer.class # MCFOLD_NATIVES_DIR lwjgl natives(.so) # DISPLAY 指向可用的 X(Xvfb 即可) # 缺任一项会**跳过而非失败**(不误报)。 cd "$(dirname "$0")" WITH_RENDER=0 [ "${1:-}" = "--with-render" ] && WITH_RENDER=1 total=0; fail=0 for t in tests/test_*.py; do name=$(basename "$t") if [ "$name" = "test_render_bridge.py" ] && [ $WITH_RENDER -eq 0 ]; then printf ' %-24s ⊘ 跳过(用 --with-render 启用)\n' "$name" continue fi out=$(python3 "$t" 2>&1) if echo "$out" | grep -qE "全部通过|通过$"; then n=$(echo "$out" | grep -c "^ ✓") total=$((total+n)) printf ' %-24s ✓ %2d 项\n' "$name" "$n" else fail=$((fail+1)) printf ' %-24s ✗ 失败\n' "$name" echo "$out" | tail -6 | sed 's/^/ /' fi done echo if [ $fail -eq 0 ]; then echo "全部通过:$total 项,0 失败" else echo "失败 $fail 个套件(共 $total 项通过)"; exit 1 fi