| 
									
										
										
										
											2009-06-21 17:40:07 +00:00
										 |  |  | 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. | 
					
						
							| 
									
										
										
										
											2011-01-03 14:30:43 +00:00
										 |  |  |                 with os.popen('echo $DISPLAY') as pipe: | 
					
						
							|  |  |  |                     display = pipe.read().strip() | 
					
						
							| 
									
										
										
										
											2009-06-21 17:40:07 +00:00
										 |  |  |                 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) |