| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #!/bin/bash
- # setup-pre-commit-hook.sh
- # Sets up a pre-commit hook to validate test suites before committing
- #
- # Usage:
- # ./scripts/validation/setup-pre-commit-hook.sh
- set -e
- # Colors
- GREEN='\033[0;32m'
- BLUE='\033[0;34m'
- NC='\033[0m'
- # Get script directory
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
- PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
- HOOK_FILE="$PROJECT_ROOT/.git/hooks/pre-commit"
- echo -e "${BLUE}Setting up pre-commit hook for test suite validation...${NC}"
- echo ""
- # Create pre-commit hook
- cat > "$HOOK_FILE" << 'EOF'
- #!/bin/bash
- # Pre-commit hook: Validate test suite JSON files
- # Get list of staged JSON files in config directories
- STAGED_SUITES=$(git diff --cached --name-only --diff-filter=ACM | grep -E 'evals/agents/.*/config/.*\.json$' || true)
- if [[ -n "$STAGED_SUITES" ]]; then
- echo "🔍 Validating test suite JSON files..."
-
- # Run validation
- if ! ./scripts/validation/validate-test-suites.sh --all; then
- echo ""
- echo "❌ Test suite validation failed!"
- echo " Fix the errors above before committing."
- echo ""
- echo "To skip this check (not recommended):"
- echo " git commit --no-verify"
- exit 1
- fi
-
- echo "✅ Test suite validation passed"
- fi
- exit 0
- EOF
- # Make hook executable
- chmod +x "$HOOK_FILE"
- echo -e "${GREEN}✅ Pre-commit hook installed${NC}"
- echo ""
- echo "The hook will automatically validate test suite JSON files before each commit."
- echo ""
- echo "To test it:"
- echo " 1. Edit a test suite: evals/agents/openagent/config/core-tests.json"
- echo " 2. Stage the file: git add evals/agents/openagent/config/core-tests.json"
- echo " 3. Try to commit: git commit -m 'test'"
- echo ""
- echo "To skip validation (not recommended):"
- echo " git commit --no-verify"
|