70 lines
2.3 KiB
Python
70 lines
2.3 KiB
Python
#!/usr/bin/env python3
|
|
"""Controlla che la Home apra le regolazioni dell'oggetto toccato.
|
|
|
|
La UI non e' eseguibile senza il kit Silica, quindi il controllo e' statico:
|
|
|
|
1. ogni push verso SetpointsPage.qml dichiara una sezione (chi tocca "Casa"
|
|
non deve trovarsi davanti le regolazioni di tutto l'impianto);
|
|
2. la sezione dichiarata e' fra quelle che la pagina conosce;
|
|
3. ogni sezione della pagina e' legata a una visibilita' (mostraCasa /
|
|
mostraAcqua), altrimenti "solo quelle dell'oggetto" resta una promessa.
|
|
|
|
Esce 0 se tutto regge, 1 con l'elenco dei problemi.
|
|
"""
|
|
import pathlib
|
|
import re
|
|
import sys
|
|
|
|
QML = pathlib.Path(__file__).resolve().parent.parent / "qml"
|
|
HOME = QML / "pages" / "MainPage.qml"
|
|
PAGINA = QML / "pages" / "SetpointsPage.qml"
|
|
|
|
problemi = []
|
|
|
|
home = HOME.read_text(encoding="utf-8")
|
|
pagina = PAGINA.read_text(encoding="utf-8")
|
|
|
|
# 1. le chiamate dalla Home, con l'eventuale sezione subito dopo
|
|
chiamate = re.findall(
|
|
r'SetpointsPage\.qml"\)\s*(?:,\s*\{\s*"section"\s*:\s*"([^"]+)"\s*\})?',
|
|
home,
|
|
)
|
|
if not chiamate:
|
|
problemi.append("MainPage: nessun push verso SetpointsPage.qml (rinominato?)")
|
|
|
|
senza_sezione = chiamate.count("")
|
|
if senza_sezione:
|
|
problemi.append(
|
|
"%d push verso SetpointsPage.qml senza sezione: la pagina si apre intera"
|
|
% senza_sezione
|
|
)
|
|
|
|
# 2. le sezioni che la pagina conosce, lette dai confronti su page.section
|
|
conosciute = set(re.findall(r'page\.section\s*!==\s*"([^"]+)"', pagina))
|
|
if not conosciute:
|
|
problemi.append("SetpointsPage: nessuna sezione dichiarata (page.section)")
|
|
|
|
for sezione in chiamate:
|
|
if sezione and sezione not in conosciute:
|
|
problemi.append(
|
|
"MainPage chiede la sezione %r, che SetpointsPage non conosce (%s)"
|
|
% (sezione, ", ".join(sorted(conosciute)) or "nessuna")
|
|
)
|
|
|
|
# 3. ogni sezione deve nascondere l'altra: entrambe le visibilita' usate
|
|
for proprieta in ("mostraCasa", "mostraAcqua"):
|
|
if ("visible: page.%s" % proprieta) not in pagina:
|
|
problemi.append(
|
|
"SetpointsPage: nessun blocco legato a %s: la sezione non si nasconde"
|
|
% proprieta
|
|
)
|
|
|
|
if problemi:
|
|
print("ESITO: problemi trovati")
|
|
for p in problemi:
|
|
print(" -", p)
|
|
sys.exit(1)
|
|
|
|
print("ESITO: sezioni OK (%d chiamate dalla Home, sezioni %s)"
|
|
% (len(chiamate), ", ".join(sorted(conosciute))))
|