Test: Diagnose für Alt+F4 im Dialog (wer löst Alt+F4/Beenden aus)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
bd45ffea17
commit
86192c853d
1 file changed
+20
-3
+20
-3
@@ -231,17 +231,34 @@ def test_alt_f4_im_assistent_fragt_und_schliesst_nur_assistent(home):
|
|||||||
lauf.pruefen()
|
lauf.pruefen()
|
||||||
|
|
||||||
|
|
||||||
def test_alt_f4_im_dialog_schliesst_nur_den_dialog(lauf_mit_daten):
|
def test_alt_f4_im_dialog_schliesst_nur_den_dialog(lauf_mit_daten, monkeypatch):
|
||||||
|
from provtool.gui import rahmen
|
||||||
from provtool.gui.dialogs import InfoDialog
|
from provtool.gui.dialogs import InfoDialog
|
||||||
lauf = lauf_mit_daten
|
lauf = lauf_mit_daten
|
||||||
|
protokoll: list[str] = [] # Diagnose: wer hat Alt+F4 bzw. Beenden ausgelöst?
|
||||||
|
alt_f4, beenden = rahmen.Hauptrahmen.alt_f4, type(lauf.app).beenden
|
||||||
|
|
||||||
|
def alt_f4_spion(self, widget):
|
||||||
|
protokoll.append(f"alt_f4(widget={widget}, sperre={self.root.grab_current()}, "
|
||||||
|
f"popup={self._offenes_popup()}, fokus={self.root.focus_get()})\n"
|
||||||
|
+ "".join(traceback.format_stack(limit=8)))
|
||||||
|
return alt_f4(self, widget)
|
||||||
|
|
||||||
|
def beenden_spion(self):
|
||||||
|
protokoll.append("beenden()\n" + "".join(traceback.format_stack(limit=10)))
|
||||||
|
return beenden(self)
|
||||||
|
monkeypatch.setattr(rahmen.Hauptrahmen, "alt_f4", alt_f4_spion)
|
||||||
|
monkeypatch.setattr(type(lauf.app), "beenden", beenden_spion)
|
||||||
|
|
||||||
lauf.ablauf([
|
lauf.ablauf([
|
||||||
(IMMER, lambda: InfoDialog(lauf.root).zeigen(), "Info öffnen"),
|
(IMMER, lambda: InfoDialog(lauf.root).zeigen(), "Info öffnen"),
|
||||||
(lambda: lauf.dialog(InfoDialog) is not None,
|
(lambda: lauf.dialog(InfoDialog) is not None,
|
||||||
lambda: lauf.dialog(InfoDialog).event_generate("<Alt-F4>"), "Alt+F4 im Dialog"),
|
lambda: lauf.dialog(InfoDialog).event_generate("<Alt-F4>"), "Alt+F4 im Dialog"),
|
||||||
(lambda: lauf.dialog(InfoDialog) is None, lambda: None, "Dialog geschlossen"),
|
(lambda: lauf.dialog(InfoDialog) is None, lambda: None, "Dialog geschlossen"),
|
||||||
], sekunden=8)
|
], sekunden=8)
|
||||||
assert lauf.lebt, "Alt+F4 im Dialog darf nicht das ganze Programm beenden"
|
diagnose = "\n---\n".join(protokoll) + "\nFehler:\n" + "\n".join(lauf.fehler)
|
||||||
assert not lauf.uebrig, lauf.uebrig
|
assert lauf.lebt, "Alt+F4 im Dialog darf nicht das ganze Programm beenden\n" + diagnose
|
||||||
|
assert not lauf.uebrig, f"{lauf.uebrig}\n{diagnose}"
|
||||||
lauf.pruefen()
|
lauf.pruefen()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user