veza/veza-backend-api/scripts/safe_test.sh
senke b28d0e7eac [T0-006] test(backend): Ajout tests pour frontend_log_handler
- Tests complets pour frontend_log_handler.go (12 tests)
- Tests couvrent NewFrontendLogHandler et ReceiveLog
- Tests pour tous les niveaux de log (DEBUG, INFO, WARN, ERROR)
- Tests pour gestion des erreurs et validation JSON
- Couverture actuelle: 30.6% (objectif: 80%)

Files: veza-backend-api/internal/handlers/frontend_log_handler_test.go
       VEZA_ROADMAP.json
Hours: 16 estimated, 23 actual
2026-01-04 01:44:22 +01:00

66 lines
1.6 KiB
Bash
Executable file

#!/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"