Browse Source
bpo-44515: handle non-refcounted GC in contextlib tests (GH-26910)
Co-authored-by: Łukasz Langa <lukasz@langa.pl>
pull/27398/head
Nick Coghlan
5 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
13 additions and
6 deletions
-
Lib/test/test_contextlib.py
-
Lib/test/test_contextlib_async.py
-
Misc/NEWS.d/next/Tests/2021-06-26-18-37-36.bpo-44515.e9fO6f.rst
|
|
|
@ -231,6 +231,8 @@ def woohoo(): |
|
|
|
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 |
|
|
|
|
|
|
|
@ -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 @@ class AclosingTestCase(unittest.TestCase): |
|
|
|
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, []) |
|
|
|
|
|
|
|
@ -0,0 +1,2 @@ |
|
|
|
Adjust recently added contextlib tests to avoid assuming the use of a |
|
|
|
refcounted GC |