#!/bin/bash # Script pour exécuter tous les tests # Usage: ./scripts/run-all-tests.sh set -e # Couleurs pour les messages RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Fonction pour afficher les messages log_info() { echo -e "${BLUE}[INFO]${NC} $1" } log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1" } log_warning() { echo -e "${YELLOW}[WARNING]${NC} $1" } log_error() { echo -e "${RED}[ERROR]${NC} $1" } # Compteur global TOTAL_TESTS_PASSED=0 TOTAL_TESTS_FAILED=0 # Fonction pour exécuter un script de test run_test_script() { local script_name="$1" local script_path="scripts/$script_name" if [ ! -f "$script_path" ]; then log_error "Script de test non trouvé: $script_path" return 1 fi log_info "Exécution de $script_name..." echo "" # Exécuter le script et capturer la sortie local output if output=$(bash "$script_path" 2>&1); then log_success "✅ $script_name terminé avec succès" # Extraire les statistiques du script local passed=$(echo "$output" | grep "Tests réussis:" | awk '{print $3}' || echo "0") local failed=$(echo "$output" | grep "Tests échoués:" | awk '{print $3}' || echo "0") TOTAL_TESTS_PASSED=$((TOTAL_TESTS_PASSED + passed)) TOTAL_TESTS_FAILED=$((TOTAL_TESTS_FAILED + failed)) echo "$output" | tail -10 else log_error "❌ $script_name a échoué" TOTAL_TESTS_FAILED=$((TOTAL_TESTS_FAILED + 1)) echo "$output" | tail -10 fi echo "" echo "----------------------------------------" echo "" } # Fonction pour vérifier les prérequis check_prerequisites() { log_info "Vérification des prérequis..." # Vérifier que nous sommes dans le bon répertoire if [ ! -f "scripts/install.sh" ]; then log_error "Ce script doit être exécuté depuis la racine du projet 4NK_IA_back" exit 1 fi # Vérifier que les scripts sont exécutables local scripts=("install.sh" "quick-start.sh" "maintenance.sh" "test-installation.sh" "test-api.sh" "test-services.sh" "test-integration.sh") for script in "${scripts[@]}"; do if [ ! -x "scripts/$script" ]; then log_warning "Rendre $script exécutable..." chmod +x "scripts/$script" fi done log_success "Prérequis vérifiés" } # Fonction pour afficher le résumé global show_global_summary() { echo "" log_info "=== Résumé global de tous les tests ===" echo "" echo "Tests réussis: $TOTAL_TESTS_PASSED" echo "Tests échoués: $TOTAL_TESTS_FAILED" echo "Total: $((TOTAL_TESTS_PASSED + TOTAL_TESTS_FAILED))" echo "" if [ $TOTAL_TESTS_FAILED -eq 0 ]; then log_success "🎉 Tous les tests sont passés !" echo "" echo "Le système 4NK IA Backend est prêt pour la production." echo "" echo "Prochaines étapes:" echo " 1. Démarrer les services: ./scripts/quick-start.sh" echo " 2. Vérifier la santé: ./scripts/maintenance.sh health" echo " 3. Consulter la documentation: http://localhost:8000/api-docs" else log_error "❌ Certains tests ont échoué." echo "" echo "Vérifiez les erreurs ci-dessus et corrigez-les avant la mise en production." echo "" echo "Solutions possibles:" echo " 1. Vérifier la configuration: ./scripts/maintenance.sh status" echo " 2. Redémarrer les services: ./scripts/maintenance.sh restart" echo " 3. Consulter les logs: ./scripts/maintenance.sh logs" fi } # Fonction pour afficher l'aide show_help() { echo "Script d'exécution de tous les tests pour 4NK IA Backend" echo "" echo "Usage: $0 [options]" echo "" echo "Options:" echo " --install-only Exécuter seulement les tests d'installation" echo " --api-only Exécuter seulement les tests d'API" echo " --services-only Exécuter seulement les tests de services" echo " --integration-only Exécuter seulement les tests d'intégration" echo " --skip-install Ignorer les tests d'installation" echo " --help Afficher cette aide" echo "" echo "Tests disponibles:" echo " - test-installation.sh : Tests d'installation et configuration" echo " - test-services.sh : Tests des services Docker" echo " - test-api.sh : Tests de l'API" echo " - test-integration.sh : Tests d'intégration complets" echo "" } # Fonction principale main() { local install_only=false local api_only=false local services_only=false local integration_only=false local skip_install=false # Traitement des arguments while [[ $# -gt 0 ]]; do case $1 in --install-only) install_only=true shift ;; --api-only) api_only=true shift ;; --services-only) services_only=true shift ;; --integration-only) integration_only=true shift ;; --skip-install) skip_install=true shift ;; --help|-h) show_help exit 0 ;; *) log_error "Option inconnue: $1" show_help exit 1 ;; esac done echo "🧪 Exécution de tous les tests 4NK IA Backend" echo "" check_prerequisites # Exécuter les tests selon les options if [ "$install_only" = true ]; then run_test_script "test-installation.sh" elif [ "$api_only" = true ]; then run_test_script "test-api.sh" elif [ "$services_only" = true ]; then run_test_script "test-services.sh" elif [ "$integration_only" = true ]; then run_test_script "test-integration.sh" else # Exécuter tous les tests if [ "$skip_install" = false ]; then run_test_script "test-installation.sh" fi run_test_script "test-services.sh" run_test_script "test-api.sh" run_test_script "test-integration.sh" fi show_global_summary } # Exécution main "$@"