Issue #27611, #24137: Only change tkinter when easily restored.

This commit is contained in:
Terry Jan Reedy 2016-08-16 00:10:14 -04:00
parent ee454a0dfc
commit f35bb9e1e9
2 changed files with 13 additions and 11 deletions

View file

@ -30,6 +30,7 @@ import linecache
from code import InteractiveInterpreter from code import InteractiveInterpreter
from platform import python_version, system from platform import python_version, system
from idlelib import testing
from idlelib.editor import EditorWindow, fixwordbreaks from idlelib.editor import EditorWindow, fixwordbreaks
from idlelib.filelist import FileList from idlelib.filelist import FileList
from idlelib.colorizer import ColorDelegator from idlelib.colorizer import ColorDelegator
@ -1448,8 +1449,9 @@ def main():
enable_edit = enable_edit or edit_start enable_edit = enable_edit or edit_start
enable_shell = enable_shell or not enable_edit enable_shell = enable_shell or not enable_edit
# Setup root. # Setup root. Don't break user code run in IDLE process.
if use_subprocess: # Don't break user code run in IDLE process # Don't change environment when testing.
if use_subprocess and not testing:
NoDefaultRoot() NoDefaultRoot()
root = Tk(className="Idle") root = Tk(className="Idle")
root.withdraw() root.withdraw()

View file

@ -1,23 +1,23 @@
import unittest import unittest
from test.support import import_module from test.support import import_module
# Skip test if _thread or _tkinter wasn't built, or idlelib is missing, # Skip test if _thread or _tkinter wasn't built, if idlelib is missing,
# or if tcl/tk version before 8.5, which is needed for ttk widgets. # or if tcl/tk is not the 8.5+ needed for ttk widgets.
import_module('threading') # imported by PyShell, imports _thread import_module('threading') # imported by PyShell, imports _thread
tk = import_module('tkinter') # imports _tkinter tk = import_module('tkinter') # imports _tkinter
if tk.TkVersion < 8.5: if tk.TkVersion < 8.5:
raise unittest.SkipTest("IDLE requires tk 8.5 or later.") raise unittest.SkipTest("IDLE requires tk 8.5 or later.")
tk.NoDefaultRoot()
idlelib = import_module('idlelib') idlelib = import_module('idlelib')
idlelib.testing = True # Avoid locale-changed test error
# Without test_main present, test.libregrtest.runtest.runtest_inner # Before test imports, tell IDLE to avoid changing the environment.
# calls (line 173) unittest.TestLoader().loadTestsFromModule(module) idlelib.testing = True
# which calls load_tests() if it finds it. (Unittest.main does the same.)
# unittest.main and test.libregrtest.runtest.runtest_inner
# call load_tests, when present, to discover tests to run.
from idlelib.idle_test import load_tests from idlelib.idle_test import load_tests
if __name__ == '__main__': if __name__ == '__main__':
unittest.main(verbosity=2, exit=False) tk.NoDefaultRoot()
unittest.main(exit=False)
tk._support_default_root = 1 tk._support_default_root = 1
tk._default_root = None tk._default_root = None