Initial commit: CloudRestoreAS v1.0.0 - Aplicación completa de restauración automática SQL Server
This commit is contained in:
140
test_installation.py
Normal file
140
test_installation.py
Normal file
@@ -0,0 +1,140 @@
|
||||
"""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())
|
||||
Reference in New Issue
Block a user