new test case for reraising exceptions
authorStefan Behnel <scoder@users.berlios.de>
Sun, 18 Oct 2009 12:42:50 +0000 (14:42 +0200)
committerStefan Behnel <scoder@users.berlios.de>
Sun, 18 Oct 2009 12:42:50 +0000 (14:42 +0200)
tests/run/funcexceptreraise.pyx [new file with mode: 0644]

diff --git a/tests/run/funcexceptreraise.pyx b/tests/run/funcexceptreraise.pyx
new file mode 100644 (file)
index 0000000..8c24c41
--- /dev/null
@@ -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