U
    /eg                     @   s   d Z ddlZddlZddlZddlZejdkr<ejddd dd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. ZdS )/ztest the IPython Kernel    Nntzskipping tests on windowsT)Zallow_module_levelc                    s*   |  di I d H }|d d dks&td S )NZkernel_info_requestheadermsg_typeZkernel_info_replytest_shell_messageAssertionErrorkernelreply r   F/tmp/pip-unpacked-wheel-g43y689f/ipykernel/tests/test_kernel_direct.pytest_direct_kernel_info_request   s    r   c                    s2   |  dtdddI d H }|d d dks.td S )Nexecute_requesthelloFcodeZsilentr   r   execute_replyr   dictr   r   r   r   r   test_direct_execute_request   s    r   c                    sL   d| _ | dtdddI d H }|d d dks4t|d	 d
 dksHtd S )NTr   r   Fr   r   r   r   contentstatusaborted)Z	_abortingr   r   r   r   r   r   r   $test_direct_execute_request_aborting   s    r   c                    s   |  d d d I d H  d S N)r   r	   r   r   r   !test_direct_execute_request_error!   s    r   c                    s2   |  dtdddI d H }|d d dks.td S )NZcomplete_requestr   r   r   Z
cursor_posr   r   Zcomplete_replyr   r   r   r   r   test_complete_request%   s    r   c                    s2   |  dtdddI d H }|d d dks.td S )NZinspect_requestr   r   r   r   r   Zinspect_replyr   r   r   r   r   test_inspect_request*   s    r   c                    s   |  dtddddI d H }|d d dks0t|  dtddddI d H }|d d dks`t|  dtddddI d H }|d d dkst|  dtd	dddI d H }|d d dkstd S )
NZhistory_request )Zhist_access_typeoutputrawr   r   Zhistory_replytailrangesearchr   r   r   r   r   test_history_request/   s(     
 
 
 
r&   c                    s(   |  dI d H }|d d dks$td S )NZcomm_info_requestr   r   Zcomm_info_replyr   r   r   r   r   test_comm_info_requestB   s    r'   c                    s   |  di I d H }|d d dks&t|d ddiks:tdd	 }|| _|  di I d H }|d d dksnt|d d d
kst|d d dkst|d d dkstt|d d dkstd S )NZinterrupt_requestr   r   Zinterrupt_replyr   r   okc                   S   s   t dd S )Nevalue)OSErrorr   r   r   r   raiseOSErrorM   s    z3test_direct_interrupt_request.<locals>.raiseOSErrorerrorZenamer*   r)   	tracebackr   )test_control_messager   _send_interrupt_childrenlen)r	   r
   r+   r   r   r   test_direct_interrupt_requestG   s    r1   c                    s\   |  dtddI d H }|d d dks,t|  dtddI d H }|d d dksXtd S )Nshutdown_requestF)Zrestartr   r   Zshutdown_replyTr   r   r   r   r   test_direct_shutdown_requestY   s    r3   c                    s0   |  dtddI d H }|d d dks,td S )NZis_complete_requestr   )r   r   r   Zis_complete_replyr   r   r   r   r   test_is_complete_request`   s    r4   c                    s*   |  di I d H }|d d dks&td S )Ndebug_requestr   r   Zdebug_reply)r.   r   r   r   r   r   test_direct_debug_requeste   s    r6   c              	      sz   t  h t dt | j}t|ts*t| j}t	|dks@t|d | j
ksRtt dt | j
| j
g| _W 5 Q R X d S )Nignore   r   )warningscatch_warningssimplefilterDeprecationWarningZ_parent_header
isinstancer   r   shell_streamsr0   shell_streamRuntimeWarning)r	   r   r>   r   r   r   test_deprecated_featuresj   s    
rA   c                    sP   ddl m} G dd d}| ||dgI d H  | d}| |I d H  d S )Nr   DELIMc                   @   s   e Zd Zdd ZdS )z%test_process_control.<locals>.FakeMsgc                 S   s
   || _ d S r   bytesselfrE   r   r   r   __init__z   s    z.test_process_control.<locals>.FakeMsg.__init__N__name__
__module____qualname__rH   r   r   r   r   FakeMsgy   s   rM   r8   does_not_exist)jupyter_client.sessionrC   Zprocess_control	_prep_msgr	   rC   rM   msgr   r   r   test_process_controlv   s
    
rS   c                 C   s:   | j di }| j|d d  | | j|g r6td S )Nr5   r   Zmsg_id)sessionrR   r   addZshould_handleZcontrol_streamr   )r	   rR   r   r   r   test_should_handle   s    rV   c                    sP   ddl m} G dd d}| ||dgI d H  | d}| |I d H  d S )Nr   rB   c                   @   s   e Zd Zdd ZdS )z$test_dispatch_shell.<locals>.FakeMsgc                 S   s
   || _ d S r   rD   rF   r   r   r   rH      s    z-test_dispatch_shell.<locals>.FakeMsg.__init__NrI   r   r   r   r   rM      s   rM   r8   rN   )rO   rC   Zdispatch_shellrP   rQ   r   r   r   test_dispatch_shell   s
    
rW   c                    s   t  | _|  I d H  d S r   )asyncioQueueZ	msg_queueZdo_one_iterationr   r   r   r   test_do_one_iteration   s    
rZ   c                    s   |  i  d S r   )Z_publish_debug_eventr   r   r   r   test_publish_debug_event   s    r[   c                    s   |  | jdi I d H  d S )NZfoo)Zconnect_requestr?   r   r   r   r   test_connect_request   s    r\   c                    s   |    d S r   )r/   r   r   r   r   test_send_interrupt_children   s    r]   )__doc__rX   osr9   Zpytestnameskipr   r   r   r   r   r   r&   r'   r1   r3   r4   r6   rA   rS   rV   rW   rZ   r[   r\   r]   r   r   r   r   <module>   s4   
