- Scripts créés pour exécuter tests par groupes/packages (évite crashes RAM) - Tests complets pour handlers RBAC (16 tests, tous passent) - Interface RBACServiceInterface créée pour permettre mock dans tests - Couverture actuelle: 29.8% (objectif: 80%) Files: - veza-backend-api/scripts/test_coverage_by_groups.sh (créé) - veza-backend-api/scripts/test_coverage_one_by_one.sh (créé) - veza-backend-api/internal/api/handlers/rbac_handlers.go (modifié) - veza-backend-api/internal/api/handlers/rbac_handlers_test.go (créé) - VEZA_ROADMAP.json (mis à jour) Hours: 16 estimated, 4 actual (travail en cours)
114 lines
4.1 KiB
Bash
Executable file
114 lines
4.1 KiB
Bash
Executable file
#!/bin/bash
|
|
# Script pour exécuter les tests un par un et calculer la couverture totale
|
|
# Version ultra-légère pour éviter les problèmes de RAM
|
|
|
|
set +e # Continuer même en cas d'erreur
|
|
|
|
BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
cd "$BASE_DIR"
|
|
|
|
COVERAGE_DIR="coverage_groups"
|
|
TOTAL_COVERAGE="coverage_total.out"
|
|
|
|
# Créer le dossier pour les fichiers de couverture
|
|
mkdir -p "$COVERAGE_DIR"
|
|
rm -f "$COVERAGE_DIR"/*.out
|
|
|
|
echo "📦 Récupération de la liste des packages..."
|
|
PACKAGES=$(go list ./internal/... 2>/dev/null)
|
|
TOTAL=$(echo "$PACKAGES" | wc -l)
|
|
echo " Total: $TOTAL packages"
|
|
echo ""
|
|
|
|
# Compteurs
|
|
SUCCESS=0
|
|
FAILED=0
|
|
NO_TESTS=0
|
|
PACKAGE_NUM=0
|
|
|
|
echo "🧪 Exécution des tests package par package..."
|
|
echo ""
|
|
|
|
for pkg in $PACKAGES; do
|
|
PACKAGE_NUM=$((PACKAGE_NUM + 1))
|
|
PKG_NAME=$(basename "$pkg")
|
|
|
|
echo "[$PACKAGE_NUM/$TOTAL] Testing $PKG_NAME..."
|
|
|
|
COVERAGE_FILE="$COVERAGE_DIR/$(echo "$pkg" | tr '/' '_').out"
|
|
|
|
# Exécuter les tests pour ce package uniquement (avec timeout court)
|
|
if timeout 30 go test -coverprofile="$COVERAGE_FILE" -short "$pkg" 2>&1 | grep -q "PASS\|FAIL\|ok\|FAIL"; then
|
|
if [ -f "$COVERAGE_FILE" ] && [ -s "$COVERAGE_FILE" ]; then
|
|
SUCCESS=$((SUCCESS + 1))
|
|
echo " ✅ OK"
|
|
else
|
|
# Vérifier si c'est parce qu'il n'y a pas de tests
|
|
if go test -short "$pkg" 2>&1 | grep -q "no test files"; then
|
|
NO_TESTS=$((NO_TESTS + 1))
|
|
echo " ⚠️ Pas de tests"
|
|
else
|
|
FAILED=$((FAILED + 1))
|
|
echo " ❌ Échec"
|
|
fi
|
|
fi
|
|
else
|
|
FAILED=$((FAILED + 1))
|
|
echo " ❌ Échec"
|
|
fi
|
|
|
|
# Nettoyer après chaque package pour libérer la mémoire
|
|
go clean -testcache 2>/dev/null || true
|
|
|
|
# Petite pause
|
|
sleep 0.5
|
|
done
|
|
|
|
echo ""
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo "📊 Résumé"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo " ✅ Réussis: $SUCCESS"
|
|
echo " ❌ Échoués: $FAILED"
|
|
echo " ⚠️ Sans tests: $NO_TESTS"
|
|
echo " 📦 Total: $TOTAL"
|
|
|
|
echo ""
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo "📊 Combinaison des fichiers de couverture..."
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
|
|
# Compter les fichiers de couverture valides
|
|
COVERAGE_FILES=$(find "$COVERAGE_DIR" -name "*.out" -type f -size +0 2>/dev/null | wc -l)
|
|
echo " Fichiers de couverture: $COVERAGE_FILES"
|
|
|
|
# Combiner tous les fichiers de couverture valides
|
|
if [ $COVERAGE_FILES -gt 0 ]; then
|
|
echo "mode: set" > "$TOTAL_COVERAGE"
|
|
for file in "$COVERAGE_DIR"/*.out; do
|
|
if [ -f "$file" ] && [ -s "$file" ]; then
|
|
# Ignorer la première ligne (mode: set) de chaque fichier
|
|
tail -n +2 "$file" >> "$TOTAL_COVERAGE" 2>/dev/null || true
|
|
fi
|
|
done
|
|
|
|
echo "✅ Couverture totale générée: $TOTAL_COVERAGE"
|
|
|
|
# Calculer le pourcentage de couverture
|
|
echo ""
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo "📈 Statistiques de couverture"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
|
|
if [ -f "$TOTAL_COVERAGE" ] && [ -s "$TOTAL_COVERAGE" ]; then
|
|
go tool cover -func="$TOTAL_COVERAGE" 2>/dev/null | tail -1
|
|
echo ""
|
|
echo "Pour voir le rapport HTML:"
|
|
echo " go tool cover -html=$TOTAL_COVERAGE"
|
|
else
|
|
echo "❌ Aucun fichier de couverture valide généré"
|
|
fi
|
|
else
|
|
echo "❌ Aucun fichier de couverture généré"
|
|
fi
|
|
|