Skip to content

Commit a1ba0e5

Browse files
[3.12] gh-103186: Suppress RuntimeWarning about unclosed async iterator in test_sys_settrace (GH-109075) (#109138)
gh-103186: Suppress RuntimeWarning about unclosed async iterator in test_sys_settrace (GH-109075) (cherry picked from commit d485551) Co-authored-by: Serhiy Storchaka <[email protected]>
1 parent fff524e commit a1ba0e5

File tree

1 file changed

+28
-4
lines changed

1 file changed

+28
-4
lines changed

Lib/test/test_sys_settrace.py

+28-4
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():
@@ -1914,7 +1928,11 @@ def compare_jump_output(self, expected, received):
19141928

19151929
def run_test(self, func, jumpFrom, jumpTo, expected, error=None,
19161930
event='line', decorated=False, warning=None):
1917-
tracer = JumpTracer(func, jumpFrom, jumpTo, event, decorated)
1931+
wrapped = func
1932+
while hasattr(wrapped, '__wrapped__'):
1933+
wrapped = wrapped.__wrapped__
1934+
1935+
tracer = JumpTracer(wrapped, jumpFrom, jumpTo, event, decorated)
19181936
sys.settrace(tracer.trace)
19191937
output = []
19201938

@@ -1930,7 +1948,11 @@ def run_test(self, func, jumpFrom, jumpTo, expected, error=None,
19301948

19311949
def run_async_test(self, func, jumpFrom, jumpTo, expected, error=None,
19321950
event='line', decorated=False, warning=None):
1933-
tracer = JumpTracer(func, jumpFrom, jumpTo, event, decorated)
1951+
wrapped = func
1952+
while hasattr(wrapped, '__wrapped__'):
1953+
wrapped = wrapped.__wrapped__
1954+
1955+
tracer = JumpTracer(wrapped, jumpFrom, jumpTo, event, decorated)
19341956
sys.settrace(tracer.trace)
19351957
output = []
19361958

@@ -2001,15 +2023,17 @@ def test_jump_out_of_block_backwards(output):
20012023
output.append(7)
20022024

20032025
@async_jump_test(4, 5, [3, 5])
2004-
async def test_jump_out_of_async_for_block_forwards(output):
2026+
@clean_asynciter
2027+
async def test_jump_out_of_async_for_block_forwards(output, asynciter):
20052028
for i in [1]:
20062029
async for i in asynciter([1, 2]):
20072030
output.append(3)
20082031
output.append(4)
20092032
output.append(5)
20102033

20112034
@async_jump_test(5, 2, [2, 4, 2, 4, 5, 6])
2012-
async def test_jump_out_of_async_for_block_backwards(output):
2035+
@clean_asynciter
2036+
async def test_jump_out_of_async_for_block_backwards(output, asynciter):
20132037
for i in [1]:
20142038
output.append(2)
20152039
async for i in asynciter([1]):

0 commit comments

Comments
 (0)