diff --git a/Lib/test/test_asyncio/test_base_events.py b/Lib/test/test_asyncio/test_base_events.py index b4fd7abed5963ea..1622f19f0213f3c 100644 --- a/Lib/test/test_asyncio/test_base_events.py +++ b/Lib/test/test_asyncio/test_base_events.py @@ -1092,7 +1092,11 @@ async def sock_connect(sock, address): await asyncio.sleep(1) sock.connect(address) - loop = asyncio.new_event_loop() + # gh-151540: use a selector event loop instead of the platform + # default; the Windows proactor loop would register the mocked + # socket with a real IOCP handle instead of the mocked + # _add_reader/_add_writer below. + loop = asyncio.SelectorEventLoop() loop._add_writer = mock.Mock() loop._add_writer = mock.Mock() loop._add_reader = mock.Mock() @@ -1124,7 +1128,8 @@ async def sock_connect(sock, address): await asyncio.sleep(1) sock.connect(address) - loop = asyncio.new_event_loop() + # gh-151540: see test_create_connection_happy_eyeballs above. + loop = asyncio.SelectorEventLoop() loop._add_writer = mock.Mock() loop._add_writer = mock.Mock() loop._add_reader = mock.Mock() diff --git a/Misc/NEWS.d/next/Tests/2026-07-08-21-45-00.gh-issue-151540.pQx3Wm.rst b/Misc/NEWS.d/next/Tests/2026-07-08-21-45-00.gh-issue-151540.pQx3Wm.rst new file mode 100644 index 000000000000000..e70ca8f688cddd6 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2026-07-08-21-45-00.gh-issue-151540.pQx3Wm.rst @@ -0,0 +1,5 @@ +Fix the happy-eyeballs tests in ``test.test_asyncio.test_base_events`` +raising ``TypeError`` in a callback on Windows. The tests now use a +selector event loop explicitly instead of the platform default, as the +Windows proactor event loop registers the mocked test socket with a real +I/O completion port.