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