U
    /ep                     @   sp   d Z ddlZddlmZ ddlmZmZmZmZ d a	a
dd Zdd	 Zd
d Zejddddgdd ZdS )zTest async/await integration    N   )validate_message)TIMEOUTexecuteflush_channelsstart_new_kernelc                   C   s   t  \aatt dS )zCstart the global kernel (if it isn't running) and return its clientN)r   KMKCr    r
   r
   >/tmp/pip-unpacked-wheel-g43y689f/ipykernel/tests/test_async.pysetup_function   s    
r   c                   C   s0   t d k	sttd k	stt   tjdd d S )NT)now)r	   AssertionErrorr   Zstop_channelsZshutdown_kernelr
   r
   r
   r   teardown_function   s    r   c                  C   s.   t t tdt\} }|d dks*t|d S )Nz(import asyncio; await asyncio.sleep(0.1)statusok)r   r	   r   r   )msg_idcontentr
   r
   r   test_async_await   s    r   asynclibZasyncioZtrioZcurioc                 C   sZ  t d k	sttd k	stzt|  W n" tk
rF   td|   Y nX |dd  tt  t	d|  t \}}|d dkst|tt  t 	d|  d|  d	}t j
td
}t|d| |d d dkstt j
td
}t|d t j
td
}t|d |d d dkstt  t  d }|d dks<t||d dksNttt  d S )NzRequires %sc                   S   s
   t dtS )Nz%autoawait asyncio)r   r	   r
   r
   r
   r   <lambda>'       z&test_async_interrupt.<locals>.<lambda>z%autoawait r   r   zprint('begin'); import z; await z	.sleep(5))timeoutr   Zexecution_statebusyZexecute_inputstreamtextzbegin
errorZename>   CancelledErrorKeyboardInterrupt)r	   r   r   
__import__ImportErrorpytestskipZaddfinalizerr   r   Zget_iopub_msgr   r   Zinterrupt_kernelZget_shell_msg)r   requestr   r   r   Zechor   Zreplyr
   r
   r   test_async_interrupt   s2    

r$   )__doc__r!   Ztest_message_specr   utilsr   r   r   r   r	   r   r   r   r   markZparametrizer$   r
   r
   r
   r   <module>   s   