diff -r f478eb9adfe0 Lib/test/test_idle.py --- a/Lib/test/test_idle.py Sat Jul 13 04:06:03 2013 -0400 +++ b/Lib/test/test_idle.py Sat Jul 13 18:31:26 2013 -0400 @@ -1,9 +1,23 @@ # Skip test if _tkinter or _thread wasn't built or idlelib was deleted. -from test.support import import_module -import_module('tkinter') +from test.support import import_module, use_resources +tk = import_module('tkinter') import_module('threading') # imported by PyShell, imports _thread idletest = import_module('idlelib.idle_test') +# Make sure gui tests are really skipped when they will not run, +# while still letting text-only tests run. Delete 'gui' from +# use_resources when it should not be there so that requires('gui') +# will skip when it should. +if 'gui' in use_resources: + try: + root = tk.Tk() + root.destroy() + except TckError: + while True: + use_resources.delete('gui') + if 'gui' not in use_resources: + break + # Without test_main present, regrtest.runtest_inner (line1219) calls # unittest.TestLoader().loadTestsFromModule(this_module) which calls # load_tests() if it finds it. (Unittest.main does the same.) @@ -13,7 +27,6 @@ # Until unittest supports resources, we emulate regrtest's -ugui # so loaded tests run the same as if textually present here. # If any Idle test ever needs another resource, add it to the list. - from test import support - support.use_resources = ['gui'] # use_resources is initially None + use_resources = ['gui'] # use_resources is initially None import unittest unittest.main(verbosity=2, exit=False)