Skip to content

Commit 49cc2e7

Browse files
[3.11] gh-103186: Suppress RuntimeWarning about unclosed async iterator in test_sys_settrace (GH-109075) (GH-109086)
(cherry picked from commit d485551)
1 parent 12f40a4 commit 49cc2e7

File tree

1 file changed

+28
-4
lines changed

1 file changed

+28
-4
lines changed

Lib/test/test_sys_settrace.py

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,20 @@ async def asynciter(iterable):
4141
for x in iterable:
4242
yield x
4343

44+
def clean_asynciter(test):
45+
@wraps(test)
46+
async def wrapper(*args, **kwargs):
47+
cleanups = []
48+
def wrapped_asynciter(iterable):
49+
it = asynciter(iterable)
50+
cleanups.append(it.aclose)
51+
return it
52+
try:
53+
return await test(*args, **kwargs, asynciter=wrapped_asynciter)
54+
finally:
55+
while cleanups:
56+
await cleanups.pop()()
57+
return wrapper
4458

4559
# A very basic example. If this fails, we're in deep trouble.
4660
def basic():
@@ -1868,7 +1882,11 @@ def compare_jump_output(self, expected, received):
18681882

18691883
def run_test(self, func, jumpFrom, jumpTo, expected, error=None,
18701884
event='line', decorated=False):
1871-
tracer = JumpTracer(func, jumpFrom, jumpTo, event, decorated)
1885+
wrapped = func
1886+
while hasattr(wrapped, '__wrapped__'):
1887+
wrapped = wrapped.__wrapped__
1888+
1889+
tracer = JumpTracer(wrapped, jumpFrom, jumpTo, event, decorated)
18721890
sys.settrace(tracer.trace)
18731891
output = []
18741892
if error is None:
@@ -1881,7 +1899,11 @@ def run_test(self, func, jumpFrom, jumpTo, expected, error=None,
18811899

18821900
def run_async_test(self, func, jumpFrom, jumpTo, expected, error=None,
18831901
event='line', decorated=False):
1884-
tracer = JumpTracer(func, jumpFrom, jumpTo, event, decorated)
1902+
wrapped = func
1903+
while hasattr(wrapped, '__wrapped__'):
1904+
wrapped = wrapped.__wrapped__
1905+
1906+
tracer = JumpTracer(wrapped, jumpFrom, jumpTo, event, decorated)
18851907
sys.settrace(tracer.trace)
18861908
output = []
18871909
if error is None:
@@ -1949,15 +1971,17 @@ def test_jump_out_of_block_backwards(output):
19491971
output.append(7)
19501972

19511973
@async_jump_test(4, 5, [3, 5])
1952-
async def test_jump_out_of_async_for_block_forwards(output):
1974+
@clean_asynciter
1975+
async def test_jump_out_of_async_for_block_forwards(output, asynciter):
19531976
for i in [1]:
19541977
async for i in asynciter([1, 2]):
19551978
output.append(3)
19561979
output.append(4)
19571980
output.append(5)
19581981

19591982
@async_jump_test(5, 2, [2, 4, 2, 4, 5, 6])
1960-
async def test_jump_out_of_async_for_block_backwards(output):
1983+
@clean_asynciter
1984+
async def test_jump_out_of_async_for_block_backwards(output, asynciter):
19611985
for i in [1]:
19621986
output.append(2)
19631987
async for i in asynciter([1]):

0 commit comments

Comments
 (0)