Update version number and release date.
[python/dscho.git] / Lib / test / test_atexit.py
blob1d120dfe2ca9356e816c03b303159b0e5513e54b
1 # Test the atexit module.
2 from test.test_support import TESTFN, vereq, is_jython
3 import atexit
4 from os import popen, unlink
5 import sys
7 executable = sys.executable
8 if is_jython:
9 executable = "jython"
11 input = """\
12 import atexit
14 def handler1():
15 print "handler1"
17 def handler2(*args, **kargs):
18 print "handler2", args, kargs
20 atexit.register(handler1)
21 atexit.register(handler2)
22 atexit.register(handler2, 7, kw="abc")
23 """
25 fname = TESTFN + ".py"
26 f = file(fname, "w")
27 f.write(input)
28 f.close()
30 p = popen('"%s" %s' % (executable, fname))
31 output = p.read()
32 p.close()
33 vereq(output, """\
34 handler2 (7,) {'kw': 'abc'}
35 handler2 () {}
36 handler1
37 """)
39 input = """\
40 def direct():
41 print "direct exit"
43 import sys
44 sys.exitfunc = direct
46 # Make sure atexit doesn't drop
47 def indirect():
48 print "indirect exit"
50 import atexit
51 atexit.register(indirect)
52 """
54 f = file(fname, "w")
55 f.write(input)
56 f.close()
58 p = popen('"%s" %s' % (executable, fname))
59 output = p.read()
60 p.close()
61 vereq(output, """\
62 indirect exit
63 direct exit
64 """)
66 unlink(fname)