annotate Lib/tkinter/test/test_tkinter/test_loadtk.py @ 87690:66c1c9f32567 default tip

Add use_weakref option to functools.lru_cache The use_weakref option makes lru_cache create weak references to the function arguments when creating the cache key, which prevents them from staying in the memory forever even after all other references to them are gone. This is a proof of concept for http://bugs.python.org/issue19859
author Radomir Dopieralski <devel@sheep.art.pl>
date Tue, 03 Dec 2013 16:02:48 +0100
parents ba16ff86d4f6
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
54806
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
1 import os
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
2 import sys
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
3 import unittest
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
4 import test.support as test_support
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
5 from tkinter import Tcl, TclError
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
6
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
7 test_support.requires('gui')
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
8
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
9 class TkLoadTest(unittest.TestCase):
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
10
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
11 @unittest.skipIf('DISPLAY' not in os.environ, 'No $DISPLAY set.')
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
12 def testLoadTk(self):
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
13 tcl = Tcl()
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
14 self.assertRaises(TclError,tcl.winfo_geometry)
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
15 tcl.loadtk()
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
16 self.assertEqual('1x1+0+0', tcl.winfo_geometry())
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
17 tcl.destroy()
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
18
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
19 def testLoadTkFailure(self):
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
20 old_display = None
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
21 if sys.platform.startswith(('win', 'darwin', 'cygwin')):
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
22 # no failure possible on windows?
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
23
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
24 # XXX Maybe on tk older than 8.4.13 it would be possible,
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
25 # see tkinter.h.
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
26 return
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
27 with test_support.EnvironmentVarGuard() as env:
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
28 if 'DISPLAY' in os.environ:
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
29 del env['DISPLAY']
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
30 # on some platforms, deleting environment variables
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
31 # doesn't actually carry through to the process level
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
32 # because they don't support unsetenv
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
33 # If that's the case, abort.
67297
ba16ff86d4f6 test_tkinter: use a context manager to close directly the pipe
Victor Stinner <victor.stinner@haypocalc.com>
parents: 54806
diff changeset
34 with os.popen('echo $DISPLAY') as pipe:
ba16ff86d4f6 test_tkinter: use a context manager to close directly the pipe
Victor Stinner <victor.stinner@haypocalc.com>
parents: 54806
diff changeset
35 display = pipe.read().strip()
54806
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
36 if display:
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
37 return
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
38
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
39 tcl = Tcl()
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
40 self.assertRaises(TclError, tcl.winfo_geometry)
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
41 self.assertRaises(TclError, tcl.loadtk)
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
42
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
43 tests_gui = (TkLoadTest, )
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
44
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
45 if __name__ == "__main__":
a950a4434f8b Merged revisions 73495 via svnmerge from
Guilherme Polo <ggpolo@gmail.com>
parents:
diff changeset
46 test_support.run_unittest(*tests_gui)