zonza/tests/test_garde_overlay.py
Ralph Mayola 5710cb69ce L'overlay ne peut plus rester fige a l'ecran
Le halo est reste affiche indefiniment. Depuis la refonte du design, la fenetre ne
se ferme plus a l'arret de l'enregistrement mais apres le collage : tout blocage
dans cette chaine — transcription qui traine, thread mort, bug en amont — la laisse
a l'ecran, et l'utilisateur n'a aucun moyen de s'en debarrasser.

La fenetre porte desormais sa propre duree de vie : une minuterie armee dans show()
la ferme quoi qu'il arrive, et hide() l'annule au passage normal. Le garde-fou ne
depend d'AUCUN code en amont, c'est tout l'interet.

La limite doit couvrir le pire cas reel — un enregistrement de duree maximale SUIVI
de sa transcription — sinon on remplacerait un halo fige par un halo qui s'evapore
pendant que Zonza travaille. validate_config refuse desormais une valeur trop courte
(210 s pour 120 s d'enregistrement + 30 s de marge minimale).

Prouve en conditions reelles, limite abaissee a 3 s : visible a 1,5 s (pas de
fermeture prematuree), fermee a 4 s et 5,5 s.

60 tests passent.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-21 01:48:07 +02:00

41 lines
1.5 KiB
Python

"""Durée de vie maximale de l'overlay.
Bug du 2026-08-21 : le halo est resté figé à l'écran. Depuis la refonte du design,
la fenêtre ne se ferme plus à l'arrêt de l'enregistrement mais après le collage —
donc tout blocage dans cette chaîne la laisse affichée indéfiniment.
La fenêtre porte désormais sa propre limite : quoi qu'il arrive en amont, elle se
referme seule. Ce test verrouille la COHÉRENCE de la limite, qui doit couvrir le
pire cas réel — un enregistrement de durée maximale SUIVI d'une transcription.
"""
import pytest
from core import CONFIG, duree_vie_overlay_coherente
def test_la_limite_couvre_un_enregistrement_maximal_plus_la_transcription():
assert duree_vie_overlay_coherente(CONFIG) is True
def test_une_limite_plus_courte_que_l_enregistrement_est_refusee():
mauvais = dict(CONFIG, duree_max_overlay_s=CONFIG["max_duration_s"] - 1)
assert duree_vie_overlay_coherente(mauvais) is False
def test_une_limite_sans_marge_pour_transcrire_est_refusee():
# juste egale a la duree d'enregistrement : la transcription serait coupee
serre = dict(CONFIG, duree_max_overlay_s=CONFIG["max_duration_s"])
assert duree_vie_overlay_coherente(serre) is False
def test_validate_config_rejette_une_limite_incoherente():
from core import validate_config
mauvais = dict(CONFIG, duree_max_overlay_s=10.0)
with pytest.raises(ValueError):
validate_config(mauvais)
def test_la_config_livree_est_coherente():
from core import validate_config
validate_config(CONFIG) # ne doit pas lever