|
| 1 | +#!/bin/bash |
| 2 | + |
| 3 | +# DoPlan v0.0.19-beta Phase Testing Script |
| 4 | +# This script tests each phase systematically and reports issues |
| 5 | + |
| 6 | +set -e |
| 7 | + |
| 8 | +RED='\033[0;31m' |
| 9 | +GREEN='\033[0;32m' |
| 10 | +YELLOW='\033[1;33m' |
| 11 | +NC='\033[0m' # No Color |
| 12 | + |
| 13 | +TEST_DIR="/tmp/doplan-phase-test" |
| 14 | +ISSUES_FILE="docs/development/V0.0.19-BETA-TESTING-CHECKLIST.md" |
| 15 | +ISSUES_FOUND=0 |
| 16 | + |
| 17 | +echo "==========================================" |
| 18 | +echo "DoPlan v0.0.19-beta Phase Testing" |
| 19 | +echo "==========================================" |
| 20 | +echo "" |
| 21 | + |
| 22 | +# Cleanup |
| 23 | +rm -rf "$TEST_DIR" |
| 24 | +mkdir -p "$TEST_DIR" |
| 25 | +cd "$TEST_DIR" |
| 26 | + |
| 27 | +echo "[TEST] Phase 1: Build & Basic Structure" |
| 28 | +echo "----------------------------------------" |
| 29 | + |
| 30 | +# Test 1: Build CLI |
| 31 | +cd /Users/Dorgham/Documents/Work/Devleopment/DoPlan/cli |
| 32 | +if ! go build -o doplan-test ./cmd/doplan/main.go 2>&1; then |
| 33 | + echo -e "${RED}✗ FAIL: CLI build failed${NC}" |
| 34 | + ISSUES_FOUND=$((ISSUES_FOUND + 1)) |
| 35 | +else |
| 36 | + echo -e "${GREEN}✓ PASS: CLI builds successfully${NC}" |
| 37 | +fi |
| 38 | + |
| 39 | +# Test 2: Check main files exist |
| 40 | +echo "" |
| 41 | +echo "[TEST] Phase 2: File Structure Verification" |
| 42 | +echo "----------------------------------------" |
| 43 | + |
| 44 | +check_file() { |
| 45 | + local file=$1 |
| 46 | + local phase=$2 |
| 47 | + if [ -f "$file" ]; then |
| 48 | + echo -e "${GREEN}✓ PASS: $file exists${NC}" |
| 49 | + else |
| 50 | + echo -e "${RED}✗ FAIL: $file missing (Phase $phase)${NC}" |
| 51 | + ISSUES_FOUND=$((ISSUES_FOUND + 1)) |
| 52 | + fi |
| 53 | +} |
| 54 | + |
| 55 | +# Phase 2: Design System (DPR) |
| 56 | +check_file "internal/dpr/questionnaire.go" "2" |
| 57 | +check_file "internal/dpr/generator.go" "2" |
| 58 | +check_file "internal/dpr/tokens.go" "2" |
| 59 | +check_file "internal/dpr/cursor_rules.go" "2" |
| 60 | +check_file "internal/wizard/design.go" "2" |
| 61 | +check_file "internal/commands/design.go" "2" |
| 62 | + |
| 63 | +# Phase 3: Secrets & API Keys |
| 64 | +check_file "internal/rakd/types.go" "3" |
| 65 | +check_file "internal/rakd/detector.go" "3" |
| 66 | +check_file "internal/rakd/validator.go" "3" |
| 67 | +check_file "internal/rakd/generator.go" "3" |
| 68 | +check_file "internal/sops/generator.go" "3" |
| 69 | +check_file "internal/wizard/keys.go" "3" |
| 70 | +check_file "internal/commands/keys.go" "3" |
| 71 | + |
| 72 | +# Phase 4: AI Agents System |
| 73 | +check_file "internal/generators/agents.go" "4" |
| 74 | +check_file "internal/generators/rules.go" "4" |
| 75 | + |
| 76 | +# Phase 5: Workflow Guidance |
| 77 | +check_file "internal/workflow/recommender.go" "5" |
| 78 | + |
| 79 | +echo "" |
| 80 | +echo "[TEST] Phase 3: Compilation Check" |
| 81 | +echo "----------------------------------------" |
| 82 | + |
| 83 | +# Test compilation of each package |
| 84 | +test_package() { |
| 85 | + local pkg=$1 |
| 86 | + local phase=$2 |
| 87 | + if go build "./$pkg" 2>&1 | head -5; then |
| 88 | + echo -e "${GREEN}✓ PASS: $pkg compiles${NC}" |
| 89 | + else |
| 90 | + echo -e "${RED}✗ FAIL: $pkg compilation errors (Phase $phase)${NC}" |
| 91 | + ISSUES_FOUND=$((ISSUES_FOUND + 1)) |
| 92 | + fi |
| 93 | +} |
| 94 | + |
| 95 | +echo "Testing package compilation..." |
| 96 | +test_package "internal/dpr" "2" |
| 97 | +test_package "internal/rakd" "3" |
| 98 | +test_package "internal/sops" "3" |
| 99 | +test_package "internal/workflow" "5" |
| 100 | +test_package "internal/generators" "4" |
| 101 | + |
| 102 | +echo "" |
| 103 | +echo "[TEST] Phase 4: Linter Check" |
| 104 | +echo "----------------------------------------" |
| 105 | + |
| 106 | +# Check for linter errors in critical files |
| 107 | +lint_check() { |
| 108 | + local file=$1 |
| 109 | + local phase=$2 |
| 110 | + if go vet "./$file" 2>&1 | grep -q "error"; then |
| 111 | + echo -e "${RED}✗ FAIL: $file has vet errors (Phase $phase)${NC}" |
| 112 | + ISSUES_FOUND=$((ISSUES_FOUND + 1)) |
| 113 | + else |
| 114 | + echo -e "${GREEN}✓ PASS: $file passes go vet${NC}" |
| 115 | + fi |
| 116 | +} |
| 117 | + |
| 118 | +echo "Running go vet on critical files..." |
| 119 | +lint_check "internal/tui/app.go" "1" |
| 120 | +lint_check "internal/workflow/recommender.go" "5" |
| 121 | +lint_check "internal/dpr/generator.go" "2" |
| 122 | +lint_check "internal/rakd/generator.go" "3" |
| 123 | + |
| 124 | +echo "" |
| 125 | +echo "[TEST] Phase 5: Function Existence Check" |
| 126 | +echo "----------------------------------------" |
| 127 | + |
| 128 | +# Check critical functions exist (methods or standalone functions) |
| 129 | +check_function() { |
| 130 | + local file=$1 |
| 131 | + local func=$2 |
| 132 | + local phase=$3 |
| 133 | + if grep -q "func.*$func" "$file" 2>/dev/null; then |
| 134 | + echo -e "${GREEN}✓ PASS: $func found in $file${NC}" |
| 135 | + else |
| 136 | + echo -e "${RED}✗ FAIL: $func missing in $file (Phase $phase)${NC}" |
| 137 | + ISSUES_FOUND=$((ISSUES_FOUND + 1)) |
| 138 | + fi |
| 139 | +} |
| 140 | + |
| 141 | +# Phase 5: Workflow Guidance |
| 142 | +check_function "internal/workflow/recommender.go" "GetNextStep" "5" |
| 143 | + |
| 144 | +# Phase 2: Design System |
| 145 | +check_function "internal/dpr/generator.go" "Generate" "2" |
| 146 | +check_function "internal/dpr/questionnaire.go" "RunQuestionnaire" "2" |
| 147 | + |
| 148 | +# Phase 3: API Keys |
| 149 | +check_function "internal/rakd/generator.go" "GenerateRAKD" "3" |
| 150 | +check_function "internal/rakd/detector.go" "DetectServices" "3" |
| 151 | + |
| 152 | +# Phase 4: Agents |
| 153 | +check_function "internal/generators/agents.go" "Generate" "4" |
| 154 | +check_function "internal/generators/rules.go" "Generate" "4" |
| 155 | + |
| 156 | +echo "" |
| 157 | +echo "[TEST] Phase 6: Integration Points Check" |
| 158 | +echo "----------------------------------------" |
| 159 | + |
| 160 | +# Check TUI integration |
| 161 | +if grep -q "GetNextStep" "internal/tui/app.go" 2>/dev/null; then |
| 162 | + echo -e "${GREEN}✓ PASS: Workflow guidance integrated in TUI${NC}" |
| 163 | +else |
| 164 | + echo -e "${RED}✗ FAIL: Workflow guidance not integrated in TUI (Phase 5)${NC}" |
| 165 | + ISSUES_FOUND=$((ISSUES_FOUND + 1)) |
| 166 | +fi |
| 167 | + |
| 168 | +# Check dashboard API keys widget |
| 169 | +if grep -q "renderAPIKeysWidget" "internal/tui/screens/dashboard.go" 2>/dev/null; then |
| 170 | + echo -e "${GREEN}✓ PASS: API keys widget in dashboard${NC}" |
| 171 | +else |
| 172 | + echo -e "${RED}✗ FAIL: API keys widget missing in dashboard (Phase 3)${NC}" |
| 173 | + ISSUES_FOUND=$((ISSUES_FOUND + 1)) |
| 174 | +fi |
| 175 | + |
| 176 | +# Check menu actions |
| 177 | +if grep -q "design" "internal/tui/screens/menu.go" 2>/dev/null; then |
| 178 | + echo -e "${GREEN}✓ PASS: Design action in menu${NC}" |
| 179 | +else |
| 180 | + echo -e "${RED}✗ FAIL: Design action missing in menu (Phase 2)${NC}" |
| 181 | + ISSUES_FOUND=$((ISSUES_FOUND + 1)) |
| 182 | +fi |
| 183 | + |
| 184 | +if grep -q "keys" "internal/tui/screens/menu.go" 2>/dev/null; then |
| 185 | + echo -e "${GREEN}✓ PASS: Keys action in menu${NC}" |
| 186 | +else |
| 187 | + echo -e "${RED}✗ FAIL: Keys action missing in menu (Phase 3)${NC}" |
| 188 | + ISSUES_FOUND=$((ISSUES_FOUND + 1)) |
| 189 | +fi |
| 190 | + |
| 191 | +echo "" |
| 192 | +echo "==========================================" |
| 193 | +echo "Testing Summary" |
| 194 | +echo "==========================================" |
| 195 | +echo "Issues Found: $ISSUES_FOUND" |
| 196 | + |
| 197 | +if [ $ISSUES_FOUND -eq 0 ]; then |
| 198 | + echo -e "${GREEN}All basic checks passed!${NC}" |
| 199 | + exit 0 |
| 200 | +else |
| 201 | + echo -e "${YELLOW}Some issues found. Review output above.${NC}" |
| 202 | + exit 1 |
| 203 | +fi |
| 204 | + |
0 commit comments