File: //usr/lib64/python2.6/site-packages/mx/Tools/mxTools/test_safecall.py
""" Test safecall() mxTools API.
"""
import mxTools, os, signal
def simulate_segfault():
os.kill(os.getpid(), signal.SIGSEGV)
# Make sure Python catches the signal
for i in range(10000):
pass
def real_segfault(errtype=0):
mxTools.segfault(errtype)
print 'Simulating programming errors ...'
for i in range(5):
print ' Try %i' % i
try:
mxTools.safecall(simulate_segfault)
except RuntimeError, reason:
print ' RuntimeError: %s' % reason
else:
print ' No RuntimeError ?!'
print
print 'Real world programming errors ...'
for errtype in range(5):
print ' Error type %i' % errtype
try:
mxTools.safecall(real_segfault, (errtype,))
except RuntimeError, reason:
print ' RuntimeError: %s' % reason
else:
print ' No RuntimeError ?!'
print
print 'Works.'