forked from goodboy/tractor
Port tests to handle our new `asyncio` cancelled type
parent
6803891bd7
commit
c4b3bb354e
|
@ -1,5 +1,5 @@
|
||||||
'''
|
'''
|
||||||
The most hipster way to force SC onto the stdlib's "async".
|
The hipster way to force SC onto the stdlib's "async": 'infection mode'.
|
||||||
|
|
||||||
'''
|
'''
|
||||||
from typing import Optional, Iterable
|
from typing import Optional, Iterable
|
||||||
|
@ -74,7 +74,7 @@ async def asyncio_actor(
|
||||||
if expect_err:
|
if expect_err:
|
||||||
assert isinstance(err, error_type)
|
assert isinstance(err, error_type)
|
||||||
|
|
||||||
raise err
|
raise
|
||||||
|
|
||||||
|
|
||||||
def test_aio_simple_error(arb_addr):
|
def test_aio_simple_error(arb_addr):
|
||||||
|
@ -134,7 +134,7 @@ def test_trio_cancels_aio(arb_addr):
|
||||||
# cancel the nursery shortly after boot
|
# cancel the nursery shortly after boot
|
||||||
|
|
||||||
async with tractor.open_nursery() as n:
|
async with tractor.open_nursery() as n:
|
||||||
portal = await n.run_in_actor(
|
await n.run_in_actor(
|
||||||
asyncio_actor,
|
asyncio_actor,
|
||||||
target='sleep_forever',
|
target='sleep_forever',
|
||||||
expect_err='trio.Cancelled',
|
expect_err='trio.Cancelled',
|
||||||
|
@ -144,9 +144,9 @@ def test_trio_cancels_aio(arb_addr):
|
||||||
trio.run(main)
|
trio.run(main)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
async def aio_cancel():
|
async def aio_cancel():
|
||||||
''''Cancel urself boi.
|
''''
|
||||||
|
Cancel urself boi.
|
||||||
|
|
||||||
'''
|
'''
|
||||||
await asyncio.sleep(0.5)
|
await asyncio.sleep(0.5)
|
||||||
|
@ -164,16 +164,16 @@ def test_aio_cancelled_from_aio_causes_trio_cancelled(arb_addr):
|
||||||
portal = await n.run_in_actor(
|
portal = await n.run_in_actor(
|
||||||
asyncio_actor,
|
asyncio_actor,
|
||||||
target='aio_cancel',
|
target='aio_cancel',
|
||||||
expect_err='asyncio.CancelledError',
|
expect_err='tractor.to_asyncio.AsyncioCancelled',
|
||||||
infect_asyncio=True,
|
infect_asyncio=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
# with trio.CancelScope(shield=True):
|
|
||||||
await portal.result()
|
|
||||||
|
|
||||||
with pytest.raises(RemoteActorError) as excinfo:
|
with pytest.raises(RemoteActorError) as excinfo:
|
||||||
trio.run(main)
|
trio.run(main)
|
||||||
|
|
||||||
|
# ensure boxed error is correct
|
||||||
|
assert excinfo.value.type == to_asyncio.AsyncioCancelled
|
||||||
|
|
||||||
|
|
||||||
# TODO: verify open_channel_from will fail on this..
|
# TODO: verify open_channel_from will fail on this..
|
||||||
async def no_to_trio_in_args():
|
async def no_to_trio_in_args():
|
||||||
|
@ -201,7 +201,7 @@ async def push_from_aio_task(
|
||||||
if i == 50 and fail_early:
|
if i == 50 and fail_early:
|
||||||
raise Exception
|
raise Exception
|
||||||
|
|
||||||
print(f'asyncio streamer complete!')
|
print('asyncio streamer complete!')
|
||||||
|
|
||||||
except asyncio.CancelledError:
|
except asyncio.CancelledError:
|
||||||
if not expect_cancel:
|
if not expect_cancel:
|
||||||
|
|
Loading…
Reference in New Issue