U
    /e                     @   s  d dl Z d dlZd dlZd dlZd dlmZ d dlZd dlmZ d dl	m
Z
 d dlmZ ddlmZ ddlmZ zd dlZW n ek
r   dZY nX ejjejd	kd
ddd Zdd Zdd Zejjejd	kdddd Zejjedkdddd ZdS )    N)patch)secure_write)Config)IPKernelApp   )
MockKernel)TemporaryWorkingDirectoryntzrequires ipc)reasonc                  C   s&   t dd} |   |   |   d S )NZipc)	transport)r   init_socketscleanup_connection_filecloseapp r   B/tmp/pip-unpacked-wheel-g43y689f/ipykernel/tests/test_kernelapp.pytest_init_ipc_socket   s    
r   c                  C   s   t  } d| _d| _|   d S )NT)r   Z	no_stderrZ	no_stdoutZinit_blackholer   r   r   r   test_blackhole   s    r   c                     s\   t   t  _ fdd} tj| d}|            j   	  d S )Nc                      s   t d  j jj d S )Nr   )timesleepio_loopadd_callbackstopr   r   r   r   trigger_stop)   s    
z$test_start_app.<locals>.trigger_stop)target)
r   r   kernel	threadingThreadstartr   r   destroyr   )r   threadr   r   r   test_start_app%   s    
r"   zpermission errors on windowsc            	      C   s  t  } t }|| j_tj|d}ddddddddddd	
}t|}t	|| W 5 Q R X tj
|sptt| |d
}tt|jdgd |  |  |  |  ||jksttj
|stt|}t|}W 5 Q R X dD ]\}| d}|| dkst|| dks"t|| t||ks@t| ||= ||= q|d dks`t|d= |d= ||kszt|  t| W 5 Q R X d S )Nzkernel.json*Ztcpr   i3  Zabc123zhmac-sha256z	My Kernel)
ipr   Z
shell_portZhb_portZ
iopub_portZ
stdin_portZcontrol_portkeyZsignature_schemeZkernel_name)configZconnection_file )argv)shellZhbZiopubstdinZ_portr$   )r   r   Z
ProfileDirlocationospathjoinr   jsondumpexistsAssertionErrorr   superZ
initializeZinit_connection_filer   Zinit_heartbeatZwrite_connection_fileZabs_connection_fileopenloadgetattrr   remove)	cfgdcfZinitial_connection_infofr   Znew_connection_infoportr%   r   r   r   test_merge_connection_file6   sR    



r=   zrequires trioc               	   C   sj   t dd} t | _|   tddd  |   W 5 Q R X |   | j| jj	 | j
  |   d S )NT)Z	trio_loopz$ipykernel.trio_runner.TrioRunner.runc                 S   s   d S )Nr   )_r   r   r   <lambda>~       z test_trio_loop.<locals>.<lambda>)r   r   r   r   r   r   r   r   r   r   r    r   r   r   r   r   test_trio_loopy   s    

rA   )r/   r,   r   r   Zunittest.mockr   ZpytestZjupyter_core.pathsr   Ztraitlets.config.loaderr   Zipykernel.kernelappr   Zconftestr   utilsr   ZtrioImportErrormarkZskipifnamer   r   r"   r=   rA   r   r   r   r   <module>   s,   


B