136 lines
3.8 KiB
Bash
Executable File
136 lines
3.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
#
|
|
# Validate TYPO3 testing infrastructure setup
|
|
#
|
|
# Checks:
|
|
# - Required dependencies
|
|
# - PHPUnit configurations
|
|
# - Directory structure
|
|
# - Docker (for acceptance tests)
|
|
#
|
|
|
|
set -e
|
|
|
|
# Colors
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m'
|
|
|
|
PROJECT_DIR="$(pwd)"
|
|
ERRORS=0
|
|
WARNINGS=0
|
|
|
|
echo -e "${GREEN}=== TYPO3 Testing Setup Validation ===${NC}"
|
|
echo
|
|
|
|
# Check composer.json
|
|
echo -e "${YELLOW}[1/5] Checking composer.json dependencies...${NC}"
|
|
if [ ! -f "${PROJECT_DIR}/composer.json" ]; then
|
|
echo -e "${RED}✗ composer.json not found${NC}"
|
|
((ERRORS++))
|
|
else
|
|
if grep -q "typo3/testing-framework" "${PROJECT_DIR}/composer.json"; then
|
|
echo -e "${GREEN}✓ typo3/testing-framework installed${NC}"
|
|
else
|
|
echo -e "${RED}✗ typo3/testing-framework missing${NC}"
|
|
((ERRORS++))
|
|
fi
|
|
|
|
if grep -q "phpunit/phpunit" "${PROJECT_DIR}/composer.json"; then
|
|
echo -e "${GREEN}✓ phpunit/phpunit installed${NC}"
|
|
else
|
|
echo -e "${RED}✗ phpunit/phpunit missing${NC}"
|
|
((ERRORS++))
|
|
fi
|
|
fi
|
|
|
|
# Check PHPUnit configurations
|
|
echo -e "${YELLOW}[2/5] Checking PHPUnit configurations...${NC}"
|
|
if [ -f "${PROJECT_DIR}/Build/phpunit/UnitTests.xml" ]; then
|
|
echo -e "${GREEN}✓ UnitTests.xml present${NC}"
|
|
else
|
|
echo -e "${RED}✗ UnitTests.xml missing${NC}"
|
|
((ERRORS++))
|
|
fi
|
|
|
|
if [ -f "${PROJECT_DIR}/Build/phpunit/FunctionalTests.xml" ]; then
|
|
echo -e "${GREEN}✓ FunctionalTests.xml present${NC}"
|
|
else
|
|
echo -e "${RED}✗ FunctionalTests.xml missing${NC}"
|
|
((ERRORS++))
|
|
fi
|
|
|
|
if [ -f "${PROJECT_DIR}/Build/phpunit/FunctionalTestsBootstrap.php" ]; then
|
|
echo -e "${GREEN}✓ FunctionalTestsBootstrap.php present${NC}"
|
|
else
|
|
echo -e "${RED}✗ FunctionalTestsBootstrap.php missing${NC}"
|
|
((ERRORS++))
|
|
fi
|
|
|
|
# Check directory structure
|
|
echo -e "${YELLOW}[3/5] Checking directory structure...${NC}"
|
|
for dir in "Tests/Unit" "Tests/Functional" "Tests/Functional/Fixtures"; do
|
|
if [ -d "${PROJECT_DIR}/${dir}" ]; then
|
|
echo -e "${GREEN}✓ ${dir}/ exists${NC}"
|
|
else
|
|
echo -e "${YELLOW}⚠ ${dir}/ missing${NC}"
|
|
((WARNINGS++))
|
|
fi
|
|
done
|
|
|
|
# Check AGENTS.md files
|
|
echo -e "${YELLOW}[4/5] Checking AGENTS.md documentation...${NC}"
|
|
for dir in "Tests/Unit" "Tests/Functional"; do
|
|
if [ -f "${PROJECT_DIR}/${dir}/AGENTS.md" ]; then
|
|
echo -e "${GREEN}✓ ${dir}/AGENTS.md present${NC}"
|
|
else
|
|
echo -e "${YELLOW}⚠ ${dir}/AGENTS.md missing${NC}"
|
|
((WARNINGS++))
|
|
fi
|
|
done
|
|
|
|
# Check Docker (optional, for acceptance tests)
|
|
echo -e "${YELLOW}[5/5] Checking Docker availability (for acceptance tests)...${NC}"
|
|
if command -v docker &> /dev/null; then
|
|
echo -e "${GREEN}✓ Docker installed${NC}"
|
|
|
|
if docker ps &> /dev/null; then
|
|
echo -e "${GREEN}✓ Docker daemon running${NC}"
|
|
else
|
|
echo -e "${YELLOW}⚠ Docker daemon not running${NC}"
|
|
((WARNINGS++))
|
|
fi
|
|
else
|
|
echo -e "${YELLOW}⚠ Docker not installed (required for acceptance tests)${NC}"
|
|
((WARNINGS++))
|
|
fi
|
|
|
|
# Summary
|
|
echo
|
|
echo -e "${GREEN}=== Validation Summary ===${NC}"
|
|
|
|
if [ ${ERRORS} -eq 0 ] && [ ${WARNINGS} -eq 0 ]; then
|
|
echo -e "${GREEN}✓ All checks passed!${NC}"
|
|
echo
|
|
echo "Your testing infrastructure is ready to use."
|
|
echo "Generate your first test:"
|
|
echo " ~/.claude/skills/typo3-testing/scripts/generate-test.sh unit MyClass"
|
|
exit 0
|
|
elif [ ${ERRORS} -eq 0 ]; then
|
|
echo -e "${YELLOW}⚠ ${WARNINGS} warnings found${NC}"
|
|
echo
|
|
echo "Basic setup is complete, but some optional components are missing."
|
|
exit 0
|
|
else
|
|
echo -e "${RED}✗ ${ERRORS} errors found${NC}"
|
|
if [ ${WARNINGS} -gt 0 ]; then
|
|
echo -e "${YELLOW}⚠ ${WARNINGS} warnings found${NC}"
|
|
fi
|
|
echo
|
|
echo "Run setup script to fix errors:"
|
|
echo " ~/.claude/skills/typo3-testing/scripts/setup-testing.sh"
|
|
exit 1
|
|
fi
|