Files
hexo-deploy/test/v0.0.3/linux/start_simple.sh
2025-06-02 11:27:10 +08:00

89 lines
2.7 KiB
Bash

#!/bin/bash
# Docker Hexo Static Blog v0.0.3 - Linux Complete Test Suite Startup Script (Simplified)
# 完整测试套件启动脚本 (简化版)
# 配置参数
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
DOCKERFILE_DIR="$(cd "$SCRIPT_DIR/../../../" && pwd)"
LOG_DIR="$SCRIPT_DIR/logs"
# 测试脚本数组
TESTS=(
"build_test.sh"
"run_test.sh"
"functional_test.sh"
"log_rotation_test.sh"
"cleanup_test.sh"
)
# 创建日志目录
mkdir -p "$LOG_DIR"
SUITE_LOG="$LOG_DIR/test_suite_$(date +%Y%m%d_%H%M%S).log"
echo "=== Docker Hexo Static Blog v0.0.3 - Linux 完整测试套件 ===" | tee "$SUITE_LOG"
echo "开始时间: $(date)" | tee -a "$SUITE_LOG"
echo "脚本位置: $SCRIPT_DIR" | tee -a "$SUITE_LOG"
echo "Dockerfile 位置: $DOCKERFILE_DIR" | tee -a "$SUITE_LOG"
echo "日志位置: $LOG_DIR" | tee -a "$SUITE_LOG"
echo "" | tee -a "$SUITE_LOG"
# 清理旧资源(如果指定)
if [ "${1:-}" = "--clean-start" ]; then
echo "清理旧的测试资源..." | tee -a "$SUITE_LOG"
docker stop hexo-test-v003 2>/dev/null || true
docker rm hexo-test-v003 2>/dev/null || true
docker rmi hexo-test:v0.0.3 2>/dev/null || true
fi
# 设置测试脚本权限
chmod +x "$SCRIPT_DIR"/*.sh
# 运行测试
passed_tests=0
failed_tests=0
total_tests=${#TESTS[@]}
for i in "${!TESTS[@]}"; do
current=$((i + 1))
script_name="${TESTS[$i]}"
echo "[$current/$total_tests] 运行测试: $script_name" | tee -a "$SUITE_LOG"
test_log="$LOG_DIR/${script_name%.sh}_$(date +%Y%m%d_%H%M%S).log"
# 运行测试脚本
if bash "$SCRIPT_DIR/$script_name" > "$test_log" 2>&1; then
echo "$script_name 测试通过" | tee -a "$SUITE_LOG"
((passed_tests++))
else
echo "$script_name 测试失败" | tee -a "$SUITE_LOG"
echo " 详细日志: $test_log" | tee -a "$SUITE_LOG"
echo " 最后10行错误:" | tee -a "$SUITE_LOG"
tail -10 "$test_log" | sed 's/^/ /' | tee -a "$SUITE_LOG"
((failed_tests++))
# 默认继续执行其他测试
if [ "${CONTINUE_ON_FAILURE:-true}" != "true" ]; then
echo "测试失败,停止执行" | tee -a "$SUITE_LOG"
break
fi
fi
echo "" | tee -a "$SUITE_LOG"
done
# 生成最终报告
echo "=== 测试套件执行完成 ===" | tee -a "$SUITE_LOG"
echo "结束时间: $(date)" | tee -a "$SUITE_LOG"
echo "通过测试: $passed_tests/$total_tests" | tee -a "$SUITE_LOG"
echo "失败测试: $failed_tests/$total_tests" | tee -a "$SUITE_LOG"
if [ $failed_tests -eq 0 ]; then
echo "🎉 所有测试都通过了!" | tee -a "$SUITE_LOG"
exit 0
else
echo "❌ 有 $failed_tests 个测试失败" | tee -a "$SUITE_LOG"
exit 1
fi