| import unittest | |
| import tkinter | |
| from test.support import requires, swap_attr | |
| from test.test_tkinter.support import setUpModule # noqa: F401 | |
| from test.test_tkinter.support import AbstractDefaultRootTest | |
| from tkinter.commondialog import Dialog | |
| from tkinter.messagebox import showinfo | |
| requires('gui') | |
| class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): | |
| def test_showinfo(self): | |
| def test_callback(dialog, master): | |
| nonlocal ismapped | |
| master.update() | |
| ismapped = master.winfo_ismapped() | |
| raise ZeroDivisionError | |
| with swap_attr(Dialog, '_test_callback', test_callback): | |
| ismapped = None | |
| self.assertRaises(ZeroDivisionError, showinfo, "Spam", "Egg Information") | |
| self.assertEqual(ismapped, False) | |
| root = tkinter.Tk() | |
| ismapped = None | |
| self.assertRaises(ZeroDivisionError, showinfo, "Spam", "Egg Information") | |
| self.assertEqual(ismapped, True) | |
| root.destroy() | |
| tkinter.NoDefaultRoot() | |
| self.assertRaises(RuntimeError, showinfo, "Spam", "Egg Information") | |
| if __name__ == "__main__": | |
| unittest.main() |