diff options
Diffstat (limited to 'Examples/test-suite/python/director_exception_runme.py')
-rw-r--r-- | Examples/test-suite/python/director_exception_runme.py | 28 |
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(): |