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