infinite-agents-public/infinite_variants/infinite_variant_1/test_installation.sh

196 lines
5.8 KiB
Bash
Executable File

#!/bin/bash
# Installation Test Script
# Verifies that the Pattern Synthesis system is correctly installed
set -e # Exit on error
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
echo "================================================"
echo "Pattern Synthesis System - Installation Test"
echo "================================================"
echo ""
# Test counter
tests_passed=0
tests_failed=0
# Test function
run_test() {
local test_name="$1"
local test_command="$2"
echo -n "Testing: $test_name ... "
if eval "$test_command" > /dev/null 2>&1; then
echo -e "${GREEN}✓ PASS${NC}"
((tests_passed++))
return 0
else
echo -e "${RED}✗ FAIL${NC}"
((tests_failed++))
return 1
fi
}
# 1. Check directory structure
echo "1. Checking Directory Structure"
echo "================================"
run_test "Commands directory exists" "test -d .claude/commands"
run_test "Specs directory exists" "test -d specs"
run_test "Validators directory exists" "test -d validators"
run_test "Pattern library directory exists" "test -d pattern_library"
echo ""
# 2. Check command files
echo "2. Checking Command Files"
echo "========================="
run_test "infinite-synthesis.md exists" "test -f .claude/commands/infinite-synthesis.md"
run_test "extract-patterns.md exists" "test -f .claude/commands/extract-patterns.md"
run_test "analyze-patterns.md exists" "test -f .claude/commands/analyze-patterns.md"
run_test "settings.json exists" "test -f .claude/settings.json"
echo ""
# 3. Check specification files
echo "3. Checking Specification Files"
echo "================================"
run_test "example_spec.md exists" "test -f specs/example_spec.md"
run_test "example_spec.md not empty" "test -s specs/example_spec.md"
echo ""
# 4. Check documentation files
echo "4. Checking Documentation"
echo "========================="
run_test "README.md exists" "test -f README.md"
run_test "CLAUDE.md exists" "test -f CLAUDE.md"
run_test "EXAMPLES.md exists" "test -f EXAMPLES.md"
run_test "ARCHITECTURE.md exists" "test -f ARCHITECTURE.md"
run_test "QUICKSTART.md exists" "test -f QUICKSTART.md"
run_test "CHANGELOG.md exists" "test -f CHANGELOG.md"
echo ""
# 5. Check validator files
echo "5. Checking Validators"
echo "======================"
run_test "check_patterns.sh exists" "test -f validators/check_patterns.sh"
run_test "check_patterns.sh executable" "test -x validators/check_patterns.sh"
echo ""
# 6. Check template files
echo "6. Checking Templates"
echo "====================="
run_test "pattern_library_template.json exists" "test -f pattern_library_template.json"
# Validate template JSON if jq is available
if command -v jq &> /dev/null; then
run_test "pattern_library_template.json valid JSON" "jq empty pattern_library_template.json"
else
echo -e "${YELLOW}⚠ Skipping JSON validation (jq not installed)${NC}"
fi
echo ""
# 7. Check dependencies
echo "7. Checking Dependencies"
echo "========================"
if command -v jq &> /dev/null; then
echo -e "jq (JSON processor): ${GREEN}✓ Installed${NC}"
jq --version
((tests_passed++))
else
echo -e "jq (JSON processor): ${RED}✗ Not Installed${NC}"
echo " Install: sudo apt-get install jq (Ubuntu) or brew install jq (macOS)"
((tests_failed++))
fi
echo ""
# 8. Validate pattern template
echo "8. Validating Pattern Template"
echo "==============================="
if command -v jq &> /dev/null; then
if ./validators/check_patterns.sh pattern_library_template.json > /tmp/validation_output.txt 2>&1; then
echo -e "${GREEN}✓ Pattern template validates successfully${NC}"
((tests_passed++))
else
echo -e "${RED}✗ Pattern template validation failed${NC}"
echo "See /tmp/validation_output.txt for details"
((tests_failed++))
fi
else
echo -e "${YELLOW}⚠ Skipping validation (jq not installed)${NC}"
fi
echo ""
# 9. Check file permissions
echo "9. Checking File Permissions"
echo "============================="
run_test "Validator script is executable" "test -x validators/check_patterns.sh"
run_test "Test script is executable" "test -x test_installation.sh"
echo ""
# 10. Verify content completeness
echo "10. Verifying Content Completeness"
echo "===================================="
# Check that command files have content
run_test "infinite-synthesis.md has content" "test \$(wc -l < .claude/commands/infinite-synthesis.md) -gt 100"
run_test "extract-patterns.md has content" "test \$(wc -l < .claude/commands/extract-patterns.md) -gt 100"
run_test "analyze-patterns.md has content" "test \$(wc -l < .claude/commands/analyze-patterns.md) -gt 100"
# Check that docs have content
run_test "README.md has content" "test \$(wc -l < README.md) -gt 100"
run_test "CLAUDE.md has content" "test \$(wc -l < CLAUDE.md) -gt 100"
echo ""
# Summary
echo "================================================"
echo "Test Summary"
echo "================================================"
echo -e "Tests Passed: ${GREEN}$tests_passed${NC}"
echo -e "Tests Failed: ${RED}$tests_failed${NC}"
echo ""
if [ $tests_failed -eq 0 ]; then
echo -e "${GREEN}✓ All tests passed! Installation is complete.${NC}"
echo ""
echo "Next steps:"
echo "1. Start Claude Code: claude"
echo "2. Run first generation: /project:infinite-synthesis specs/example_spec.md output 5"
echo "3. Read QUICKSTART.md for detailed walkthrough"
echo ""
exit 0
else
echo -e "${RED}✗ Some tests failed. Please fix the issues above.${NC}"
echo ""
echo "Common fixes:"
echo "1. Install jq: sudo apt-get install jq (Ubuntu) or brew install jq (macOS)"
echo "2. Make scripts executable: chmod +x validators/*.sh *.sh"
echo "3. Check file paths match installation directory"
echo ""
exit 1
fi