66 lines
2 KiB
Bash
66 lines
2 KiB
Bash
#!/bin/bash
|
|
# Script pour générer et vérifier le coverage de tests (T0043)
|
|
|
|
set -e
|
|
|
|
# Variables
|
|
COVERAGE_DIR="coverage"
|
|
COVERAGE_PROFILE="$COVERAGE_DIR/coverage.out"
|
|
COVERAGE_HTML="$COVERAGE_DIR/coverage.html"
|
|
COVERAGE_JSON="$COVERAGE_DIR/coverage.json"
|
|
COVERAGE_THRESHOLD=80
|
|
|
|
# Déterminer le répertoire de travail
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
cd "$PROJECT_ROOT"
|
|
|
|
# Créer le dossier coverage
|
|
mkdir -p "$COVERAGE_DIR"
|
|
|
|
# Aller dans le répertoire du backend
|
|
cd veza-backend-api
|
|
|
|
# Générer le profile de coverage
|
|
echo "Running tests with coverage..."
|
|
go test ./... -coverprofile="$COVERAGE_PROFILE" -covermode=atomic -v
|
|
|
|
# Vérifier que le profile a été généré
|
|
if [ ! -f "$COVERAGE_PROFILE" ]; then
|
|
echo "ERROR: Coverage profile not generated"
|
|
exit 1
|
|
fi
|
|
|
|
# Générer le rapport HTML
|
|
echo "Generating HTML report..."
|
|
go tool cover -html="$COVERAGE_PROFILE" -o "$COVERAGE_HTML"
|
|
|
|
# Générer un rapport JSON (format simple)
|
|
echo "Generating coverage summary..."
|
|
COVERAGE_SUMMARY=$(go tool cover -func="$COVERAGE_PROFILE" | grep total | awk '{print $3}' | sed 's/%//')
|
|
echo "{\"coverage_percent\": $COVERAGE_SUMMARY, \"threshold\": $COVERAGE_THRESHOLD}" > "$COVERAGE_JSON" 2>/dev/null || true
|
|
|
|
# Calculer le pourcentage de coverage (entier)
|
|
COVERAGE_PERCENT=$(go tool cover -func="$COVERAGE_PROFILE" | grep total | awk '{print $3}' | sed 's/%//' | cut -d. -f1)
|
|
|
|
echo ""
|
|
echo "================================================"
|
|
echo "Coverage Summary"
|
|
echo "================================================"
|
|
go tool cover -func="$COVERAGE_PROFILE" | tail -1
|
|
echo ""
|
|
echo "Total coverage: ${COVERAGE_PERCENT}%"
|
|
echo "Threshold: ${COVERAGE_THRESHOLD}%"
|
|
echo "HTML report: $COVERAGE_DIR/coverage.html"
|
|
echo "================================================"
|
|
echo ""
|
|
|
|
# Vérifier le seuil
|
|
if [ "$COVERAGE_PERCENT" -lt "$COVERAGE_THRESHOLD" ]; then
|
|
echo "ERROR: Coverage ${COVERAGE_PERCENT}% is below threshold ${COVERAGE_THRESHOLD}%"
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ Coverage check passed!"
|
|
exit 0
|
|
|