python (3.12.0)
1 import unittest
2 import tkinter
3 from test.support import requires, swap_attr
4 from test.test_tkinter.support import AbstractDefaultRootTest
5 from tkinter.commondialog import Dialog
6 from tkinter.messagebox import showinfo
7
8 requires('gui')
9
10
11 class ESC[4;38;5;81mDefaultRootTest(ESC[4;38;5;149mAbstractDefaultRootTest, ESC[4;38;5;149munittestESC[4;38;5;149m.ESC[4;38;5;149mTestCase):
12
13 def test_showinfo(self):
14 def test_callback(dialog, master):
15 nonlocal ismapped
16 master.update()
17 ismapped = master.winfo_ismapped()
18 raise ZeroDivisionError
19
20 with swap_attr(Dialog, '_test_callback', test_callback):
21 ismapped = None
22 self.assertRaises(ZeroDivisionError, showinfo, "Spam", "Egg Information")
23 self.assertEqual(ismapped, False)
24
25 root = tkinter.Tk()
26 ismapped = None
27 self.assertRaises(ZeroDivisionError, showinfo, "Spam", "Egg Information")
28 self.assertEqual(ismapped, True)
29 root.destroy()
30
31 tkinter.NoDefaultRoot()
32 self.assertRaises(RuntimeError, showinfo, "Spam", "Egg Information")
33
34
35 if __name__ == "__main__":
36 unittest.main()