veza/scripts/test-coverage.sh
2025-12-03 22:56:50 +01:00

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