async def test_wait_cancel_pending_tasks_on_completion(event_loop): token = CancelToken('token') token2 = CancelToken('token2') chain = token.chain(token2) event_loop.call_soon(token2.trigger) await chain.wait() await assert_only_current_task_not_done()
def test_token_chain_trigger_first(): token = CancelToken('token') token2 = CancelToken('token2') token3 = CancelToken('token3') chain = token.chain(token2).chain(token3) assert not chain.triggered token.trigger() assert chain.triggered assert chain.triggered_token == token
def test_token_chain_trigger_last(): token = CancelToken('token') token2 = CancelToken('token2') token3 = CancelToken('token3') intermediate_chain = token.chain(token2) chain = intermediate_chain.chain(token3) assert not chain.triggered token3.trigger() assert chain.triggered assert chain.triggered_token == token3 assert not intermediate_chain.triggered
def test_token_chain_event_loop_mismatch(): token = CancelToken('token') token2 = CancelToken('token2', loop=asyncio.new_event_loop()) with pytest.raises(EventLoopMismatch): token.chain(token2)