93 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			93 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | #!/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()) |