Skip to content

Commit d485551

Browse files
gh-103186: Suppress RuntimeWarning about unclosed async iterator in test_sys_settrace (GH-109075)
1 parent e4bb002 commit d485551

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():
@@ -1936,7 +1950,11 @@ def compare_jump_output(self, expected, received):
19361950

19371951
def run_test(self, func, jumpFrom, jumpTo, expected, error=None,
19381952
event='line', decorated=False, warning=None):
1939-
tracer = JumpTracer(func, jumpFrom, jumpTo, event, decorated)
1953+
wrapped = func
1954+
while hasattr(wrapped, '__wrapped__'):
1955+
wrapped = wrapped.__wrapped__
1956+
1957+
tracer = JumpTracer(wrapped, jumpFrom, jumpTo, event, decorated)
19401958
sys.settrace(tracer.trace)
19411959
output = []
19421960

@@ -1952,7 +1970,11 @@ def run_test(self, func, jumpFrom, jumpTo, expected, error=None,
19521970

19531971
def run_async_test(self, func, jumpFrom, jumpTo, expected, error=None,
19541972
event='line', decorated=False, warning=None):
1955-
tracer = JumpTracer(func, jumpFrom, jumpTo, event, decorated)
1973+
wrapped = func
1974+
while hasattr(wrapped, '__wrapped__'):
1975+
wrapped = wrapped.__wrapped__
1976+
1977+
tracer = JumpTracer(wrapped, jumpFrom, jumpTo, event, decorated)
19561978
sys.settrace(tracer.trace)
19571979
output = []
19581980

@@ -2023,15 +2045,17 @@ def test_jump_out_of_block_backwards(output):
20232045
output.append(7)
20242046

20252047
@async_jump_test(4, 5, [3, 5])
2026-
async def test_jump_out_of_async_for_block_forwards(output):
2048+
@clean_asynciter
2049+
async def test_jump_out_of_async_for_block_forwards(output, asynciter):
20272050
for i in [1]:
20282051
async for i in asynciter([1, 2]):
20292052
output.append(3)
20302053
output.append(4)
20312054
output.append(5)
20322055

20332056
@async_jump_test(5, 2, [2, 4, 2, 4, 5, 6])
2034-
async def test_jump_out_of_async_for_block_backwards(output):
2057+
@clean_asynciter
2058+
async def test_jump_out_of_async_for_block_backwards(output, asynciter):
20352059
for i in [1]:
20362060
output.append(2)
20372061
async for i in asynciter([1]):

0 commit comments

Comments
 (0)