veza/veza-backend-api/scripts/safe_test.sh

67 lines
1.6 KiB
Bash
Raw Normal View History

#!/bin/bash
# safe_test.sh - Exécute les tests UN PAR UN avec pause entre chaque
# Usage: ./scripts/safe_test.sh [package_pattern]
set -e
cd "$(dirname "$0")/.."
PATTERN="${1:-./internal/...}"
PAUSE_SECONDS=2
echo "=== TESTS SÉCURISÉS (Anti-OOM) ==="
echo "Pattern: $PATTERN"
echo "Pause entre packages: ${PAUSE_SECONDS}s"
echo ""
# Lister les packages
PACKAGES=$(go list $PATTERN 2>/dev/null || echo "")
if [ -z "$PACKAGES" ]; then
echo "❌ Aucun package trouvé pour: $PATTERN"
exit 1
fi
TOTAL=$(echo "$PACKAGES" | wc -l)
CURRENT=0
PASSED=0
FAILED=0
SKIPPED=0
for pkg in $PACKAGES; do
CURRENT=$((CURRENT + 1))
SHORT_NAME=$(echo "$pkg" | sed 's|.*/internal/||')
echo -n "[$CURRENT/$TOTAL] $SHORT_NAME ... "
# Exécuter le test avec timeout
RESULT=$(timeout 60s go test -count=1 -cover "$pkg" 2>&1) || true
if echo "$RESULT" | grep -q "no test files"; then
echo "⏭️ NO TESTS"
SKIPPED=$((SKIPPED + 1))
elif echo "$RESULT" | grep -q "FAIL"; then
echo "❌ FAIL"
FAILED=$((FAILED + 1))
echo " $RESULT" | tail -3
elif echo "$RESULT" | grep -q "ok"; then
COV=$(echo "$RESULT" | grep -oP 'coverage: \K[0-9.]+' || echo "?")
echo "✅ PASS (${COV}%)"
PASSED=$((PASSED + 1))
else
echo "⚠️ UNKNOWN"
SKIPPED=$((SKIPPED + 1))
fi
# PAUSE OBLIGATOIRE pour libérer la RAM
sleep $PAUSE_SECONDS
done
echo ""
echo "=== RÉSUMÉ ==="
echo "✅ Passés: $PASSED"
echo "❌ Échoués: $FAILED"
echo "⏭️ Sans tests: $SKIPPED"
echo "📊 Total: $TOTAL packages"