
    Ib                         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      Z G d de      Zy)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                   0    e Zd ZdZd ZddZd Zd Zd Zy)	KernelSpecAPIzWrapper for notebook API calls.c                     || _         y N)request)selfr   s     Z/usr/lib/python3/dist-packages/notebook/services/kernelspecs/tests/test_kernelspecs_api.py__init__zKernelSpecAPI.__init__   s	        Nc                 N    | j                  |||      }|j                          |S )N)data)r   raise_for_status)r   verbpathbodyresponses        r   _reqzKernelSpecAPI._req   s0    <<   
 	!!#r   c                 &    | j                  dd      S NGETzapi/kernelspecs)r   r   s    r   listzKernelSpecAPI.list$   s    yy 122r   c                 :    | j                  dt        d|            S r   r   r   )r   names     r   kernel_spec_infozKernelSpecAPI.kernel_spec_info'   s    yy.? FGGr   c                 <    | j                  dt        d||            S )Nr   kernelspecsr"   )r   r#   r   s      r   kernel_resourcezKernelSpecAPI.kernel_resource*   s    yymT4 HIIr   r   )	__name__
__module____qualname____doc__r   r   r    r$   r'    r   r   r   r      s     )3HJr   r   c                   F    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)APITestz#Test the kernelspec web service APIc                 |    | j                  d       | j                  d       t        | j                        | _        y )Nsamplesample 2)create_specr   r   ks_apir   s    r   setUpzAPITest.setUp0   s.    "$#DLL1r   c                    t        | j                  d|      }	 t        j                  |       t        t        |d      d      5 }t        j                  t        |       d d d        t        t        |d      dd      5 }|j                  t               d d d        y # t        $ r(}|j
                  t
        j                  k7  r Y d }~d }~ww xY w# 1 sw Y   txY w# 1 sw Y   y xY w)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fs        r   r2   zAPITest.create_spec5   s    !$--DA	KK)*
 %)=93? 	-1II(!,	- %)>:C%' 	#*+GGM"	# 	#  	ww%,,& '		- 	-	# 	#s/   B C?C	C'C

CCC'c                 r   t        | j                  dd      }	 t        j                  |       t        t        |d      d      5 }|j                  d       ddd       | j                  j                         j                         }t        |t              sJ | j                  |d   t               |d   }t        |t              sJ | j!                  t#        |      d	       t%        j&                  |       y# t        $ r(}|j
                  t
        j                  k7  r Y d}~d}~ww xY w# 1 sw Y   xY w)
z(Can list kernelspecs when one is invalidr6   badNr7   r8   garbagedefaultr&      )r;   r<   r=   r>   r?   r@   rA   rB   rF   r3   r    rC   
isinstancedictassertEqualr   assertGreaterEquallenshutilrmtree)r   bad_kernel_dirrI   rJ   modelspecss         r   test_list_kernelspecs_badz!APITest.test_list_kernelspecs_badD   s   t}}i?	KK'
 %6< 	GGI	   "'')%&&&y)+=>m$%&&&E
A.n%  	ww%,,& '		 	s#   C9 D-9	D*D%%D*-D6c                    | j                   j                         j                         }t        |t              sJ | j                  |d   t               |d   }t        |t              sJ | j                  t        |      d       d d t        fd|j                         D              sJ |       t        fd|j                         D              sJ |       y )NrN   r&   rO   c                 ,    | d   dk(  xr | d   d   dk(  S )Nr#   r0   specr
   r   r,   ss    r   is_sample_kernelspecz;APITest.test_list_kernelspecs.<locals>.is_sample_kernelspecd   s$    V9(WQvY~-F--WWr   c                 L    | d   t         k(  xr | d   d   j                  d      S )Nr#   r]   r
   Python)r   
startswithr^   s    r   is_default_kernelspecz<APITest.test_list_kernelspecs.<locals>.is_default_kernelspecg   s,    V9 22eqy7P7[7[\d7eer   c              3   .   K   | ]  } |        y wr   r,   ).0r_   r`   s     r   	<genexpr>z0APITest.test_list_kernelspecs.<locals>.<genexpr>j   s     Cq'*C   c              3   .   K   | ]  } |        y wr   r,   )rf   r_   rd   s     r   rg   z0APITest.test_list_kernelspecs.<locals>.<genexpr>k   s     D(+Drh   )r3   r    rC   rP   rQ   rR   r   rS   rT   anyvalues)r   rX   rY   rd   r`   s      @@r   test_list_kernelspecszAPITest.test_list_kernelspecsZ   s      "'')%&&&y)+=>m$%&&& 	E
A.	X	f CELLNCCJUJCDU\\^DDKeKDr   c                 0   | j                   j                  d      j                         }| j                  |d   j	                         d       | j                  |d   t               | j                  |d   d   d       | j                  |d   t               y )NSampler#   r0   r]   r
   r   	resources)r3   r$   rC   rR   lowerassertIsInstancerQ   r   rX   s     r   test_get_kernelspeczAPITest.test_get_kernelspecm   s~    ,,X6;;=v,,.9eFmT2v~6FeK0$7r   c                     | j                   j                  d      j                         }| j                  |d   j	                         d       y )Nz
sample%202r#   r1   )r3   r$   rC   rR   rp   rr   s     r   test_get_kernelspec_spacesz"APITest.test_get_kernelspec_spacest   s<    ,,\:??Av,,.
;r   c                 z    t        d      5  | j                  j                  d       d d d        y # 1 sw Y   y xY w)N  nonexistant)r   r3   r$   r   s    r   test_get_nonexistant_kernelspecz'APITest.test_get_nonexistant_kernelspecx   s1    s# 	8KK((7	8 	8 	8s   1:c                 |    | j                   j                  dd      }| j                  |j                  t               y )NsAmpler9   )r3   r'   rR   textrG   )r   ress     r   test_get_kernel_resource_filez%APITest.test_get_kernel_resource_file|   s,    kk))(NC=1r   c                     t        d      5  | j                  j                  dd       d d d        t        d      5  | j                  j                  dd       d d d        y # 1 sw Y   :xY w# 1 sw Y   y xY w)Nrw   rx   r9   r0   znonexistant.txt)r   r3   r'   r   s    r   test_get_nonexistant_resourcez%APITest.test_get_nonexistant_resource   su    s# 	GKK''~F	G s# 	EKK''2CD	E 	E	G 	G	E 	Es   A"A."A+.A7N)r(   r)   r*   r+   r4   r2   rZ   rl   rs   ru   ry   r~   r   r,   r   r   r.   r.   .   s4    -2
#&,L&8<82Er   r.   )r+   r@   rC   r=   rU   r   joinr;   jupyter_client.kernelspecr   notebook.utilsr   notebook.tests.launchnotebookr   r   rE   rG   r   r.   r,   r   r   <module>r      sd    +   	 
 8 ( M $%89%2  ;J J.WE WEr   