Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 182e2d6

Browse files
committed
Group Python specific tests
1 parent 48ed790 commit 182e2d6

File tree

1 file changed

+121
-113
lines changed

1 file changed

+121
-113
lines changed

‎tests/execution/test_parallel.py

Lines changed: 121 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -195,136 +195,144 @@ async def is_type_of_baz(obj, *_args):
195195
None,
196196
)
197197

198-
@pytest.mark.asyncio
199-
async def cancel_selection_sets_on_exception():
200-
barrier = Barrier(2)
201-
completed = False
202-
203-
async def succeed(*_args):
204-
nonlocal completed
205-
await barrier.wait()
206-
completed = True # pragma: no cover
207-
208-
async def fail(*_args):
209-
raise RuntimeError("Oops")
210-
211-
schema = GraphQLSchema(
212-
GraphQLObjectType(
213-
"Query",
214-
{
215-
"foo": GraphQLField(GraphQLNonNull(GraphQLBoolean), resolve=fail),
216-
"bar": GraphQLField(GraphQLBoolean, resolve=succeed),
217-
},
198+
def describe_cancel_on_exception():
199+
"""Tests for cancellation of parallel execution on exception.
200+
201+
These tests are specifically targeted at the Python asyncio implementation.
202+
"""
203+
204+
@pytest.mark.asyncio
205+
async def cancel_selection_sets():
206+
barrier = Barrier(2)
207+
completed = False
208+
209+
async def succeed(*_args):
210+
nonlocal completed
211+
await barrier.wait()
212+
completed = True # pragma: no cover
213+
214+
async def fail(*_args):
215+
raise RuntimeError("Oops")
216+
217+
schema = GraphQLSchema(
218+
GraphQLObjectType(
219+
"Query",
220+
{
221+
"foo": GraphQLField(
222+
GraphQLNonNull(GraphQLBoolean), resolve=fail
223+
),
224+
"bar": GraphQLField(GraphQLBoolean, resolve=succeed),
225+
},
226+
)
218227
)
219-
)
220228

221-
ast = parse("{foo, bar}")
229+
ast = parse("{foo, bar}")
222230

223-
awaitable_result = execute(schema, ast)
224-
assert isinstance(awaitable_result, Awaitable)
225-
result = await asyncio.wait_for(awaitable_result, 1)
231+
awaitable_result = execute(schema, ast)
232+
assert isinstance(awaitable_result, Awaitable)
233+
result = await asyncio.wait_for(awaitable_result, 1)
226234

227-
assert result == (
228-
None,
229-
[{"message": "Oops", "locations": [(1, 2)], "path": ["foo"]}],
230-
)
231-
232-
assert not completed
233-
234-
# Unblock succeed() and check that it does not complete
235-
await barrier.wait()
236-
await asyncio.sleep(0)
237-
assert not completed
235+
assert result == (
236+
None,
237+
[{"message": "Oops", "locations": [(1, 2)], "path": ["foo"]}],
238+
)
238239

239-
@pytest.mark.asyncio
240-
async def cancel_lists_on_exception():
241-
barrier = Barrier(2)
242-
completed = False
240+
assert not completed
243241

244-
async def succeed(*_args):
245-
nonlocal completed
242+
# Unblock succeed() and check that it does not complete
246243
await barrier.wait()
247-
completed = True # pragma: no cover
248-
249-
async def fail(*_args):
250-
raise RuntimeError("Oops")
251-
252-
async def resolve_list(*args):
253-
return [fail(*args), succeed(*args)]
254-
255-
schema = GraphQLSchema(
256-
GraphQLObjectType(
257-
"Query",
258-
{
259-
"foo": GraphQLField(
260-
GraphQLList(GraphQLNonNull(GraphQLBoolean)),
261-
resolve=resolve_list,
262-
)
263-
},
244+
await asyncio.sleep(0)
245+
assert not completed
246+
247+
@pytest.mark.asyncio
248+
async def cancel_lists():
249+
barrier = Barrier(2)
250+
completed = False
251+
252+
async def succeed(*_args):
253+
nonlocal completed
254+
await barrier.wait()
255+
completed = True # pragma: no cover
256+
257+
async def fail(*_args):
258+
raise RuntimeError("Oops")
259+
260+
async def resolve_list(*args):
261+
return [fail(*args), succeed(*args)]
262+
263+
schema = GraphQLSchema(
264+
GraphQLObjectType(
265+
"Query",
266+
{
267+
"foo": GraphQLField(
268+
GraphQLList(GraphQLNonNull(GraphQLBoolean)),
269+
resolve=resolve_list,
270+
)
271+
},
272+
)
264273
)
265-
)
266274

267-
ast = parse("{foo}")
275+
ast = parse("{foo}")
268276

269-
awaitable_result = execute(schema, ast)
270-
assert isinstance(awaitable_result, Awaitable)
271-
result = await asyncio.wait_for(awaitable_result, 1)
277+
awaitable_result = execute(schema, ast)
278+
assert isinstance(awaitable_result, Awaitable)
279+
result = await asyncio.wait_for(awaitable_result, 1)
272280

273-
assert result == (
274-
{"foo": None},
275-
[{"message": "Oops", "locations": [(1, 2)], "path": ["foo", 0]}],
276-
)
277-
278-
assert not completed
279-
280-
# Unblock succeed() and check that it does not complete
281-
await barrier.wait()
282-
await asyncio.sleep(0)
283-
assert not completed
281+
assert result == (
282+
{"foo": None},
283+
[{"message": "Oops", "locations": [(1, 2)], "path": ["foo", 0]}],
284+
)
284285

285-
@pytest.mark.asyncio
286-
async def cancel_async_iterator_on_exception():
287-
barrier = Barrier(2)
288-
completed = False
286+
assert not completed
289287

290-
async def succeed(*_args):
291-
nonlocal completed
288+
# Unblock succeed() and check that it does not complete
292289
await barrier.wait()
293-
completed = True # pragma: no cover
294-
295-
async def fail(*_args):
296-
raise RuntimeError("Oops")
297-
298-
async def resolve_iterator(*args):
299-
yield fail(*args)
300-
yield succeed(*args)
301-
302-
schema = GraphQLSchema(
303-
GraphQLObjectType(
304-
"Query",
305-
{
306-
"foo": GraphQLField(
307-
GraphQLList(GraphQLNonNull(GraphQLBoolean)),
308-
resolve=resolve_iterator,
309-
)
310-
},
290+
await asyncio.sleep(0)
291+
assert not completed
292+
293+
@pytest.mark.asyncio
294+
async def cancel_async_iterators():
295+
barrier = Barrier(2)
296+
completed = False
297+
298+
async def succeed(*_args):
299+
nonlocal completed
300+
await barrier.wait()
301+
completed = True # pragma: no cover
302+
303+
async def fail(*_args):
304+
raise RuntimeError("Oops")
305+
306+
async def resolve_iterator(*args):
307+
yield fail(*args)
308+
yield succeed(*args)
309+
310+
schema = GraphQLSchema(
311+
GraphQLObjectType(
312+
"Query",
313+
{
314+
"foo": GraphQLField(
315+
GraphQLList(GraphQLNonNull(GraphQLBoolean)),
316+
resolve=resolve_iterator,
317+
)
318+
},
319+
)
311320
)
312-
)
313321

314-
ast = parse("{foo}")
322+
ast = parse("{foo}")
315323

316-
awaitable_result = execute(schema, ast)
317-
assert isinstance(awaitable_result, Awaitable)
318-
result = await asyncio.wait_for(awaitable_result, 1)
324+
awaitable_result = execute(schema, ast)
325+
assert isinstance(awaitable_result, Awaitable)
326+
result = await asyncio.wait_for(awaitable_result, 1)
319327

320-
assert result == (
321-
{"foo": None},
322-
[{"message": "Oops", "locations": [(1, 2)], "path": ["foo", 0]}],
323-
)
328+
assert result == (
329+
{"foo": None},
330+
[{"message": "Oops", "locations": [(1, 2)], "path": ["foo", 0]}],
331+
)
324332

325-
assert not completed
333+
assert not completed
326334

327-
# Unblock succeed() and check that it does not complete
328-
await barrier.wait()
329-
await asyncio.sleep(0)
330-
assert not completed
335+
# Unblock succeed() and check that it does not complete
336+
await barrier.wait()
337+
await asyncio.sleep(0)
338+
assert not completed

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /