Skip to content

Commit 5cd55a2

Browse files
committed
just add tests file now
1 parent 8e700eb commit 5cd55a2

File tree

3 files changed

+902
-0
lines changed

3 files changed

+902
-0
lines changed

tests/autofix_files/trio912.py

Lines changed: 328 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,328 @@
1+
# AUTOFIX
2+
# ARG --enable=TRIO910,TRIO911,TRIO912
3+
from typing import Any
4+
5+
import trio
6+
import trio.lowlevel
7+
8+
9+
async def foo() -> Any:
10+
await trio.lowlevel.checkpoint()
11+
12+
13+
async def sequence_00():
14+
await trio.lowlevel.checkpoint()
15+
16+
17+
async def sequence_01():
18+
await foo()
19+
20+
21+
async def sequence_10():
22+
await foo()
23+
24+
25+
async def sequence_11():
26+
await foo()
27+
await foo()
28+
29+
30+
# all permutations of 3
31+
async def sequencing_000():
32+
await trio.lowlevel.checkpoint()
33+
34+
35+
async def sequencing_001():
36+
await foo()
37+
38+
39+
async def sequencing_010():
40+
await foo()
41+
42+
43+
async def sequencing_011():
44+
await foo()
45+
await foo()
46+
47+
48+
async def sequencing_100():
49+
await foo()
50+
51+
52+
async def sequencing_101():
53+
await foo()
54+
await foo()
55+
56+
57+
async def sequencing_110():
58+
await foo()
59+
await foo()
60+
61+
62+
async def sequencing_111():
63+
await foo()
64+
await foo()
65+
await foo()
66+
67+
68+
# when entering an if statement, there's 3 possible states:
69+
# there's uncheckpointed statements
70+
# checkpointed by lowlevel
71+
# checkpointed by non-lowlevel
72+
73+
74+
# we need to determined whether to treat the if statement as a lowlevel checkpoint,
75+
# a non-lowlevel checkpoint, or not checkpointing. Both w/r/t statements before it, and
76+
# separately w/r/t statements after it.
77+
# and we also need to handle redundant checkpoints within bodies of it.
78+
79+
# the if statement can:
80+
81+
# 1. not checkpoint at all, easy
82+
# 2. checkpoint in all branches with lowlevel, in which case they can all be removed
83+
# 3. checkpoint in at least some branches with non-lowlevel.
84+
85+
86+
async def foo_if():
87+
if ...:
88+
await trio.lowlevel.checkpoint()
89+
else:
90+
await foo()
91+
92+
93+
async def foo_if_2():
94+
if ...:
95+
await trio.lowlevel.checkpoint()
96+
else:
97+
await trio.lowlevel.checkpoint()
98+
99+
100+
async def foo_if_3():
101+
await trio.lowlevel.checkpoint()
102+
if ...:
103+
await trio.lowlevel.checkpoint() # TRIO912: 8
104+
else:
105+
await trio.lowlevel.checkpoint() # TRIO912: 8
106+
107+
108+
async def foo_if_4():
109+
if ...:
110+
await trio.lowlevel.checkpoint()
111+
else:
112+
await trio.lowlevel.checkpoint()
113+
114+
115+
async def foo_if_5():
116+
if ...:
117+
await trio.lowlevel.checkpoint() # TRIO912: 8
118+
else:
119+
await trio.lowlevel.checkpoint() # TRIO912: 8
120+
await foo()
121+
122+
123+
async def foo_if_0000():
124+
await trio.lowlevel.checkpoint()
125+
if ...:
126+
await trio.lowlevel.checkpoint() # TRIO912: 8
127+
else:
128+
await trio.lowlevel.checkpoint() # TRIO912: 8
129+
130+
131+
async def foo_if_0001():
132+
if ...:
133+
await trio.lowlevel.checkpoint() # TRIO912: 8
134+
else:
135+
await trio.lowlevel.checkpoint() # TRIO912: 8
136+
await foo()
137+
138+
139+
async def foo_if_0010():
140+
if ...:
141+
await trio.lowlevel.checkpoint() # TRIO912: 8 # INCORRECT
142+
else:
143+
await foo()
144+
145+
146+
async def foo_if_0100():
147+
if ...:
148+
await foo()
149+
else:
150+
await trio.lowlevel.checkpoint() # TRIO912: 8 # INCORRECT
151+
152+
153+
async def foo_if_1000():
154+
await foo()
155+
if ...:
156+
await trio.lowlevel.checkpoint() # TRIO912: 8
157+
else:
158+
await trio.lowlevel.checkpoint() # TRIO912: 8
159+
160+
161+
async def foo_if_1000_1():
162+
await foo()
163+
yield
164+
if ...:
165+
await trio.lowlevel.checkpoint()
166+
else:
167+
await trio.lowlevel.checkpoint()
168+
169+
170+
async def foo_if_1000_2():
171+
await foo()
172+
if ...:
173+
yield
174+
await trio.lowlevel.checkpoint()
175+
else:
176+
await trio.lowlevel.checkpoint() # TRIO912: 8
177+
178+
179+
async def foo_if_1000_3():
180+
await foo()
181+
if ...:
182+
await trio.lowlevel.checkpoint() # TRIO912: 8
183+
yield
184+
else:
185+
await trio.lowlevel.checkpoint() # TRIO912: 8
186+
await trio.lowlevel.checkpoint()
187+
188+
189+
async def foo_if_1000_4():
190+
await foo()
191+
if ...:
192+
await trio.lowlevel.checkpoint() # TRIO912: 8
193+
else:
194+
yield
195+
await trio.lowlevel.checkpoint()
196+
197+
198+
async def foo_if_1000_5():
199+
await foo()
200+
if ...:
201+
await trio.lowlevel.checkpoint() # TRIO912: 8
202+
else:
203+
await trio.lowlevel.checkpoint() # TRIO912: 8
204+
yield
205+
await trio.lowlevel.checkpoint()
206+
207+
208+
async def foo_if_1000_6():
209+
await foo()
210+
if ...:
211+
await trio.lowlevel.checkpoint() # TRIO912: 8
212+
else:
213+
await trio.lowlevel.checkpoint() # TRIO912: 8
214+
yield
215+
await trio.lowlevel.checkpoint()
216+
217+
218+
async def foo_while_1():
219+
await trio.lowlevel.checkpoint()
220+
while ...:
221+
await trio.lowlevel.checkpoint() # TRIO912: 8
222+
223+
224+
async def foo_while_2():
225+
while ...:
226+
await trio.lowlevel.checkpoint() # TRIO912: 8
227+
await foo()
228+
229+
230+
async def foo_while_3():
231+
await trio.lowlevel.checkpoint()
232+
while ...:
233+
if ...:
234+
await trio.lowlevel.checkpoint() # TRIO912: 12
235+
elif ...:
236+
await trio.lowlevel.checkpoint() # TRIO912: 12
237+
else:
238+
await trio.lowlevel.checkpoint() # TRIO912: 12
239+
240+
241+
async def foo_while_4():
242+
await trio.lowlevel.checkpoint() # should be 912
243+
while ...:
244+
if ...:
245+
await foo()
246+
# and these probably shouldn't be?
247+
elif ...:
248+
await trio.lowlevel.checkpoint() # TRIO912: 12
249+
else:
250+
await trio.lowlevel.checkpoint() # TRIO912: 12
251+
252+
253+
async def foo_while_5():
254+
await trio.lowlevel.checkpoint() # should be TRIO912
255+
while ...:
256+
await foo()
257+
258+
259+
async def foo_while_6():
260+
await trio.lowlevel.checkpoint() # should error
261+
while ...:
262+
if ...:
263+
await foo()
264+
elif ...:
265+
await foo()
266+
else:
267+
await foo()
268+
269+
270+
async def foo_trio_1():
271+
await trio.lowlevel.checkpoint()
272+
try:
273+
await trio.lowlevel.checkpoint() # TRIO912: 8
274+
except:
275+
await trio.lowlevel.checkpoint() # TRIO912: 8
276+
277+
278+
async def foo_trio_2():
279+
try:
280+
await trio.lowlevel.checkpoint() # TRIO912: 8 # INCORRECT
281+
except:
282+
await foo()
283+
284+
285+
async def foo_trio_3():
286+
try:
287+
await foo()
288+
except:
289+
await trio.lowlevel.checkpoint() # TRIO912: 8 # INCORRECT
290+
291+
292+
async def foo_trio_4():
293+
try:
294+
await foo()
295+
except:
296+
await foo()
297+
298+
299+
async def foo_trio_5():
300+
await foo()
301+
try:
302+
await trio.lowlevel.checkpoint() # TRIO912: 8
303+
except:
304+
await trio.lowlevel.checkpoint() # TRIO912: 8
305+
306+
307+
async def foo_trio_6():
308+
await foo()
309+
try:
310+
await trio.lowlevel.checkpoint() # TRIO912: 8
311+
except:
312+
await foo()
313+
314+
315+
async def foo_trio_7():
316+
await foo()
317+
try:
318+
await foo()
319+
except:
320+
await trio.lowlevel.checkpoint() # TRIO912: 8
321+
322+
323+
async def foo_trio_8():
324+
await foo()
325+
try:
326+
await foo()
327+
except:
328+
await foo()

0 commit comments

Comments
 (0)