summaryrefslogtreecommitdiff
path: root/tests/run/cpp_exceptions_utility_code.pyx
diff options
context:
space:
mode:
Diffstat (limited to 'tests/run/cpp_exceptions_utility_code.pyx')
-rw-r--r--tests/run/cpp_exceptions_utility_code.pyx33
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])