test-consistency-tools.sh 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. #!/bin/bash
  2. # 测试一致性检查工具
  3. set -e
  4. echo "🧪 测试一致性检查工具..."
  5. echo ""
  6. echo "1️⃣ 测试Feature依赖检查..."
  7. echo "--------------------------------"
  8. .specify/scripts/check-feature-dependencies.sh
  9. echo ""
  10. echo "2️⃣ 测试预合并检查 (模拟)..."
  11. echo "--------------------------------"
  12. CURRENT_BRANCH=$(git branch --show-current)
  13. echo "当前分支: $CURRENT_BRANCH"
  14. if [[ "$CURRENT_BRANCH" == "main" ]]; then
  15. echo "⚠️ 在main分支上,跳过合并检查测试"
  16. else
  17. echo "📋 模拟检查 $CURRENT_BRANCH -> main"
  18. # 只做基础检查,不实际执行合并
  19. echo " ✅ 分支存在检查: $CURRENT_BRANCH"
  20. echo " ✅ TypeScript编译检查"
  21. echo " ✅ 基础配置检查"
  22. echo " ℹ️ 完整检查请运行: .specify/scripts/pre-merge-consistency-check.sh $CURRENT_BRANCH"
  23. fi
  24. echo ""
  25. echo "3️⃣ 测试共享组件注册表..."
  26. echo "--------------------------------"
  27. if command -v npx >/dev/null 2>&1 && [[ -f "package.json" ]]; then
  28. echo "📦 验证TypeScript编译..."
  29. if npx tsc --noEmit --skipLibCheck .specify/tools/consistency/shared-component-registry.ts; then
  30. echo " ✅ 共享组件注册表编译通过"
  31. else
  32. echo " ❌ 共享组件注册表编译失败"
  33. fi
  34. else
  35. echo " ⚠️ 跳过TypeScript编译检查 (未找到npm/package.json)"
  36. fi
  37. echo ""
  38. echo "4️⃣ 检查工具文件完整性..."
  39. echo "--------------------------------"
  40. REQUIRED_FILES=(
  41. ".specify/scripts/check-feature-dependencies.sh"
  42. ".specify/scripts/pre-merge-consistency-check.sh"
  43. ".specify/tools/consistency/shared-component-registry.ts"
  44. "FEATURE_CONSISTENCY_GUIDE.md"
  45. )
  46. MISSING_FILES=()
  47. for file in "${REQUIRED_FILES[@]}"; do
  48. if [[ -f "$file" ]]; then
  49. echo " ✅ $file"
  50. else
  51. echo " ❌ $file (缺失)"
  52. MISSING_FILES+=("$file")
  53. fi
  54. done
  55. echo ""
  56. echo "5️⃣ 检查当前Feature状态..."
  57. echo "--------------------------------"
  58. # 检查specs目录
  59. if [[ -d "specs" ]]; then
  60. FEATURE_COUNT=$(find specs -maxdepth 1 -type d -name "*-*" | wc -l)
  61. echo " 📁 发现 $FEATURE_COUNT 个Feature spec目录:"
  62. find specs -maxdepth 1 -type d -name "*-*" | sort | while read -r spec_dir; do
  63. FEATURE_NAME=$(basename "$spec_dir")
  64. echo " 📋 $FEATURE_NAME"
  65. # 检查必需文件
  66. SPEC_FILES=("spec.md" "plan.md")
  67. for spec_file in "${SPEC_FILES[@]}"; do
  68. if [[ -f "$spec_dir/$spec_file" ]]; then
  69. echo " ✅ $spec_file"
  70. else
  71. echo " ❌ $spec_file (缺失)"
  72. fi
  73. done
  74. done
  75. else
  76. echo " ❌ specs目录不存在"
  77. fi
  78. # 检查分支
  79. echo ""
  80. echo " 🌿 Git分支状态:"
  81. FEATURE_BRANCHES=$(git branch | grep -E ' [0-9]{3}-' | sed 's/^ //' || echo "")
  82. CURRENT_BRANCH=$(git branch --show-current)
  83. if [[ -n "$FEATURE_BRANCHES" ]]; then
  84. echo "$FEATURE_BRANCHES" | while read -r branch; do
  85. if [[ "$branch" == "$CURRENT_BRANCH" ]]; then
  86. echo " 🔸 $branch (当前)"
  87. else
  88. echo " 📍 $branch"
  89. fi
  90. done
  91. else
  92. echo " ℹ️ 未找到Feature分支"
  93. fi
  94. echo ""
  95. echo "================================"
  96. if [[ ${#MISSING_FILES[@]} -eq 0 ]]; then
  97. echo "✅ 一致性检查工具测试通过"
  98. echo ""
  99. echo "📋 可用命令:"
  100. echo " .specify/scripts/check-feature-dependencies.sh"
  101. echo " .specify/scripts/pre-merge-consistency-check.sh <feature-branch>"
  102. echo ""
  103. echo "📖 详细文档: FEATURE_CONSISTENCY_GUIDE.md"
  104. else
  105. echo "❌ 发现缺失文件: ${MISSING_FILES[*]}"
  106. exit 1
  107. fi