tests/basics: Add tests for type-checking subclassed exc instances.
This commit is contained in:
parent
fe2bc92b4d
commit
c3c2c37fbc
|
@ -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])
|
|
@ -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
|
Loading…
Reference in New Issue