diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2020-12-19 11:08:07 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-19 11:08:07 (GMT) |
commit | 87e7a14ee3bd7dc495e51166598453114342d0bf (patch) | |
tree | 294f115bf28022c9a25b174684cc5dfbe6e7fde9 /Lib/tkinter/test/support.py | |
parent | d458d8dab0abaf781c923f80f8eb832d0c683e88 (diff) | |
download | cpython-87e7a14ee3bd7dc495e51166598453114342d0bf.zip cpython-87e7a14ee3bd7dc495e51166598453114342d0bf.tar.gz cpython-87e7a14ee3bd7dc495e51166598453114342d0bf.tar.bz2 |
[3.9] bpo-42630: Improve error reporting in Tkinter for absent default root (GH-23781) (GH-23853)
* Tkinter functions and constructors which need a default root window
raise now RuntimeError with descriptive message instead of obscure
AttributeError or NameError if it is not created yet or cannot
be created automatically.
* Add tests for all functions which use default root window.
* Fix import in the pynche script.
(cherry picked from commit 3d569fd6dccf9f582bafaca04d3535094cae393e)
Diffstat (limited to 'Lib/tkinter/test/support.py')
-rw-r--r-- | Lib/tkinter/test/support.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/Lib/tkinter/test/support.py b/Lib/tkinter/test/support.py index 467a0b6..dbc47a8 100644 --- a/Lib/tkinter/test/support.py +++ b/Lib/tkinter/test/support.py @@ -36,6 +36,33 @@ class AbstractTkTest: w.destroy() self.root.withdraw() + +class AbstractDefaultRootTest: + + def setUp(self): + self._old_support_default_root = tkinter._support_default_root + destroy_default_root() + tkinter._support_default_root = True + self.wantobjects = tkinter.wantobjects + + def tearDown(self): + destroy_default_root() + tkinter._default_root = None + tkinter._support_default_root = self._old_support_default_root + + def _test_widget(self, constructor): + # no master passing + x = constructor() + self.assertIsNotNone(tkinter._default_root) + self.assertIs(x.master, tkinter._default_root) + self.assertIs(x.tk, tkinter._default_root.tk) + x.destroy() + destroy_default_root() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, constructor) + self.assertFalse(hasattr(tkinter, '_default_root')) + + def destroy_default_root(): if getattr(tkinter, '_default_root', None): tkinter._default_root.update_idletasks() |