o
    i                     @   s   d Z ddlZddlZddlZddlZejjZddlm	Z	 ddl
mZ ddlmZmZ ddgdd	Zd
ZG dd dZG dd deZdS )z%Test the kernel specs webservice API.    N)NATIVE_KERNEL_NAME)url_path_join)NotebookTestBaseassert_http_errorcatz{connection_file}Test kernel)argvdisplay_namez(The very model of a modern major generalc                   @   s:   e Zd ZdZdd ZdddZdd Zd	d
 Zdd ZdS )KernelSpecAPIzWrapper for notebook API calls.c                 C   s
   || _ d S N)request)selfr    r   s/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/notebook/services/kernelspecs/tests/test_kernelspecs_api.py__init__   s   
zKernelSpecAPI.__init__Nc                 C   s   | j |||d}|  |S )N)data)r   raise_for_status)r   verbpathbodyresponser   r   r   _req   s   zKernelSpecAPI._reqc                 C   s   |  ddS NGETzapi/kernelspecs)r   r   r   r   r   list$   s   zKernelSpecAPI.listc                 C   s   |  dtd|S r   r   r   )r   namer   r   r   kernel_spec_info'   s   zKernelSpecAPI.kernel_spec_infoc                 C   s   |  dtd||S )Nr   kernelspecsr   )r   r   r   r   r   r   kernel_resource*   s   zKernelSpecAPI.kernel_resourcer   )	__name__
__module____qualname____doc__r   r   r   r   r    r   r   r   r   r
      s    
r
   c                   @   sX   e Zd Z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 )APITestz#Test the kernelspec web service APIc                 C   s$   |  d |  d t| j| _d S )Nsamplesample 2)create_specr
   r   ks_apir   r   r   r   setUp0   s   

zAPITest.setUpc              
   C   s   t | jd|}zt| W n ty' } z|jtjkr W Y d }~nd }~ww tt |dd}t	t
| W d    n1 sAw   Y  tt |dddd}|t W d    d S 1 saw   Y  d S )Nkernelskernel.jsonwresource.txtzutf-8)encoding)pjoindata_dirosmakedirsOSErrorerrnoEEXISTopenjsondumpsample_kernel_jsonwritesome_resource)r   r   sample_kernel_direfr   r   r   r(   5   s$   "zAPITest.create_specc              
   C   s   t | jdd}zt| W n ty' } z|jtjkr W Y d}~nd}~ww tt |dd}|d W d   n1 s@w   Y  | j	
  }t|tsSJ | |d t |d }t|tsfJ | t|d	 t| dS )
z(Can list kernelspecs when one is invalidr+   badNr,   r-   garbagedefaultr      )r0   r1   r2   r3   r4   r5   r6   r7   r;   r)   r   r8   
isinstancedictassertEqualr   assertGreaterEquallenshutilrmtree)r   bad_kernel_dirr>   r?   modelspecsr   r   r   test_list_kernelspecs_badD   s&   z!APITest.test_list_kernelspecs_badc                    s   | j   }t|tsJ | |d t |d }t|ts!J | t|d dd dd  t	fdd	|
 D sBJ |t	 fd
d	|
 D sSJ |d S )NrB   r   rC   c                 S   s   | d dko| d d dkS )Nr   r&   specr	   r   r   sr   r   r   is_sample_kernelspecd   s   z;APITest.test_list_kernelspecs.<locals>.is_sample_kernelspecc                 S   s   | d t ko| d d dS )Nr   rO   r	   Python)r   
startswithrP   r   r   r   is_default_kernelspecg   s   z<APITest.test_list_kernelspecs.<locals>.is_default_kernelspecc                 3       | ]} |V  qd S r   r   .0rQ   )rR   r   r   	<genexpr>j       z0APITest.test_list_kernelspecs.<locals>.<genexpr>c                 3   rV   r   r   rW   )rU   r   r   rY   k   rZ   )r)   r   r8   rD   rE   rF   r   rG   rH   anyvalues)r   rL   rM   r   )rU   rR   r   test_list_kernelspecsZ   s   "&zAPITest.test_list_kernelspecsc                 C   s\   | j d }| |d  d | |d t | |d d d | |d t d S )NSampler   r&   rO   r	   r   	resources)r)   r   r8   rF   lowerassertIsInstancerE   r   rL   r   r   r   test_get_kernelspecm   s
   zAPITest.test_get_kernelspecc                 C   s(   | j d }| |d  d d S )Nz
sample%202r   r'   )r)   r   r8   rF   r`   rb   r   r   r   test_get_kernelspec_spacest   s   z"APITest.test_get_kernelspec_spacesc                 C   s:   t d | jd W d    d S 1 sw   Y  d S )N  nonexistant)r   r)   r   r   r   r   r   test_get_nonexistant_kernelspecx   s   
"z'APITest.test_get_nonexistant_kernelspecc                 C   s    | j dd}| |jt d S )NsAmpler.   )r)   r    rF   textr<   )r   resr   r   r   test_get_kernel_resource_file|   s   z%APITest.test_get_kernel_resource_filec                 C   sr   t d | jdd W d    n1 sw   Y  t d | jdd W d    d S 1 s2w   Y  d S )Nre   rf   r.   r&   znonexistant.txt)r   r)   r    r   r   r   r   test_get_nonexistant_resource   s   

"z%APITest.test_get_nonexistant_resourceN)r!   r"   r#   r$   r*   r(   rN   r]   rc   rd   rg   rk   rl   r   r   r   r   r%   .   s    r%   )r$   r5   r8   r2   rI   r   joinr0   jupyter_client.kernelspecr   notebook.utilsr   notebook.tests.launchnotebookr   r   r:   r<   r
   r%   r   r   r   r   <module>   s    