Test: Diagnose für Alt+F4 im Dialog (wer löst Alt+F4/Beenden aus)
Windows-Build / windows-exe (push) Failing after 3m7s
Windows-Build / windows-exe (push) Failing after 3m7s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
85fcadae54
commit
e757ffdbd4
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()
|
||||
|
||||
|
||||
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
|
||||
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([
|
||||
(IMMER, lambda: InfoDialog(lauf.root).zeigen(), "Info öffnen"),
|
||||
(lambda: lauf.dialog(InfoDialog) is not None,
|
||||
lambda: lauf.dialog(InfoDialog).event_generate("<Alt-F4>"), "Alt+F4 im Dialog"),
|
||||
(lambda: lauf.dialog(InfoDialog) is None, lambda: None, "Dialog geschlossen"),
|
||||
], sekunden=8)
|
||||
assert lauf.lebt, "Alt+F4 im Dialog darf nicht das ganze Programm beenden"
|
||||
assert not lauf.uebrig, lauf.uebrig
|
||||
diagnose = "\n---\n".join(protokoll) + "\nFehler:\n" + "\n".join(lauf.fehler)
|
||||
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()
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user