a
    m b	                     @   s   d Z ddlZddlZddlZddlZddlmZ ddlmZ ddl	Z	ddl
Z
ejejeZe	jdd Ze	jdd Ze	jd	d
 ZdddZe	jdd Ze	jdd Zdd Zdd Zdd ZdS )zTTest launching Jupyter Server Applications
through as ExtensionApp launch_instance.
    N)hexlify)Pathc                   C   s   dS )Ni'   r   r   r   Ilib/python3.9/site-packages/jupyter_server/tests/extension/test_launch.pyport   s    r   c                   C   s   t tddS )N   ascii)r   osurandomdecoder   r   r   r   token   s    r   c                 C   s   dd|  iS )NZAuthorizationztoken %sr   )r   r   r   r   auth_header   s    r   皙?c                 C   sB   zt | }W q> ty8   |r*| s*J t| Y q 0 q>q d S N)requestsget	Exceptiontimesleep)urlintervalcheckrr   r   r   wait_up!   s    
r   c                    s   g df fdd	}|S )NTc                    sp    fdd}|rd df t jtjddd dd	g| td
 | d }t| fddd  S )Nc                      s.   z    W n ty   Y n0  d d S )N
   )Z	terminateOSErrorwaitr   Zprocessr   r   _kill_extension_app1   s
    zHlaunch_instance.<locals>._run_in_subprocess.<locals>._kill_extension_appz--ServerApp.token=""z-mzmockextensions.appz--port=z--ip=127.0.0.1z--no-browser)cwdhttp://127.0.0.1:c                      s      d u S r   )Zpollr   r   r   r   <lambda>K       z=launch_instance.<locals>._run_in_subprocess.<locals>.<lambda>)r   )
subprocessPopensys
executableHEREZaddfinalizerr   )argv	add_tokenr   r   r   requestr   r   r   _run_in_subprocess0   s&    	

z+launch_instance.<locals>._run_in_subprocessr   )r,   r   r   r-   r   r+   r   launch_instance.   s    r.   c                    s    fdd}|S )Nc                    s   d |  }t j| dS )Nr!   )Zheaders)r   r   )Zendpointr   r   r   r   r   _getS   s    zfetch.<locals>._getr   )r   r   r0   r   r/   r   fetchQ   s    r1   c                 C   s    |   |d}|j dksJ d S )N/mock   status_coder.   r1   r   r   r   r   test_launch_instanceZ   s    r7   c                 C   s$   | dg |d}|j dks J d S )Nz--ServerApp.base_url=/fooz	/foo/mockr3   r4   r6   r   r   r   test_base_url`   s    
r8   c                 C   s\   t td }t|tjd< |j|dd | dd |d}tjd= |  |jdksXJ d S )	Nztoken_file.txtZJUPYTER_TOKEN_FILEzutf-8)encodingF)r*   r2   r3   )r(   r   strr	   environ
write_textunlinkr5   )r.   r1   r   Z
token_filer   r   r   r   test_token_filef   s    
r>   )r   N)__doc__r	   r$   r&   r   Zbinasciir   pathlibr   Zpytestr   pathdirnameabspath__file__r(   Zfixturer   r   r   r   r.   r1   r7   r8   r>   r   r   r   r   <module>   s.   




"
