mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			66 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# Test the atexit module.
 | 
						|
from test.test_support import TESTFN, vereq, is_jython
 | 
						|
import atexit
 | 
						|
from os import popen, unlink
 | 
						|
import sys
 | 
						|
 | 
						|
executable = sys.executable
 | 
						|
if is_jython:
 | 
						|
    executable = "jython"
 | 
						|
 | 
						|
input = """\
 | 
						|
import atexit
 | 
						|
 | 
						|
def handler1():
 | 
						|
    print "handler1"
 | 
						|
 | 
						|
def handler2(*args, **kargs):
 | 
						|
    print "handler2", args, kargs
 | 
						|
 | 
						|
atexit.register(handler1)
 | 
						|
atexit.register(handler2)
 | 
						|
atexit.register(handler2, 7, kw="abc")
 | 
						|
"""
 | 
						|
 | 
						|
fname = TESTFN + ".py"
 | 
						|
f = file(fname, "w")
 | 
						|
f.write(input)
 | 
						|
f.close()
 | 
						|
 | 
						|
p = popen('"%s" %s' % (executable, fname))
 | 
						|
output = p.read()
 | 
						|
p.close()
 | 
						|
vereq(output, """\
 | 
						|
handler2 (7,) {'kw': 'abc'}
 | 
						|
handler2 () {}
 | 
						|
handler1
 | 
						|
""")
 | 
						|
 | 
						|
input = """\
 | 
						|
def direct():
 | 
						|
    print "direct exit"
 | 
						|
 | 
						|
import sys
 | 
						|
sys.exitfunc = direct
 | 
						|
 | 
						|
# Make sure atexit doesn't drop
 | 
						|
def indirect():
 | 
						|
    print "indirect exit"
 | 
						|
 | 
						|
import atexit
 | 
						|
atexit.register(indirect)
 | 
						|
"""
 | 
						|
 | 
						|
f = file(fname, "w")
 | 
						|
f.write(input)
 | 
						|
f.close()
 | 
						|
 | 
						|
p = popen('"%s" %s' % (executable, fname))
 | 
						|
output = p.read()
 | 
						|
p.close()
 | 
						|
vereq(output, """\
 | 
						|
indirect exit
 | 
						|
direct exit
 | 
						|
""")
 | 
						|
 | 
						|
unlink(fname)
 |