summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_asyncio
diff options
context:
space:
mode:
authorKirill Podoprigora <kirill.bast9@mail.ru>2024-10-14 17:59:13 (GMT)
committerGitHub <noreply@github.com>2024-10-14 17:59:13 (GMT)
commite99650b80ace3893c2a80b3f2a4aca99cb305191 (patch)
tree40ffbb74761cee6d4f4a6ef5755539ed92ff299e /Lib/test/test_asyncio
parent187580d95c8339a3b6e2b012f98d86101c346cfa (diff)
downloadcpython-e99650b80ace3893c2a80b3f2a4aca99cb305191.zip
cpython-e99650b80ace3893c2a80b3f2a4aca99cb305191.tar.gz
cpython-e99650b80ace3893c2a80b3f2a4aca99cb305191.tar.bz2
gh-125472: Revert "gh-124958: fix asyncio.TaskGroup and _PyFuture refcycles (#12… (#125476)
Revert "gh-124958: fix asyncio.TaskGroup and _PyFuture refcycles (#124959)" This reverts commit d5dbbf4372cd3dbf3eead1cc70ddc4261c061fd9.
Diffstat (limited to 'Lib/test/test_asyncio')
-rw-r--r--Lib/test/test_asyncio/test_futures.py22
-rw-r--r--Lib/test/test_asyncio/test_taskgroups.py92
2 files changed, 2 insertions, 112 deletions
diff --git a/Lib/test/test_asyncio/test_futures.py b/Lib/test/test_asyncio/test_futures.py
index c566b28..458b704 100644
--- a/Lib/test/test_asyncio/test_futures.py
+++ b/Lib/test/test_asyncio/test_futures.py
@@ -659,28 +659,6 @@ class BaseFutureTests:
fut = self._new_future(loop=self.loop)
fut.set_result(Evil())
- def test_future_cancelled_result_refcycles(self):
- f = self._new_future(loop=self.loop)
- f.cancel()
- exc = None
- try:
- f.result()
- except asyncio.CancelledError as e:
- exc = e
- self.assertIsNotNone(exc)
- self.assertListEqual(gc.get_referrers(exc), [])
-
- def test_future_cancelled_exception_refcycles(self):
- f = self._new_future(loop=self.loop)
- f.cancel()
- exc = None
- try:
- f.exception()
- except asyncio.CancelledError as e:
- exc = e
- self.assertIsNotNone(exc)
- self.assertListEqual(gc.get_referrers(exc), [])
-
@unittest.skipUnless(hasattr(futures, '_CFuture'),
'requires the C _asyncio module')
diff --git a/Lib/test/test_asyncio/test_taskgroups.py b/Lib/test/test_asyncio/test_taskgroups.py
index 138f59e..4852536 100644
--- a/Lib/test/test_asyncio/test_taskgroups.py
+++ b/Lib/test/test_asyncio/test_taskgroups.py
@@ -1,7 +1,7 @@
# Adapted with permission from the EdgeDB project;
# license: PSFL.
-import gc
+
import asyncio
import contextvars
import contextlib
@@ -11,6 +11,7 @@ import warnings
from test.test_asyncio.utils import await_without_task
+
# To prevent a warning "test altered the execution environment"
def tearDownModule():
asyncio.set_event_loop_policy(None)
@@ -898,95 +899,6 @@ class TestTaskGroup(unittest.IsolatedAsyncioTestCase):
await outer()
- async def test_exception_refcycles_direct(self):
- """Test that TaskGroup doesn't keep a reference to the raised ExceptionGroup"""
- tg = asyncio.TaskGroup()
- exc = None
-
- class _Done(Exception):
- pass
-
- try:
- async with tg:
- raise _Done
- except ExceptionGroup as e:
- exc = e
-
- self.assertIsNotNone(exc)
- self.assertListEqual(gc.get_referrers(exc), [])
-
-
- async def test_exception_refcycles_errors(self):
- """Test that TaskGroup deletes self._errors, and __aexit__ args"""
- tg = asyncio.TaskGroup()
- exc = None
-
- class _Done(Exception):
- pass
-
- try:
- async with tg:
- raise _Done
- except* _Done as excs:
- exc = excs.exceptions[0]
-
- self.assertIsInstance(exc, _Done)
- self.assertListEqual(gc.get_referrers(exc), [])
-
-
- async def test_exception_refcycles_parent_task(self):
- """Test that TaskGroup deletes self._parent_task"""
- tg = asyncio.TaskGroup()
- exc = None
-
- class _Done(Exception):
- pass
-
- async def coro_fn():
- async with tg:
- raise _Done
-
- try:
- async with asyncio.TaskGroup() as tg2:
- tg2.create_task(coro_fn())
- except* _Done as excs:
- exc = excs.exceptions[0].exceptions[0]
-
- self.assertIsInstance(exc, _Done)
- self.assertListEqual(gc.get_referrers(exc), [])
-
- async def test_exception_refcycles_propagate_cancellation_error(self):
- """Test that TaskGroup deletes propagate_cancellation_error"""
- tg = asyncio.TaskGroup()
- exc = None
-
- try:
- async with asyncio.timeout(-1):
- async with tg:
- await asyncio.sleep(0)
- except TimeoutError as e:
- exc = e.__cause__
-
- self.assertIsInstance(exc, asyncio.CancelledError)
- self.assertListEqual(gc.get_referrers(exc), [])
-
- async def test_exception_refcycles_base_error(self):
- """Test that TaskGroup deletes self._base_error"""
- class MyKeyboardInterrupt(KeyboardInterrupt):
- pass
-
- tg = asyncio.TaskGroup()
- exc = None
-
- try:
- async with tg:
- raise MyKeyboardInterrupt
- except MyKeyboardInterrupt as e:
- exc = e
-
- self.assertIsNotNone(exc)
- self.assertListEqual(gc.get_referrers(exc), [])
-
if __name__ == "__main__":
unittest.main()