#!/usr/bin/env python3 """ Script de test pour les améliorations du scraper agenda du libre Démontre les nouvelles fonctionnalités : cache JSON, limitation d'événements, mode dry-run """ import subprocess import sys import os def run_test(test_name, command): """Exécute un test et affiche les résultats""" print(f"\n{'='*60}") print(f"TEST: {test_name}") print(f"{'='*60}") print(f"Commande: {' '.join(command)}") print("-" * 60) try: result = subprocess.run(command, capture_output=True, text=True, timeout=120) print("STDOUT:") print(result.stdout) if result.stderr: print("STDERR:") print(result.stderr) print(f"Code de retour: {result.returncode}") return result.returncode == 0 except subprocess.TimeoutExpired: print("TIMEOUT: Le test a pris trop de temps") return False except Exception as e: print(f"ERREUR: {e}") return False def main(): """Exécute une série de tests pour démontrer les améliorations""" print("🧪 Tests des améliorations du scraper agenda du libre") print("=" * 60) # Vérifier que le script existe script_path = "agendadulibre.py" if not os.path.exists(script_path): print(f"❌ Erreur: Le script {script_path} n'existe pas") sys.exit(1) tests = [ { "name": "Test 1: Mode dry-run par défaut (limite 5 événements)", "command": [sys.executable, script_path, "--max-events", "5", "--verbose"] }, { "name": "Test 2: Mode dry-run avec cache (limite 3 événements)", "command": [sys.executable, script_path, "--max-events", "3", "--verbose"] }, { "name": "Test 3: Mode réel (--no-dry-run) avec limite 2 événements", "command": [sys.executable, script_path, "--no-dry-run", "--max-events", "2", "--verbose"] }, { "name": "Test 4: Force refresh avec dry-run", "command": [sys.executable, script_path, "--force-refresh", "--max-events", "3", "--verbose"] } ] results = [] for test in tests: success = run_test(test["name"], test["command"]) results.append((test["name"], success)) # Résumé des tests print(f"\n{'='*60}") print("RÉSUMÉ DES TESTS") print(f"{'='*60}") passed = 0 for name, success in results: status = "✅ PASSÉ" if success else "❌ ÉCHOUÉ" print(f"{status}: {name}") if success: passed += 1 print(f"\nRésultat: {passed}/{len(results)} tests réussis") if passed == len(results): print("🎉 Tous les tests sont passés avec succès !") return 0 else: print("⚠️ Certains tests ont échoué") return 1 if __name__ == "__main__": sys.exit(main())