File tree Expand file tree Collapse file tree 2 files changed +29
-3
lines changed
Expand file tree Collapse file tree 2 files changed +29
-3
lines changed Original file line number Diff line number Diff line change @@ -60,6 +60,13 @@ def _safe_to_string(value: Any) -> str:
6060 return f"<{ type (value ).__name__ } >"
6161
6262
63+ def _sanitize_error_message_text (message : str ) -> str :
64+ return "" .join (
65+ "?" if ord (character ) < 32 or ord (character ) == 127 else character
66+ for character in message
67+ )
68+
69+
6370def _normalize_request_method (method : Any ) -> str :
6471 raw_method = method
6572 if isinstance (raw_method , bool ):
@@ -129,9 +136,10 @@ def _normalize_request_url(url: Any) -> str:
129136
130137
131138def _truncate_error_message (message : str ) -> str :
132- if len (message ) <= _MAX_ERROR_MESSAGE_LENGTH :
133- return message
134- return f"{ message [:_MAX_ERROR_MESSAGE_LENGTH ]} ... (truncated)"
139+ sanitized_message = _sanitize_error_message_text (message )
140+ if len (sanitized_message ) <= _MAX_ERROR_MESSAGE_LENGTH :
141+ return sanitized_message
142+ return f"{ sanitized_message [:_MAX_ERROR_MESSAGE_LENGTH ]} ... (truncated)"
135143
136144
137145def _stringify_error_value (value : Any , * , _depth : int = 0 ) -> str :
Original file line number Diff line number Diff line change @@ -765,6 +765,24 @@ def test_extract_error_message_sanitizes_control_characters_in_fallback_error_te
765765 assert message == "bad?fallback?text"
766766
767767
768+ def test_extract_error_message_sanitizes_control_characters_in_json_message ():
769+ message = extract_error_message (
770+ _DummyResponse ({"message" : "bad\t json\n message" }),
771+ RuntimeError ("fallback detail" ),
772+ )
773+
774+ assert message == "bad?json?message"
775+
776+
777+ def test_extract_error_message_sanitizes_control_characters_in_response_text_fallback ():
778+ message = extract_error_message (
779+ _DummyResponse (" " , text = "bad\t response\n text" ),
780+ RuntimeError ("fallback detail" ),
781+ )
782+
783+ assert message == "bad?response?text"
784+
785+
768786def test_extract_error_message_extracts_errors_list_messages ():
769787 message = extract_error_message (
770788 _DummyResponse ({"errors" : [{"msg" : "first issue" }, {"msg" : "second issue" }]}),
You can’t perform that action at this time.
0 commit comments