From cd81f2784eb4dbf959cf05fb30374478d41efb04 Mon Sep 17 00:00:00 2001 From: Stefan Behnel Date: Tue, 3 Mar 2009 18:56:09 +0100 Subject: [PATCH] test case for ticket #228 --- tests/bugs/funcexc_iter_T228.pyx | 55 ++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 tests/bugs/funcexc_iter_T228.pyx diff --git a/tests/bugs/funcexc_iter_T228.pyx b/tests/bugs/funcexc_iter_T228.pyx new file mode 100644 index 00000000..f15251de --- /dev/null +++ b/tests/bugs/funcexc_iter_T228.pyx @@ -0,0 +1,55 @@ +__doc__ = u""" +>>> def py_iterator(): +... if True: return +... yield None + +>>> list(py_iterator()) +[] +>>> list(cy_iterator()) +[] + +>>> try: +... raise ValueError +... except: +... print(sys.exc_info()[0] is ValueError or sys.exc_info()[0]) +... a = list(py_iterator()) +... print(sys.exc_info()[0] is ValueError or sys.exc_info()[0]) +... a = list(cy_iterator()) +... print(sys.exc_info()[0] is ValueError or sys.exc_info()[0]) +True +True +True + +>>> if IS_PY3: print(sys.exc_info()[0] is None or sys.exc_info()[0]) +... else: print(sys.exc_info()[0] is ValueError or sys.exc_info()[0]) +True + +>>> double_raise(py_iterator) +True +True +True + +>>> if IS_PY3: print(sys.exc_info()[0] is None or sys.exc_info()[0]) +... else: print(sys.exc_info()[0] is ValueError or sys.exc_info()[0]) +True +""" + +import sys + +IS_PY3 = sys.version_info[0] >= 3 + +cdef class cy_iterator(object): + def __iter__(self): + return self + def __next__(self): + raise StopIteration + +def double_raise(py_iterator): + try: + raise ValueError + except: + print(sys.exc_info()[0] is ValueError or sys.exc_info()[0]) + a = list(py_iterator()) + print(sys.exc_info()[0] is ValueError or sys.exc_info()[0]) + a = list(cy_iterator()) + print(sys.exc_info()[0] is ValueError or sys.exc_info()[0]) -- 2.26.2