]> granicus.if.org Git - python/commitdiff
Issue #27611, #24137: Only change tkinter when easily restored.
authorTerry Jan Reedy <tjreedy@udel.edu>
Tue, 16 Aug 2016 04:10:14 +0000 (00:10 -0400)
committerTerry Jan Reedy <tjreedy@udel.edu>
Tue, 16 Aug 2016 04:10:14 +0000 (00:10 -0400)
Lib/idlelib/pyshell.py
Lib/test/test_idle.py

index 28584acfbb3df7ef82fb62537f720a6aef316fea..740c72e2a30e782e2f6cc2d8cf211c0fd24c18ba 100755 (executable)
@@ -30,6 +30,7 @@ import linecache
 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 @@ def main():
     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()
index b266fcfbdc3516f41f96adb5d7d586cc1371b474..da05da50f3364ff47a7f6b76b166b00c666f4e49 100644 (file)
@@ -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