diff options
Diffstat (limited to 'tests/run/cpp_exceptions_utility_code.pyx')
-rw-r--r-- | tests/run/cpp_exceptions_utility_code.pyx | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/run/cpp_exceptions_utility_code.pyx b/tests/run/cpp_exceptions_utility_code.pyx new file mode 100644 index 000000000..74f87dfb1 --- /dev/null +++ b/tests/run/cpp_exceptions_utility_code.pyx @@ -0,0 +1,33 @@ +# mode: run +# tag: cpp, werror, no-cpp-locals +# ticket: 3065 + +# This is intentionally in a file on its own. The issue was that it failed to generate utility-code +# and so putting it with the other c++ exception checks wouldn't be a useful test + +cdef extern from *: + """ + #include <stdexcept> + + void cppf(int raiseCpp) { + if (raiseCpp) { + throw std::runtime_error("cpp"); + } else { + PyErr_SetString(PyExc_RuntimeError, "py"); + } + } + """ + void cppf(int) except+* + + +def callcppf(int raiseCpp): + """ + >>> callcppf(0) + py + >>> callcppf(1) + cpp + """ + try: + cppf(raiseCpp) + except RuntimeError as e: + print(e.args[0]) |