#!/bin/bash # Hexo Container v0.0.3 路径验证脚本 (Linux) # test_paths.sh - 验证测试环境的路径配置 # 确保脚本在正确的目录下执行 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' CYAN='\033[0;36m' NC='\033[0m' # No Color echo -e "${CYAN}=== Hexo Container v0.0.3 路径验证工具 (Linux) ===${NC}" echo -e "${BLUE}工作目录: $SCRIPT_DIR${NC}" echo "" # 验证结果数组 declare -a RESULTS=() # 验证函数 check_path() { local description="$1" local path="$2" local should_exist="$3" # true/false local create_if_missing="$4" # true/false echo -n "检查 $description... " if [ "$should_exist" = "true" ]; then if [ -e "$path" ]; then echo -e "${GREEN}✓ 存在${NC}" RESULTS+=("PASS: $description") return 0 else if [ "$create_if_missing" = "true" ]; then mkdir -p "$path" 2>/dev/null if [ -d "$path" ]; then echo -e "${YELLOW}✓ 已创建${NC}" RESULTS+=("CREATED: $description") return 0 else echo -e "${RED}✗ 创建失败${NC}" RESULTS+=("FAIL: $description - 创建失败") return 1 fi else echo -e "${RED}✗ 不存在${NC}" RESULTS+=("FAIL: $description - 路径不存在: $path") return 1 fi fi else if [ -e "$path" ]; then echo -e "${YELLOW}! 存在 (不应该存在)${NC}" RESULTS+=("WARN: $description - 意外存在") return 0 else echo -e "${GREEN}✓ 不存在 (正确)${NC}" RESULTS+=("PASS: $description") return 0 fi fi } echo -e "${YELLOW}=== 关键路径验证 ===${NC}" # 1. 验证 Dockerfile check_path "Dockerfile_v0.0.3" "../../../Dockerfile_v0.0.3" true false # 2. 验证和创建测试目录结构 echo "" echo -e "${YELLOW}=== 测试目录结构验证 ===${NC}" check_path "日志目录" "./logs" false true check_path "测试数据目录" "./test_data" false true check_path "Hexo 站点目录" "./test_data/hexo_site" false true check_path "SSH 密钥目录" "./test_data/ssh_keys" false true # 3. 验证测试脚本 echo "" echo -e "${YELLOW}=== 测试脚本验证 ===${NC}" SCRIPTS=( "start.sh" "build_test.sh" "run_test.sh" "functional_test.sh" "log_rotation_test.sh" "cleanup_test.sh" ) for script in "${SCRIPTS[@]}"; do check_path "测试脚本: $script" "./$script" true false if [ -f "./$script" ]; then if [ -x "./$script" ]; then echo -e " ${GREEN}✓ 可执行权限${NC}" else echo -e " ${YELLOW}! 设置可执行权限${NC}" chmod +x "./$script" fi fi done # 4. 验证系统依赖 echo "" echo -e "${YELLOW}=== 系统依赖验证 ===${NC}" COMMANDS=( "docker:Docker" "curl:HTTP 客户端" "ssh:SSH 客户端" "ssh-keygen:SSH 密钥生成" ) for cmd_info in "${COMMANDS[@]}"; do cmd=$(echo "$cmd_info" | cut -d':' -f1) desc=$(echo "$cmd_info" | cut -d':' -f2) echo -n "检查 $desc ($cmd)... " if command -v "$cmd" > /dev/null 2>&1; then version=$(${cmd} --version 2>&1 | head -n1 || echo "版本未知") echo -e "${GREEN}✓ 可用${NC} ($version)" RESULTS+=("PASS: $desc") else echo -e "${RED}✗ 未找到${NC}" RESULTS+=("FAIL: $desc - 命令未找到") fi done # 5. 验证网络端口 echo "" echo -e "${YELLOW}=== 网络端口验证 ===${NC}" DEFAULT_PORTS=(8080 2222) for port in "${DEFAULT_PORTS[@]}"; do echo -n "检查端口 $port... " if netstat -tlnp 2>/dev/null | grep -q ":$port "; then echo -e "${YELLOW}! 已被占用${NC}" RESULTS+=("WARN: 端口 $port 已被占用") else echo -e "${GREEN}✓ 可用${NC}" RESULTS+=("PASS: 端口 $port") fi done # 6. 创建基本测试文件 echo "" echo -e "${YELLOW}=== 创建基本测试文件 ===${NC}" # 创建测试网站首页 TEST_INDEX="./test_data/hexo_site/index.html" if [ ! -f "$TEST_INDEX" ]; then echo -n "创建测试网站首页... " cat > "$TEST_INDEX" << 'EOF'
运行中 测试环境已就绪
平台: Linux
版本: v0.0.3