[Python-checkins] cpython: Issue #27611, #24137: Only change tkinter when easily restored.

terry.reedy python-checkins at python.org
Tue Aug 16 00:10:29 EDT 2016


https://hg.python.org/cpython/rev/a6a248479b66
changeset:   102680:a6a248479b66
user:        Terry Jan Reedy <tjreedy at udel.edu>
date:        Tue Aug 16 00:10:14 2016 -0400
summary:
  Issue #27611, #24137: Only change tkinter when easily restored.

files:
  Lib/idlelib/pyshell.py |   6 ++++--
  Lib/test/test_idle.py  |  18 +++++++++---------
  2 files changed, 13 insertions(+), 11 deletions(-)


diff --git a/Lib/idlelib/pyshell.py b/Lib/idlelib/pyshell.py
--- a/Lib/idlelib/pyshell.py
+++ b/Lib/idlelib/pyshell.py
@@ -30,6 +30,7 @@
 from code import InteractiveInterpreter
 from platform import python_version, system
 
+from idlelib import testing
 from idlelib.editor import EditorWindow, fixwordbreaks
 from idlelib.filelist import FileList
 from idlelib.colorizer import ColorDelegator
@@ -1448,8 +1449,9 @@
     enable_edit = enable_edit or edit_start
     enable_shell = enable_shell or not enable_edit
 
-    # Setup root.
-    if use_subprocess:  # Don't break user code run in IDLE process
+    # Setup root.  Don't break user code run in IDLE process.
+    # Don't change environment when testing.
+    if use_subprocess and not testing:
         NoDefaultRoot()
     root = Tk(className="Idle")
     root.withdraw()
diff --git a/Lib/test/test_idle.py b/Lib/test/test_idle.py
--- a/Lib/test/test_idle.py
+++ b/Lib/test/test_idle.py
@@ -1,23 +1,23 @@
 import unittest
 from test.support import import_module
 
-# Skip test if _thread or _tkinter wasn't built, or idlelib is missing,
-# or if tcl/tk version before 8.5, which is needed for ttk widgets.
-
+# Skip test if _thread or _tkinter wasn't built, if idlelib is missing,
+# or if tcl/tk is not the 8.5+ needed for ttk widgets.
 import_module('threading')  # imported by PyShell, imports _thread
 tk = import_module('tkinter')  # imports _tkinter
 if tk.TkVersion < 8.5:
     raise unittest.SkipTest("IDLE requires tk 8.5 or later.")
-tk.NoDefaultRoot()
 idlelib = import_module('idlelib')
-idlelib.testing = True  # Avoid locale-changed test error
 
-# Without test_main present, test.libregrtest.runtest.runtest_inner
-# calls (line 173) unittest.TestLoader().loadTestsFromModule(module)
-# which calls load_tests() if it finds it. (Unittest.main does the same.)
+# Before test imports, tell IDLE to avoid changing the environment.
+idlelib.testing = True
+
+# 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
 
 if __name__ == '__main__':
-    unittest.main(verbosity=2, exit=False)
+    tk.NoDefaultRoot()
+    unittest.main(exit=False)
     tk._support_default_root = 1
     tk._default_root = None

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list