diff options
| author | Mike Wadsten <mikewadsten@gmail.com> | 2020-01-13 11:52:36 -0600 |
|---|---|---|
| committer | Damien George <damien@micropython.org> | 2021-10-21 12:42:48 +1100 |
| commit | c3c2c37fbcc59f8ecd58dc294b31ad4d239fd52c (patch) | |
| tree | a32876de0fa4bb45c77a92c7ee821acf135729ad | |
| parent | fe2bc92b4d20c116fbb14b6fe92db459d8ce2126 (diff) | |
tests/basics: Add tests for type-checking subclassed exc instances.
| -rw-r--r-- | tests/basics/subclass_native_exc_new.py | 39 | ||||
| -rw-r--r-- | tests/basics/subclass_native_exc_new.py.exp | 6 |
2 files changed, 45 insertions, 0 deletions
diff --git a/tests/basics/subclass_native_exc_new.py b/tests/basics/subclass_native_exc_new.py new file mode 100644 index 000000000..c1bd89a6f --- /dev/null +++ b/tests/basics/subclass_native_exc_new.py @@ -0,0 +1,39 @@ +# test subclassing exceptions and providing __new__ + + +class Dummy(BaseException): + pass + + +class GoodException(BaseException): + def __new__(cls, *args, **kwargs): + print("GoodException __new__") + return Dummy(*args, **kwargs) + + +class BadException(BaseException): + def __new__(cls, *args, **kwargs): + print("BadException __new__") + return 1 + + +try: + raise GoodException("good message") +except BaseException as good: + print(type(good), good.args[0]) + +try: + raise BadException("bad message") +except Exception as bad: + # Should be TypeError 'exceptions must derive from BaseException' + print(type(bad), bad.args[0]) + +try: + + def gen(): + yield + + gen().throw(BadException) +except Exception as genbad: + # Should be TypeError 'exceptions must derive from BaseException' + print(type(genbad), genbad.args[0]) diff --git a/tests/basics/subclass_native_exc_new.py.exp b/tests/basics/subclass_native_exc_new.py.exp new file mode 100644 index 000000000..65709b2cc --- /dev/null +++ b/tests/basics/subclass_native_exc_new.py.exp @@ -0,0 +1,6 @@ +GoodException __new__ +<class 'Dummy'> good message +BadException __new__ +<class 'TypeError'> exceptions must derive from BaseException +BadException __new__ +<class 'TypeError'> exceptions must derive from BaseException |
