17db96d56Sopenharmony_ciimport os 27db96d56Sopenharmony_ciimport sys 37db96d56Sopenharmony_ciimport unittest 47db96d56Sopenharmony_ciimport test.support as test_support 57db96d56Sopenharmony_cifrom test.support import os_helper 67db96d56Sopenharmony_cifrom tkinter import Tcl, TclError 77db96d56Sopenharmony_ci 87db96d56Sopenharmony_citest_support.requires('gui') 97db96d56Sopenharmony_ci 107db96d56Sopenharmony_ciclass TkLoadTest(unittest.TestCase): 117db96d56Sopenharmony_ci 127db96d56Sopenharmony_ci @unittest.skipIf('DISPLAY' not in os.environ, 'No $DISPLAY set.') 137db96d56Sopenharmony_ci def testLoadTk(self): 147db96d56Sopenharmony_ci tcl = Tcl() 157db96d56Sopenharmony_ci self.assertRaises(TclError,tcl.winfo_geometry) 167db96d56Sopenharmony_ci tcl.loadtk() 177db96d56Sopenharmony_ci self.assertEqual('1x1+0+0', tcl.winfo_geometry()) 187db96d56Sopenharmony_ci tcl.destroy() 197db96d56Sopenharmony_ci 207db96d56Sopenharmony_ci def testLoadTkFailure(self): 217db96d56Sopenharmony_ci old_display = None 227db96d56Sopenharmony_ci if sys.platform.startswith(('win', 'darwin', 'cygwin')): 237db96d56Sopenharmony_ci # no failure possible on windows? 247db96d56Sopenharmony_ci 257db96d56Sopenharmony_ci # XXX Maybe on tk older than 8.4.13 it would be possible, 267db96d56Sopenharmony_ci # see tkinter.h. 277db96d56Sopenharmony_ci return 287db96d56Sopenharmony_ci with os_helper.EnvironmentVarGuard() as env: 297db96d56Sopenharmony_ci if 'DISPLAY' in os.environ: 307db96d56Sopenharmony_ci del env['DISPLAY'] 317db96d56Sopenharmony_ci # on some platforms, deleting environment variables 327db96d56Sopenharmony_ci # doesn't actually carry through to the process level 337db96d56Sopenharmony_ci # because they don't support unsetenv 347db96d56Sopenharmony_ci # If that's the case, abort. 357db96d56Sopenharmony_ci with os.popen('echo $DISPLAY') as pipe: 367db96d56Sopenharmony_ci display = pipe.read().strip() 377db96d56Sopenharmony_ci if display: 387db96d56Sopenharmony_ci return 397db96d56Sopenharmony_ci 407db96d56Sopenharmony_ci tcl = Tcl() 417db96d56Sopenharmony_ci self.assertRaises(TclError, tcl.winfo_geometry) 427db96d56Sopenharmony_ci self.assertRaises(TclError, tcl.loadtk) 437db96d56Sopenharmony_ci 447db96d56Sopenharmony_ci 457db96d56Sopenharmony_ciif __name__ == "__main__": 467db96d56Sopenharmony_ci unittest.main() 47