"""Script de prueba para verificar la instalación.""" import sys from pathlib import Path def test_imports(): """Verifica que todas las dependencias estén instaladas.""" print("Verificando dependencias...") try: import PySide6 print("✓ PySide6:", PySide6.__version__) except ImportError as e: print("✗ PySide6:", e) return False try: import pyodbc print("✓ pyodbc:", pyodbc.version) except ImportError as e: print("✗ pyodbc:", e) return False try: import win32crypt print("✓ win32crypt: OK") except ImportError as e: print("✗ win32crypt:", e) return False return True def test_directories(): """Verifica que los directorios necesarios existan.""" print("\nVerificando directorios...") root = Path(__file__).parent dirs = ["data", "logs", "app"] for dir_name in dirs: dir_path = root / dir_name if dir_path.exists(): print(f"✓ {dir_name}: OK") else: print(f"✗ {dir_name}: No existe") return False return True def test_database(): """Verifica que se pueda crear la base de datos.""" print("\nVerificando base de datos...") try: from app.db.database import db conn = db.get_connection() cursor = conn.cursor() cursor.execute("SELECT COUNT(*) FROM sqlite_master WHERE type='table'") table_count = cursor.fetchone()[0] conn.close() print(f"✓ Base de datos creada con {table_count} tablas") return True except Exception as e: print(f"✗ Error con base de datos: {e}") return False def test_seven_zip(): """Verifica que 7-Zip esté instalado.""" print("\nVerificando 7-Zip...") try: from app.extract.seven_zip import SevenZipExtractor path = SevenZipExtractor._auto_detect_7zip() if path: print(f"✓ 7-Zip encontrado en: {path}") return True else: print("⚠ 7-Zip no auto-detectado (configúralo en la aplicación)") return True # No es crítico except Exception as e: print(f"✗ Error verificando 7-Zip: {e}") return False def main(): """Ejecuta todas las pruebas.""" print("=" * 60) print("CloudRestoreAS - Verificación de Instalación") print("=" * 60) print() tests = [ ("Dependencias", test_imports), ("Directorios", test_directories), ("Base de Datos", test_database), ("7-Zip", test_seven_zip) ] results = [] for name, test_func in tests: try: result = test_func() results.append((name, result)) except Exception as e: print(f"\n✗ Error en {name}: {e}") results.append((name, False)) print("\n" + "=" * 60) print("RESUMEN") print("=" * 60) all_passed = True for name, result in results: status = "✓ PASS" if result else "✗ FAIL" print(f"{status:10} {name}") if not result: all_passed = False print("=" * 60) if all_passed: print("\n✓ Todas las verificaciones pasaron!") print(" La aplicación está lista para usarse.") print(" Ejecuta: python runner.py") return 0 else: print("\n✗ Algunas verificaciones fallaron.") print(" Revisa los errores arriba y consulta el README.md") return 1 if __name__ == "__main__": sys.exit(main())