Skip to content

Commit 8088c5b

Browse files
Normalize request-context bytes URLs in transport errors
Co-authored-by: Shri Sukhani <shrisukhani@users.noreply.github.com>
1 parent cace40f commit 8088c5b

2 files changed

Lines changed: 41 additions & 1 deletion

File tree

hyperbrowser/transport/error_utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ def extract_request_error_context(error: httpx.RequestError) -> tuple[str, str]:
167167
request_method = _normalize_request_method(request_method)
168168

169169
try:
170-
request_url = str(request.url)
170+
request_url = request.url
171171
except Exception:
172172
request_url = "unknown URL"
173173
request_url = _normalize_request_url(request_url)

tests/test_transport_error_utils.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,16 @@ class _WhitespaceInsideUrlRequest:
4949
url = "https://example.com/with space"
5050

5151

52+
class _BytesUrlContextRequest:
53+
method = "GET"
54+
url = b"https://example.com/from-bytes"
55+
56+
57+
class _InvalidBytesUrlContextRequest:
58+
method = "GET"
59+
url = b"\xff\xfe"
60+
61+
5262
class _RequestErrorWithFailingRequestProperty(httpx.RequestError):
5363
@property
5464
def request(self): # type: ignore[override]
@@ -97,6 +107,18 @@ def request(self): # type: ignore[override]
97107
return _WhitespaceInsideUrlRequest()
98108

99109

110+
class _RequestErrorWithBytesUrlContext(httpx.RequestError):
111+
@property
112+
def request(self): # type: ignore[override]
113+
return _BytesUrlContextRequest()
114+
115+
116+
class _RequestErrorWithInvalidBytesUrlContext(httpx.RequestError):
117+
@property
118+
def request(self): # type: ignore[override]
119+
return _InvalidBytesUrlContextRequest()
120+
121+
100122
class _DummyResponse:
101123
def __init__(self, json_value, text: str = "") -> None:
102124
self._json_value = json_value
@@ -185,6 +207,24 @@ def test_extract_request_error_context_rejects_urls_with_whitespace():
185207
assert url == "unknown URL"
186208

187209

210+
def test_extract_request_error_context_supports_bytes_url_values():
211+
method, url = extract_request_error_context(
212+
_RequestErrorWithBytesUrlContext("network down")
213+
)
214+
215+
assert method == "GET"
216+
assert url == "https://example.com/from-bytes"
217+
218+
219+
def test_extract_request_error_context_rejects_invalid_bytes_url_values():
220+
method, url = extract_request_error_context(
221+
_RequestErrorWithInvalidBytesUrlContext("network down")
222+
)
223+
224+
assert method == "GET"
225+
assert url == "unknown URL"
226+
227+
188228
def test_format_request_failure_message_uses_fallback_values():
189229
message = format_request_failure_message(
190230
httpx.RequestError("network down"),

0 commit comments

Comments
 (0)