Files
CloudRecoveryAS/test_installation.py

141 lines
3.6 KiB
Python

"""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())