Commit 4612259
committed
Catch utf8 decoding errors explicitly.
Previously, utf8 decode errors bubbled up into json.JSONDecodeError error
handling, which triggered a bug in py310 specifically:
- The failing test was test_http_multipart_invalid_utf8 (test #17)
- It sends invalid utf8 bytes (\xff\xfe) in the multipart response
- aiohttp's part.text() raises a UnicodeDecodeError
- The HTTP multipart transport wasn't catching UnicodeDecodeError, only json.JSONDecodeError
- When pytest tried to format the uncaught underlying UnicodeDecodeError, the exceptiongroup package in py310 hit an internal bug:
File "/home/runner/work/gql/gql/.tox/pypy3/lib/pypy3.10/site-packages/exceptiongroup/_formatting.py", line 329, in format_exception_only
yield _format_final_exc_line(stype, self._str)
File "/home/runner/work/gql/gql/.tox/pypy3/lib/pypy3.10/site-packages/exceptiongroup/_formatting.py", line 33, in _format_final_exc_line
line = f"{etype}: {valuestr}\n"
SystemError: unexpected internal exception (please report a bug): <CheckError object at 0x336b7e90>
Catching the utf8 decoding error specifically does actually improve
error handling anyway since it gives a more specific warning to the
user imo.1 parent 8611f81 commit 4612259
1 file changed
+4
-3
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
303 | 303 | | |
304 | 304 | | |
305 | 305 | | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
306 | 309 | | |
307 | | - | |
308 | | - | |
309 | | - | |
| 310 | + | |
310 | 311 | | |
311 | 312 | | |
312 | 313 | | |
| |||
0 commit comments