Skip to content

IsolatedAsyncioTestCase does not call asyncio.set_event_loop before setUp anymore, asyncio.Runner+PidFdChildWatcher leaves zombie processes #95736

@graingert

Description

@graingert

demo reproducer:

import unittest import asyncio class DemoTestCase1(unittest.IsolatedAsyncioTestCase): def setUp(self): self.loop = asyncio.get_event_loop_policy().get_event_loop() async def test_demo(self): print("hello!") class DemoTestCase2(unittest.IsolatedAsyncioTestCase): def setUp(self): self.loop = asyncio.get_event_loop_policy().get_event_loop() async def test_demo(self): print("hello!") if __name__ == "__main__": unittest.main()

see also #93896

 graingert@conscientious  testing310  ~/projects  python3.10 foo.py hello! .hello! . ---------------------------------------------------------------------- Ran 2 tests in 0.002s OK 
 graingert@conscientious  testing310  ~/projects  python3.11 foo.py hello! .E ====================================================================== ERROR: test_demo (__main__.DemoTestCase2.test_demo) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/lib/python3.11/unittest/async_case.py", line 82, in _callSetUp self._asyncioTestContext.run(self.setUp) File "/home/graingert/projects/foo.py", line 14, in setUp self.loop = asyncio.get_event_loop_policy().get_event_loop() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/asyncio/events.py", line 677, in get_event_loop raise RuntimeError('There is no current event loop in thread %r.' RuntimeError: There is no current event loop in thread 'MainThread'. ---------------------------------------------------------------------- Ran 2 tests in 0.002s FAILED (errors=1) 

it looks like this is because asyncio.Runner calls asyncio.set_event_loop( in Runner.run

Metadata

Metadata

Labels

3.11only security fixes3.12only security fixestopic-asynciotype-bugAn unexpected behavior, bug, or error

Projects

Status

Todo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions