[Python-checkins] bpo-44515: handle non-refcounted GC in contextlib tests (GH-26910) (GH-27379)

ambv webhook-mailer at python.org
Mon Jul 26 17:21:46 EDT 2021


https://github.com/python/cpython/commit/0ea5e0d792a85b435ef299319dcd52e59f535cb1
commit: 0ea5e0d792a85b435ef299319dcd52e59f535cb1
branch: 3.10
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: ambv <lukasz at langa.pl>
date: 2021-07-26T23:21:36+02:00
summary:

bpo-44515: handle non-refcounted GC in contextlib tests (GH-26910) (GH-27379)

Co-authored-by: Łukasz Langa <lukasz at langa.pl>
(cherry picked from commit a2c45e5bcf9d3dfff9f2699dbc161489897616b5)

Co-authored-by: Nick Coghlan <ncoghlan at gmail.com>

files:
A Misc/NEWS.d/next/Tests/2021-06-26-18-37-36.bpo-44515.e9fO6f.rst
M Lib/test/test_contextlib.py
M Lib/test/test_contextlib_async.py

diff --git a/Lib/test/test_contextlib.py b/Lib/test/test_contextlib.py
index e6500da0ba54a..5a080654acb6c 100644
--- a/Lib/test/test_contextlib.py
+++ b/Lib/test/test_contextlib.py
@@ -231,6 +231,8 @@ class A:
         def woohoo(a, b):
             a = weakref.ref(a)
             b = weakref.ref(b)
+            # Allow test to work with a non-refcounted GC
+            support.gc_collect()
             self.assertIsNone(a())
             self.assertIsNone(b())
             yield
diff --git a/Lib/test/test_contextlib_async.py b/Lib/test/test_contextlib_async.py
index 9cb40d1d60664..603162eaeaa7b 100644
--- a/Lib/test/test_contextlib_async.py
+++ b/Lib/test/test_contextlib_async.py
@@ -1,7 +1,7 @@
 import asyncio
 from contextlib import (
     asynccontextmanager, AbstractAsyncContextManager,
-    AsyncExitStack, nullcontext, aclosing)
+    AsyncExitStack, nullcontext, aclosing, contextmanager)
 import functools
 from test import support
 import unittest
@@ -357,14 +357,17 @@ async def aclose(self):
     async def test_aclosing_bpo41229(self):
         state = []
 
-        class Resource:
-            def __del__(self):
+        @contextmanager
+        def sync_resource():
+            try:
+                yield
+            finally:
                 state.append(1)
 
         async def agenfunc():
-            r = Resource()
-            yield -1
-            yield -2
+            with sync_resource():
+                yield -1
+                yield -2
 
         x = agenfunc()
         self.assertEqual(state, [])
diff --git a/Misc/NEWS.d/next/Tests/2021-06-26-18-37-36.bpo-44515.e9fO6f.rst b/Misc/NEWS.d/next/Tests/2021-06-26-18-37-36.bpo-44515.e9fO6f.rst
new file mode 100644
index 0000000000000..d2867b6e89f87
--- /dev/null
+++ b/Misc/NEWS.d/next/Tests/2021-06-26-18-37-36.bpo-44515.e9fO6f.rst
@@ -0,0 +1,2 @@
+Adjust recently added contextlib tests to avoid assuming the use of a
+refcounted GC



More information about the Python-checkins mailing list