aboutsummaryrefslogtreecommitdiff
path: root/Examples/test-suite/python/director_exception_runme.py
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/test-suite/python/director_exception_runme.py')
-rw-r--r--Examples/test-suite/python/director_exception_runme.py28
1 files changed, 26 insertions, 2 deletions
diff --git a/Examples/test-suite/python/director_exception_runme.py b/Examples/test-suite/python/director_exception_runme.py
index 892c7e653..06856f30a 100644
--- a/Examples/test-suite/python/director_exception_runme.py
+++ b/Examples/test-suite/python/director_exception_runme.py
@@ -25,6 +25,13 @@ class MyFoo3(Foo):
def ping(self):
raise MyException("foo", "bar")
+class MyFoo4(Foo):
+
+ def ping(self, *args):
+ print(type("bad", "call")) # throws TypeError message: type() takes 1 or 3 arguments
+ return "Foo4.ping"
+
+
# Check that the NotImplementedError raised by MyFoo.ping() is returned by
# MyFoo.pong().
ok = 0
@@ -51,7 +58,8 @@ b = launder(a)
try:
b.pong()
except TypeError, e:
- if str(e) == "SWIG director type mismatch in output value of type 'std::string'":
+ # fastdispatch mode adds on Additional Information to the exception message - just check the main exception message exists
+ if str(e).startswith("SWIG director type mismatch in output value of type 'std::string'"):
ok = 1
else:
print "Unexpected error message: %s" % str(e)
@@ -67,13 +75,29 @@ b = launder(a)
try:
b.pong()
except MyException, e:
- if e.msg == 'foobar':
+ if e.msg == "foobar":
ok = 1
else:
print "Unexpected error message: %s" % str(e)
if not ok:
raise RuntimeError
+
+# Check that the director returns the appropriate TypeError thrown in a director method
+ok = 0
+a = MyFoo4()
+b = launder(a)
+try:
+ b.pong()
+except TypeError as e:
+ if str(e).startswith("type() takes 1 or 3 arguments"):
+ ok = 1
+ else:
+ print "Unexpected error message: %s" % str(e)
+if not ok:
+ raise RuntimeError
+
+
# This is expected to fail with -builtin option
# Throwing builtin classes as exceptions not supported
if not is_python_builtin():