#!/usr/bin/env python3 """El panel: que lo que manda el nucleo sea lo que el HUD sabe leer. ./venv/bin/python pruebas/prueba_cara.py ## Por que existe esta prueba Montando la telemetria, `ps` devolvia el uso de CPU como cadena y el nucleo la mandaba tal cual. El HUD hace `p.cpu.toFixed(0)`, y una cadena no tiene `toFixed`: la excepcion abortaba el manejador ENTERO y se llevaba por delante todo lo que se pinta despues. En pantalla se veia que CPU, RAM y grafica salian en "--", y el fallo no apuntaba a los procesos por ningun lado. Ese es el problema de un puente sin contrato: un campo con el tipo equivocado apaga media pantalla y no dice donde. Aqui se fija el contrato —que campo, de que tipo y en que unidad— comprobando ademas que `hud.js` lo sigue usando asi, para que enterarse no dependa de mirar la pantalla. """ import json import os import re import sys AQUI = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.insert(0, AQUI) from cara.panel import Telemetria # noqa: E402 HUD = os.path.join(AQUI, "cara", "hud") fallos = [] def afirma(condicion, queja): print(f" {'OK ' if condicion else 'MAL'} {queja}") if not condicion: fallos.append(queja) def numero(v): return isinstance(v, (int, float)) and not isinstance(v, bool) def main() -> int: print("\n el puente esta puesto") with open(os.path.join(HUD, "index.html"), encoding="utf-8") as f: html = f.read() afirma("puente.js" in html, "index.html carga puente.js") # Se comparan las etiquetas