From: Stefan Behnel Date: Sun, 18 Oct 2009 12:42:50 +0000 (+0200) Subject: new test case for reraising exceptions X-Git-Tag: 0.13.beta0~2^2~121^2~16 X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=ecf22d5a109a06116457c0e6cfe0fbfb3fd8f309;p=cython.git new test case for reraising exceptions --- diff --git a/tests/run/funcexceptreraise.pyx b/tests/run/funcexceptreraise.pyx new file mode 100644 index 00000000..8c24c41c --- /dev/null +++ b/tests/run/funcexceptreraise.pyx @@ -0,0 +1,56 @@ + +import sys + +def reraise(f, exc): + """ + >>> def f(exc): raise exc + >>> reraise(f, TypeError) + Traceback (most recent call last): + TypeError + + >>> def f(exc): raise exc('hiho') + >>> reraise(f, TypeError) + Traceback (most recent call last): + TypeError: hiho + """ + try: + f(exc) + except: + assert sys.exc_info()[0] is exc, str(sys.exc_info()[1]) + raise + +def reraise_original(f, exc, raise_catch): + """ + >>> def f(exc): raise exc + >>> def raise_catch_py(): + ... try: raise ValueError + ... except: pass + + >>> reraise_original(f, TypeError, raise_catch_py) + Traceback (most recent call last): + TypeError + + >>> reraise_original(f, TypeError, raise_catch_cy) + Traceback (most recent call last): + TypeError + + >>> reraise_original(f, TypeError, raise_catch_cy_non_empty) + Traceback (most recent call last): + TypeError + """ + try: + f(exc) + except: + raise_catch() + assert sys.exc_info()[0] is exc, str(sys.exc_info()[1]) + raise + + +def raise_catch_cy(): + try: raise ValueError + except: pass + +def raise_catch_cy_non_empty(): + try: raise ValueError + except: + a = 1+1