Add default messages to SanicExceptions (#2216)
* Add default messages to SanicExceptions * Cleaner exception message setting
This commit is contained in:
parent
08c5689441
commit
e1cfbf0fd9
@ -4,16 +4,20 @@ from sanic.helpers import STATUS_CODES
|
|||||||
|
|
||||||
|
|
||||||
class SanicException(Exception):
|
class SanicException(Exception):
|
||||||
|
message: str = ""
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
message: Optional[Union[str, bytes]] = None,
|
message: Optional[Union[str, bytes]] = None,
|
||||||
status_code: Optional[int] = None,
|
status_code: Optional[int] = None,
|
||||||
quiet: Optional[bool] = None,
|
quiet: Optional[bool] = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
|
if message is None:
|
||||||
if message is None and status_code is not None:
|
if self.message:
|
||||||
msg: bytes = STATUS_CODES.get(status_code, b"")
|
message = self.message
|
||||||
message = msg.decode("utf8")
|
elif status_code is not None:
|
||||||
|
msg: bytes = STATUS_CODES.get(status_code, b"")
|
||||||
|
message = msg.decode("utf8")
|
||||||
|
|
||||||
super().__init__(message)
|
super().__init__(message)
|
||||||
|
|
||||||
|
@ -235,6 +235,22 @@ def test_sanic_exception(exception_app):
|
|||||||
assert len(w) == 1 and "deprecated" in w[0].message.args[0]
|
assert len(w) == 1 and "deprecated" in w[0].message.args[0]
|
||||||
|
|
||||||
|
|
||||||
|
def test_custom_exception_default_message(exception_app):
|
||||||
|
class TeaError(SanicException):
|
||||||
|
message = "Tempest in a teapot"
|
||||||
|
status_code = 418
|
||||||
|
|
||||||
|
exception_app.router.reset()
|
||||||
|
|
||||||
|
@exception_app.get("/tempest")
|
||||||
|
def tempest(_):
|
||||||
|
raise TeaError
|
||||||
|
|
||||||
|
_, response = exception_app.test_client.get("/tempest", debug=True)
|
||||||
|
assert response.status == 418
|
||||||
|
assert b"Tempest in a teapot" in response.body
|
||||||
|
|
||||||
|
|
||||||
def test_exception_in_ws_logged(caplog):
|
def test_exception_in_ws_logged(caplog):
|
||||||
app = Sanic(__file__)
|
app = Sanic(__file__)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user