ó
Ýà‹]c           @   s:  d  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 m Z m Z d d l Z d d l Z d d l Z d d l Z e e k rº e j Z n	 e j Z d d l m Z d d l m Z d d l m Z d	 d
 l m Z i d d g d 6d d 6Z d e j f d „  ƒ  YZ  d S(   s   Tests for the KernelSpecManageriÿÿÿÿN(   t   StreamHandler(   t   join(   t   Popent   PIPEt   STDOUT(   t   TemporaryDirectory(   t
   kernelspec(   t   pathsi   (   t   test_envt   cats   {connection_file}t   argvs   Test kernelt   display_namet   KernelSpecTestsc           B   s¾   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 e j j e j d	 k o‚ e j d
 e j ƒ d d ƒd „  ƒ Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   sW   t  | d ƒ } t j | ƒ t  | d ƒ } t | d ƒ  } t j t | ƒ Wd QX| S(   s.   install a sample kernel in a kernels directoryt   samples   kernel.jsont   wN(   t   pjoint   ost   makedirst   opent   jsont   dumpt   sample_kernel_json(   t   selft   kernels_dirt   sample_kernel_dirt	   json_filet   f(    (    sC   lib/python2.7/site-packages/jupyter_client/tests/test_kernelspec.pyt   _install_sample_kernel$   s    c         C   s¦   t  ƒ  |  _ |  j j ƒ  |  j t t j ƒ  d ƒ ƒ |  _ t j	 ƒ  |  _
 t ƒ  } |  j | j ƒ | j |  _ t t |  j d ƒ d ƒ  } t j t | ƒ Wd  QXd  S(   Nt   kernelss   kernel.jsonR   (   R   t	   env_patcht   startR   R   R   t   jupyter_data_dirR   R   t   KernelSpecManagert   ksmR   t
   addCleanupt   cleanupt   namet   installable_kernelR   R   R   R   (   R   t   td2R   (    (    sC   lib/python2.7/site-packages/jupyter_client/tests/test_kernelspec.pyt   setUp-   s    	c         C   s   |  j  j ƒ  d  S(   N(   R   t   stop(   R   (    (    sC   lib/python2.7/site-packages/jupyter_client/tests/test_kernelspec.pyt   tearDown;   s    c         C   s*   |  j  j ƒ  } |  j | d |  j ƒ d  S(   NR   (   R!   t   find_kernel_specst   assertEqualR   (   R   R   (    (    sC   lib/python2.7/site-packages/jupyter_client/tests/test_kernelspec.pyt   test_find_kernel_specs>   s    c         C   s€   |  j  j d ƒ } |  j | j |  j ƒ |  j | j t d ƒ |  j | j t d ƒ |  j | j i  ƒ |  j | j	 i  ƒ d  S(   Nt   SAMPLER
   R   (
   R!   t   get_kernel_specR+   t   resource_dirR   R
   R   R   t   envt   metadata(   R   t   ks(    (    sC   lib/python2.7/site-packages/jupyter_client/tests/test_kernelspec.pyt   test_get_kernel_specB   s    c         C   sC   |  j  j ƒ  } |  j | d d |  j ƒ |  j | d d ƒ d  S(   NR   R/   t   spec(   R!   t   get_all_specsR+   R   t   assertIsNotNone(   R   R   (    (    sC   lib/python2.7/site-packages/jupyter_client/tests/test_kernelspec.pyt   test_find_all_specsJ   s    c         C   s§   t  ƒ  } |  j | j ƒ |  j | j ƒ } |  j j j | j ƒ |  j j ƒ  } |  j	 | d |  j
 ƒ |  j j j d | j ƒ |  j j ƒ  } |  j	 | d | ƒ d  S(   NR   i    (   R   R"   R#   R   R$   R!   t   kernel_dirst   appendR*   R+   R   t   insert(   R   t   tdt   sample_kernelR   (    (    sC   lib/python2.7/site-packages/jupyter_client/tests/test_kernelspec.pyt   test_kernel_spec_priorityO   s    	c         C   s[   |  j  j |  j d d d t ƒ|  j d |  j  j ƒ  ƒ |  j  j |  j d d d t ƒd  S(   Nt   kernel_namet   tstinstalledt   user(   R!   t   install_kernel_specR%   t   Truet   assertInR*   (   R   (    (    sC   lib/python2.7/site-packages/jupyter_client/tests/test_kernelspec.pyt   test_install_kernel_specZ   s    c         C   sf  t  ƒ  } |  j | j ƒ t ƒ  } t | ƒ } |  j j j | ƒ |  j j |  j	 d d d | j
 ƒ| j ƒ  } |  j j j | ƒ |  j d | ƒ |  j d |  j j ƒ  ƒ |  j j j t | j
 d d d ƒ ƒ |  j d |  j j ƒ  ƒ t ƒ  } t | ƒ } |  j j j | ƒ |  j j |  j	 d d d | j
 ƒ| j ƒ  } |  j j j | ƒ |  j d | ƒ d  S(   NR>   R?   t   prefixs   may not be foundt   sharet   jupyterR   (   R   R"   R#   t   StringIOR    R!   t   logt
   addHandlerRA   R%   R$   t   getvaluet   removeHandlerRC   t   assertNotInR*   R8   R9   R   (   R   R;   t   capturet   handlert   captured(    (    sC   lib/python2.7/site-packages/jupyter_client/tests/test_kernelspec.pyt   test_install_kernel_spec_prefixe   s.    		
%	
t   nts   /usr/local/sharet   reasons)   needs Unix system without root privilegesc      
   C   s9   |  j  t ƒ $ |  j j |  j d d d t ƒWd  QXd  S(   NR>   R?   R@   (   t   assertRaisest   OSErrorR!   RA   R%   t   False(   R   (    (    sC   lib/python2.7/site-packages/jupyter_client/tests/test_kernelspec.pyt   test_cant_install_kernel_spec‚   s    c         C   s)   |  j  j d ƒ } |  j | |  j ƒ d  S(   NR   (   R!   t   remove_kernel_specR+   R   (   R   t   path(    (    sC   lib/python2.7/site-packages/jupyter_client/tests/test_kernelspec.pyt   test_remove_kernel_spec‹   s    c         C   sn   t  t j d d d d d g d t d t d t j ƒ} | j ƒ  \ } } |  j | j	 d	 | j
 d
 d ƒ ƒ d  S(   Ns   -ms   jupyter_client.kernelspecappt   removeR   s   -ft   stdoutt   stderrR0   i    t   utf8t   replace(   R   t   syst
   executableR   R   R   t   environt   communicateR+   t
   returncodet   decode(   R   t   pt   outt   _(    (    sC   lib/python2.7/site-packages/jupyter_client/tests/test_kernelspec.pyt   test_remove_kernel_spec_app   s    c         C   sl   x2 d d d d d g D] } t  j | ƒ s t ‚ q Wx0 d d d d	 g D] } t  j | ƒ sH t ‚ qH Wd  S(
   Ns	   julia-0.4t   ipythont   Rt   python_3s   Haskell-1-2-3s	   has spaceu   Ã¼nicodes   %percents	   question?(   R   t   _is_valid_kernel_namet   AssertionError(   R   t   goodt   bad(    (    sC   lib/python2.7/site-packages/jupyter_client/tests/test_kernelspec.pyt   test_validate_kernel_name˜   s    c            s‰   |  j  } t j ƒ  ‰ t j ‰ | j ˆ ƒ ‰  d t j f ‡  ‡ ‡ f d †  ƒ  Y} | ƒ  } | j ƒ  } t | ƒ d ˆ g k s… t	 ‚ d S(   s@   Test get_all_specs in subclasses that override find_kernel_specst   MyKSMc              s2   e  Z ‡  ‡ ‡ f d  †  Z ‡  ‡ ‡ f d †  Z RS(   c            sO   t  j  ˆ  ƒ } | d k r0 | | _ ˆ | _ n | ˆ k r? n t | ƒ ‚ | S(   Nt   fake(   t   copyR$   R/   t   KeyError(   R   R$   R4   (   t   native_kernelt   native_nameR/   (    sC   lib/python2.7/site-packages/jupyter_client/tests/test_kernelspec.pyR.   ²   s    	c            s   i ˆ d 6ˆ  j  ˆ 6S(   NRs   (   R/   (   R   (   Rv   Rw   R/   (    sC   lib/python2.7/site-packages/jupyter_client/tests/test_kernelspec.pyR*   ½   s    (   t   __name__t
   __module__R.   R*   (    (   Rv   Rw   R/   (    sC   lib/python2.7/site-packages/jupyter_client/tests/test_kernelspec.pyRr   ±   s   Rs   N(
   R!   t   tempfilet
   gettempdirR   t   NATIVE_KERNEL_NAMER.   R    R5   t   sortedRn   (   R   R!   Rr   t   myksmt   specs(    (   Rv   Rw   R/   sC   lib/python2.7/site-packages/jupyter_client/tests/test_kernelspec.pyt   test_subclassª   s    		%	(   Rx   Ry   R   R'   R)   R,   R3   R7   R=   RD   RQ   t   pytestt   markt   skipifR   R$   t   accesst   W_OKRW   RZ   Ri   Rq   R€   (    (    (    sC   lib/python2.7/site-packages/jupyter_client/tests/test_kernelspec.pyR   "   s    											&				(!   t   __doc__Rt   t   ioR   t   loggingR    R   t   os.pathR   R   t
   subprocessR   R   R   R`   Rz   t   unittestR   t   strt   bytest   BytesIORH   t   ipython_genutils.tempdirR   t   jupyter_clientR   t   jupyter_coreR   t   utilsR   R   t   TestCaseR   (    (    (    sC   lib/python2.7/site-packages/jupyter_client/tests/test_kernelspec.pyt   <module>   s*   	
