@@ -41,6 +41,20 @@ async def asynciter(iterable):
41
41
for x in iterable :
42
42
yield x
43
43
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
44
58
45
59
# A very basic example. If this fails, we're in deep trouble.
46
60
def basic ():
@@ -1936,7 +1950,11 @@ def compare_jump_output(self, expected, received):
1936
1950
1937
1951
def run_test (self , func , jumpFrom , jumpTo , expected , error = None ,
1938
1952
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 )
1940
1958
sys .settrace (tracer .trace )
1941
1959
output = []
1942
1960
@@ -1952,7 +1970,11 @@ def run_test(self, func, jumpFrom, jumpTo, expected, error=None,
1952
1970
1953
1971
def run_async_test (self , func , jumpFrom , jumpTo , expected , error = None ,
1954
1972
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 )
1956
1978
sys .settrace (tracer .trace )
1957
1979
output = []
1958
1980
@@ -2023,15 +2045,17 @@ def test_jump_out_of_block_backwards(output):
2023
2045
output .append (7 )
2024
2046
2025
2047
@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 ):
2027
2050
for i in [1 ]:
2028
2051
async for i in asynciter ([1 , 2 ]):
2029
2052
output .append (3 )
2030
2053
output .append (4 )
2031
2054
output .append (5 )
2032
2055
2033
2056
@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 ):
2035
2059
for i in [1 ]:
2036
2060
output .append (2 )
2037
2061
async for i in asynciter ([1 ]):
0 commit comments