File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -50,8 +50,12 @@ def _safe_to_string(value: Any) -> str:
5050 normalized_value = str (value )
5151 except Exception :
5252 return f"<unstringifiable { type (value ).__name__ } >"
53- if normalized_value .strip ():
54- return normalized_value
53+ sanitized_value = "" .join (
54+ "?" if ord (character ) < 32 or ord (character ) == 127 else character
55+ for character in normalized_value
56+ )
57+ if sanitized_value .strip ():
58+ return sanitized_value
5559 return f"<{ type (value ).__name__ } >"
5660
5761
Original file line number Diff line number Diff line change @@ -158,6 +158,11 @@ def __str__(self) -> str:
158158 return " "
159159
160160
161+ class _ControlFallbackError (Exception ):
162+ def __str__ (self ) -> str :
163+ return "bad\t fallback\n text"
164+
165+
161166class _BrokenFallbackResponse :
162167 @property
163168 def text (self ) -> str :
@@ -742,6 +747,14 @@ def test_extract_error_message_uses_placeholder_for_blank_fallback_error_text():
742747 assert message == "<_BlankFallbackError>"
743748
744749
750+ def test_extract_error_message_sanitizes_control_characters_in_fallback_error_text ():
751+ message = extract_error_message (
752+ _DummyResponse (" " , text = " " ), _ControlFallbackError ()
753+ )
754+
755+ assert message == "bad?fallback?text"
756+
757+
745758def test_extract_error_message_extracts_errors_list_messages ():
746759 message = extract_error_message (
747760 _DummyResponse ({"errors" : [{"msg" : "first issue" }, {"msg" : "second issue" }]}),
You can’t perform that action at this time.
0 commit comments