Skip to content

Commit 2066d88

Browse files
authored
check for message attribute (#81)
* check for message * test * comment
1 parent 6f20b6b commit 2066d88

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

src/ploomber_core/exceptions.py

+5
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,11 @@ def _add_community_link(e):
8787
elif COMMUNITY not in e.args[0]:
8888
message = e.args[0] + COMMUNITY
8989
e.args = (message,)
90+
# Certain exceptions like ClickException have message
91+
# as their first parameter. In that case args is not
92+
# accessed while raising the error
93+
if hasattr(e, "message"):
94+
e.message = message
9095

9196
return e
9297

tests/test_exceptions.py

+17
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,23 @@ def crash():
5454
assert exceptions.get_community_link() in str(excinfo.value)
5555

5656

57+
def test_modify_exceptions_with_message_attribute():
58+
class CustomException(Exception):
59+
def __init__(self, message: str) -> None:
60+
super().__init__(message)
61+
self.message = message
62+
self.modify_exception = True
63+
64+
@exceptions.modify_exceptions
65+
def crash():
66+
raise CustomException("some message")
67+
68+
with pytest.raises(CustomException) as excinfo:
69+
crash()
70+
71+
assert exceptions.get_community_link() in str(excinfo.value)
72+
73+
5774
def test_modify_exceptions_value_error():
5875
@exceptions.modify_exceptions
5976
def crash():

0 commit comments

Comments
 (0)