• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1import unittest
2import tkinter
3from test.support import requires, swap_attr
4from tkinter.test.support import AbstractDefaultRootTest
5from tkinter.commondialog import Dialog
6from tkinter.messagebox import showinfo
7
8requires('gui')
9
10
11class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase):
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
35if __name__ == "__main__":
36    unittest.main()
37