From ecf22d5a109a06116457c0e6cfe0fbfb3fd8f309 Mon Sep 17 00:00:00 2001 From: Stefan Behnel Date: Sun, 18 Oct 2009 14:42:50 +0200 Subject: [PATCH] new test case for reraising exceptions --- tests/run/funcexceptreraise.pyx | 56 +++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 tests/run/funcexceptreraise.pyx 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 -- 2.26.2