From 484399f482675d7a45c68adbedfadef338da2b31 Mon Sep 17 00:00:00 2001 From: Carl George Date: Sat, 7 Dec 2024 01:52:41 -0600 Subject: [PATCH] Avoid manual async loop management Python 3.14 removes the implicit creation of an event loop when running asyncio.get_event_loop(). Rather than manually managing the loop creation, switch the async tests to use the higher level asyncio.run() interface, as recommended by the standard library docs. https://docs.python.org/dev/whatsnew/3.14.html#id4 Resolves #741 --- tests/sh_test.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/tests/sh_test.py b/tests/sh_test.py index d12c3dc..8a87fd6 100644 --- a/tests/sh_test.py +++ b/tests/sh_test.py @@ -1707,7 +1707,6 @@ print("hello") ) alternating = [] - q = AQueue() async def producer(q): alternating.append(1) @@ -1722,9 +1721,11 @@ print("hello") self.assertEqual(msg, "hello") alternating.append(2) - loop = asyncio.get_event_loop() - fut = asyncio.gather(producer(q), consumer(q)) - loop.run_until_complete(fut) + async def main(): + q = AQueue() + await asyncio.gather(producer(q), consumer(q)) + + asyncio.run(main()) self.assertListEqual(alternating, [1, 2, 1, 2]) def test_async_exc(self): @@ -1733,8 +1734,7 @@ print("hello") async def producer(): await python(py.name, _async=True) - loop = asyncio.get_event_loop() - self.assertRaises(sh.ErrorReturnCode_34, loop.run_until_complete, producer()) + self.assertRaises(sh.ErrorReturnCode_34, asyncio.run, producer()) def test_async_iter(self): py = create_tmp_test( @@ -1743,7 +1743,6 @@ for i in range(5): print(i) """ ) - q = AQueue() # this list will prove that our coroutines are yielding to eachother as each # line is produced @@ -1763,9 +1762,11 @@ for i in range(5): return alternating.append(2) - loop = asyncio.get_event_loop() - res = asyncio.gather(producer(q), consumer(q)) - loop.run_until_complete(res) + async def main(): + q = AQueue() + await asyncio.gather(producer(q), consumer(q)) + + asyncio.run(main()) self.assertListEqual(alternating, [1, 2, 1, 2, 1, 2, 1, 2, 1, 2]) def test_async_iter_exc(self): @@ -1783,8 +1784,7 @@ exit(34) async for line in python(py.name, _async=True): lines.append(int(line.strip())) - loop = asyncio.get_event_loop() - self.assertRaises(sh.ErrorReturnCode_34, loop.run_until_complete, producer()) + self.assertRaises(sh.ErrorReturnCode_34, asyncio.run, producer()) def test_handle_both_out_and_err(self): py = create_tmp_test( -- 2.47.1