diff --git a/CHANGES/12170.misc.rst b/CHANGES/12170.misc.rst new file mode 100644 index 00000000000..23c63db50e9 --- /dev/null +++ b/CHANGES/12170.misc.rst @@ -0,0 +1 @@ +Fixed race condition in ``test_data_file`` on Python 3.14 free-threaded builds -- by :user:`rodrigobnogueira`. diff --git a/tests/test_client_request.py b/tests/test_client_request.py index fc693fc16c3..054496e6748 100644 --- a/tests/test_client_request.py +++ b/tests/test_client_request.py @@ -1352,7 +1352,18 @@ async def test_data_file( assert isinstance(req.body, payload.BufferedReaderPayload) assert req.headers["TRANSFER-ENCODING"] == "chunked" - resp = await req._send(conn) + original_write_bytes = req._write_bytes + + async def _mock_write_bytes( + writer: AbstractStreamWriter, conn: mock.Mock, content_length: int | None + ) -> None: + # Ensure the task is scheduled so _writer isn't None + await asyncio.sleep(0) + await original_write_bytes(writer, conn, content_length) + + with mock.patch.object(req, "_write_bytes", _mock_write_bytes): + resp = await req._send(conn) + assert asyncio.isfuture(req._writer) await resp.wait_for_close()