Skip to content

Commit

Permalink
[3.11] GH-95736: fix IsolatedAsyncioTestCase to initialize Runner bef… (
Browse files Browse the repository at this point in the history
#96042)

Co-authored-by: Kumar Aditya <[email protected]>
Co-authored-by: Serhiy Storchaka <[email protected]>
  • Loading branch information
kumaraditya303 and serhiy-storchaka authored Aug 18, 2022
1 parent 1b9b485 commit b68ea2a
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 0 deletions.
4 changes: 4 additions & 0 deletions Lib/unittest/async_case.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,10 @@ async def enterAsyncContext(self, cm):
return result

def _callSetUp(self):
# Force loop to be initialized and set as the current loop
# so that setUp functions can use get_event_loop() and get the
# correct loop instance.
self._asyncioRunner.get_loop()
self._asyncioTestContext.run(self.setUp)
self._callAsync(self.asyncSetUp)

Expand Down
15 changes: 15 additions & 0 deletions Lib/unittest/test/test_async_case.py
Original file line number Diff line number Diff line change
Expand Up @@ -434,6 +434,21 @@ async def cleanup(self, fut):
test.doCleanups()
self.assertEqual(events, ['asyncSetUp', 'test', 'cleanup'])

def test_setup_get_event_loop(self):
# See https://github.com/python/cpython/issues/95736
# Make sure the default event loop is not used
asyncio.set_event_loop(None)

class TestCase1(unittest.IsolatedAsyncioTestCase):
def setUp(self):
asyncio.get_event_loop_policy().get_event_loop()

async def test_demo1(self):
pass

test = TestCase1('test_demo1')
result = test.run()
self.assertTrue(result.wasSuccessful())

if __name__ == "__main__":
unittest.main()
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix :class:`unittest.IsolatedAsyncioTestCase` to set event loop before calling setup functions. Patch by Kumar Aditya.

0 comments on commit b68ea2a

Please sign in to comment.