summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_tcl.py31
-rw-r--r--Lib/tkinter/test/test_tkinter/test_loadtk.py45
-rw-r--r--Misc/NEWS5
3 files changed, 50 insertions, 31 deletions
diff --git a/Lib/test/test_tcl.py b/Lib/test/test_tcl.py
index cfff971..eebdd25 100644
--- a/Lib/test/test_tcl.py
+++ b/Lib/test/test_tcl.py
@@ -127,37 +127,6 @@ class TclTest(unittest.TestCase):
tcl = self.interp
self.assertRaises(TclError,tcl.eval,'package require DNE')
- def testLoadTk(self):
- import os
- if 'DISPLAY' not in os.environ:
- # skipping test of clean upgradeability
- return
- tcl = Tcl()
- self.assertRaises(TclError,tcl.winfo_geometry)
- tcl.loadtk()
- self.assertEqual('1x1+0+0', tcl.winfo_geometry())
- tcl.destroy()
-
- def testLoadTkFailure(self):
- import os
- old_display = None
- import sys
- if sys.platform.startswith(('win', 'darwin', 'cygwin')):
- return # no failure possible on windows?
- with support.EnvironmentVarGuard() as env:
- if 'DISPLAY' in os.environ:
- del env['DISPLAY']
- # on some platforms, deleting environment variables
- # doesn't actually carry through to the process level
- # because they don't support unsetenv
- # If that's the case, abort.
- display = os.popen('echo $DISPLAY').read().strip()
- if display:
- return
-
- tcl = Tcl()
- self.assertRaises(TclError, tcl.winfo_geometry)
- self.assertRaises(TclError, tcl.loadtk)
def test_main():
support.run_unittest(TclTest, TkinterTest)
diff --git a/Lib/tkinter/test/test_tkinter/test_loadtk.py b/Lib/tkinter/test/test_tkinter/test_loadtk.py
new file mode 100644
index 0000000..8f1a085
--- /dev/null
+++ b/Lib/tkinter/test/test_tkinter/test_loadtk.py
@@ -0,0 +1,45 @@
+import os
+import sys
+import unittest
+import test.support as test_support
+from tkinter import Tcl, TclError
+
+test_support.requires('gui')
+
+class TkLoadTest(unittest.TestCase):
+
+ @unittest.skipIf('DISPLAY' not in os.environ, 'No $DISPLAY set.')
+ def testLoadTk(self):
+ tcl = Tcl()
+ self.assertRaises(TclError,tcl.winfo_geometry)
+ tcl.loadtk()
+ self.assertEqual('1x1+0+0', tcl.winfo_geometry())
+ tcl.destroy()
+
+ def testLoadTkFailure(self):
+ old_display = None
+ if sys.platform.startswith(('win', 'darwin', 'cygwin')):
+ # no failure possible on windows?
+
+ # XXX Maybe on tk older than 8.4.13 it would be possible,
+ # see tkinter.h.
+ return
+ with test_support.EnvironmentVarGuard() as env:
+ if 'DISPLAY' in os.environ:
+ del env['DISPLAY']
+ # on some platforms, deleting environment variables
+ # doesn't actually carry through to the process level
+ # because they don't support unsetenv
+ # If that's the case, abort.
+ display = os.popen('echo $DISPLAY').read().strip()
+ if display:
+ return
+
+ tcl = Tcl()
+ self.assertRaises(TclError, tcl.winfo_geometry)
+ self.assertRaises(TclError, tcl.loadtk)
+
+tests_gui = (TkLoadTest, )
+
+if __name__ == "__main__":
+ test_support.run_unittest(*tests_gui)
diff --git a/Misc/NEWS b/Misc/NEWS
index 9adcfdf..7ecb6d7 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -1337,6 +1337,11 @@ Extension Modules
Tests
-----
+- Issue #5450: Moved tests involving loading tk from Lib/test/test_tcl to
+ Lib/tkinter/test/test_tkinter/test_loadtk. With this, these tests demonstrate
+ the same behaviour as test_ttkguionly (and now also test_tk) which is to
+ skip the tests if DISPLAY is defined but can't be used.
+
- regrtest no longer treats ImportError as equivalent to SkipTest. Imports
that should cause a test to be skipped are now done using import_module
from test support, which does the conversion.