ó
Û¤[c           @   sÈ  d  Z  d d l Z d d l Z d d l Z d d l Z d d l j Z d d l	 m
 Z m Z d d l m Z d d l m Z d d l m Z d d l m Z m Z m Z m Z m Z m Z m Z e d	 d
 „ Z d „  Z d „  Z d „  Z d „  Z  e j! e j" d k d ƒ d „  ƒ Z# d „  Z$ e j! e j" d k d ƒ d „  ƒ Z% d „  Z& e j! e j' ƒ d „  ƒ Z( d „  Z) e j* d ƒ d „  ƒ Z+ d „  Z, d „  Z- d „  Z. e j* d ƒ d „  ƒ Z/ d „  Z0 d S(   s   test the IPython KerneliÿÿÿÿN(   t
   decoratorst   tools(   t	   py3compat(   t   locate_profile(   t   TemporaryDirectoryi   (   t
   new_kernelt   kernelt   TIMEOUTt   assemble_outputt   executet   flush_channelst   wait_for_idlet   stdoutc         C   ss   t  d |  d d ƒ t |  ƒ t  d |  d d | ƒ \ } } t |  j ƒ \ } } | j ƒ  t | ƒ k so t ‚ d  S(   Nt   kct   codes
   import syss#   print (sys.%s._is_master_process())(   R	   R
   R   t   iopub_channelt   stript   reprt   AssertionError(   R   t   expectedt   streamt   msg_idt   contentR   t   stderr(    (    s:   lib/python2.7/site-packages/ipykernel/tests/test_kernel.pyt   _check_master   s
    
c         C   s=   |  d d k r9 t  s9 t d j d g |  d ƒ ƒ ‚ n  d S(   s#   If status=error, show the tracebackt   statust   errort    s   
t	   tracebackN(   t   FalseR   t   join(   R   (    (    s:   lib/python2.7/site-packages/ipykernel/tests/test_kernel.pyt   _check_status    s    c       	   C   s€   t  ƒ  q }  |  j } t d |  d d ƒ \ } } t | ƒ \ } } | d k sT t ‚ | d k sf t ‚ t |  d t ƒWd QXd S(   s    simple print statement in kernelR   R   s   print ('hi')s   hi
R   R   N(   R   R   R	   R   R   R   t   True(   R   t   iopubR   R   R   R   (    (    s:   lib/python2.7/site-packages/ipykernel/tests/test_kernel.pyt   test_simple_print(   s    	c       	   C   sX   t  ƒ  I }  t d |  d d ƒ \ } } t |  j ƒ \ } } | d k sN t ‚ Wd QXd S(   s3   test that sys.path doesn't get messed up by defaultR   R   s%   import sys; print (repr(sys.path[0]))s   ''
N(   R   R	   R   R   R   (   R   R   R   R   R   (    (    s:   lib/python2.7/site-packages/ipykernel/tests/test_kernel.pyt   test_sys_path3   s    c       	   C   sg   t  d t d ƒ g ƒ I }  t d |  d d ƒ \ } } t |  j ƒ \ } } | d k s] t ‚ Wd QXd S(   sJ   test that sys.path doesn't get messed up when `--profile-dir` is specifieds   --profile-dirt   defaultR   R   s%   import sys; print (repr(sys.path[0]))s   ''
N(   R   R   R	   R   R   R   (   R   R   R   R   R   (    (    s:   lib/python2.7/site-packages/ipykernel/tests/test_kernel.pyt   test_sys_path_profile_dir:   s    t   win32s!   subprocess prints fail on Windowsc    	      C   s!  t  ƒ  }  |  j } t |  d t ƒt |  ƒ d } d j d d d d | d d	 d
 g ƒ } t d |  d | ƒ \ } } t | ƒ \ } } t j	 | j
 d ƒ | | ƒ x6 t | ƒ D]( } t j	 | j
 t | ƒ ƒ d | ƒ q³ W| d k sñ t ‚ t |  d t ƒt |  d t d d ƒWd QXd S(   s   printing from forked mp.ProcessR   i   s   
s%   from __future__ import print_functions   import times   import multiprocessing as mpsH   pool = [mp.Process(target=print, args=('hello', i,)) for i in range(%i)]s   for p in pool: p.start()s   for p in pool: p.join()s   time.sleep(0.5),R   R   t   helloi   R   R   R   N(   R   R   R   R    R
   R   R	   R   t   ntt   assert_equalt   countt   ranget   strR   (	   R   R!   t   npR   R   R   R   R   t   n(    (    s:   lib/python2.7/site-packages/ipykernel/tests/test_kernel.pyt   test_subprocess_printB   s*    	
&c       
   C   s»   t  ƒ  ¬ }  |  j } d } d j d d | d d g ƒ } t d |  d | ƒ \ } } t | ƒ \ } } | d	 k sy t ‚ | d	 k s‹ t ‚ t |  d
 t ƒt |  d
 t d d ƒWd QXd S(   s9   mp.Process without print doesn't trigger iostream mp_modei   s   
s   import multiprocessing as mps?   pool = [mp.Process(target=range, args=(i,)) for i in range(%i)]s   for p in pool: p.start()s   for p in pool: p.join()R   R   R   R   R   R   N(   R   R   R   R	   R   R   R   R    (   R   R!   R-   R   R   R   R   R   (    (    s:   lib/python2.7/site-packages/ipykernel/tests/test_kernel.pyt   test_subprocess_noprint_   s    	c       
   C   s±   t  ƒ  ¢ }  |  j } d j d d d d g ƒ } t d |  d | ƒ \ } } t | ƒ \ } } | d k so t ‚ d	 | k s t ‚ t |  d
 t ƒt |  d
 t d d ƒWd QXd S(   s!   error in mp.Process doesn't crashs   
s   import multiprocessing as mps(   p = mp.Process(target=int, args=('hi',))s	   p.start()s   p.join()R   R   R   t
   ValueErrorR   R   R   N(   R   R   R   R	   R   R   R   R    (   R   R!   R   R   R   R   R   (    (    s:   lib/python2.7/site-packages/ipykernel/tests/test_kernel.pyt   test_subprocess_erroru   s    	c       	   C   s   t  ƒ  }  |  j } t j r$ d n d } d } d j t ƒ    } |  j | d t ƒ} |  j d t d t	 ƒ } | d d	 d
 k s‰ t
 ‚ | d } | d | k s© t
 ‚ d } |  j | ƒ |  j d t d t	 ƒ }	 |	 d d d k sî t
 ‚ t | ƒ \ }
 } |
 | d k st
 ‚ Wd QXd S(   s   test [raw_]inputt   inputt	   raw_inputs   prompt> s   print({input_f}("{theprompt}"))t   allow_stdint   blockt   timeoutt   headert   msg_typeu   input_requestR   t   prompts	   some textR   t   oks   
N(   R   R   R   t   PY3t   formatt   localsR	   R    t   get_stdin_msgR   R   R3   t   get_shell_msgR   (   R   R!   t   input_ft	   thepromptR   R   t   msgR   t   textt   replyR   R   (    (    s:   lib/python2.7/site-packages/ipykernel/tests/test_kernel.pyt   test_raw_inputŒ   s     	
c       	   C   s  t  ƒ  }  |  j } t j r$ d n d } d } d j t ƒ    } |  j | d t ƒ} |  j d t d t	 ƒ } | d d	 d
 k s‰ t
 ‚ | d } | d | k s© t
 ‚ |  j d ƒ |  j d t d t	 ƒ } | d d d k sè t
 ‚ t | ƒ \ }	 }
 |	 d k st
 ‚ Wd QXd S(   s   test input() on Python 2R3   R4   s   prompt> s   print(input("{theprompt}"))R5   R6   R7   R8   R9   u   input_requestR   R:   s   1+1R   R;   s   2
N(   R   R   R   R<   R=   R>   R	   R    R?   R   R   R3   R@   R   (   R   R!   RA   RB   R   R   RC   R   RE   R   R   (    (    s:   lib/python2.7/site-packages/ipykernel/tests/test_kernel.pyt   test_eval_input¡   s    	
c          C   sñ   t  ƒ  â }  t ƒ  Ð } t j j | d ƒ } t d d |  ƒt |  ƒ t d d |  ƒt |  ƒ t d | d |  ƒ\ } } | d d k s“ t ‚ t j	 | d d	 ƒ } | j
 ƒ  } Wd  QXd | k sÏ t ‚ d | k sá t ‚ Wd  QXWd  QXd  S(
   Ns   hist.outu   a=1R   u
   b=u"abcÃ¾"s	   %hist -f R   R;   t   encodings   utf-8(   R   R   t   ost   pathR   R	   R   R   t   iot   opent   read(   R   t   tdt   filet   _RE   t   fR   (    (    s:   lib/python2.7/site-packages/ipykernel/tests/test_kernel.pyt   test_save_history¶   s     

t   faulthandlerc          C   sr   t  ƒ  c }  d j d d d d d d g ƒ } t | d |  ƒ\ } } t j | d	 d
 | j d d ƒ ƒ Wd  QXd  S(   Nu   
s
   import syss   import faulthandlers   import signals   faulthandler.enable()s(   if not sys.platform.startswith("win32"):s)       faulthandler.register(signal.SIGTERM)R   R   R;   R   R   (   R   R   R	   R(   R)   t   get(   R   R   RP   RE   (    (    s:   lib/python2.7/site-packages/ipykernel/tests/test_kernel.pyt   test_smoke_faulthandlerÇ   s    c           C   s   t  j d ƒ d S(   s   ipython kernel --help-all worksR   N(   t   ttt   help_all_output_test(    (    (    s:   lib/python2.7/site-packages/ipykernel/tests/test_kernel.pyt   test_help_outputÖ   s    c       	   C   s,  t  ƒ  }  |  j d ƒ |  j d t d t ƒ } | d d d k sK t ‚ |  j d ƒ |  j d t d t ƒ } | d d d k sŠ t ‚ |  j d	 ƒ |  j d t d t ƒ } | d d d
 k sÉ t ‚ | d d d k sã t ‚ |  j d ƒ |  j d t d t ƒ } | d d d k s"t ‚ Wd  QXd  S(   Ns   2+2R6   R7   R   R   t   completes	   raise = 2t   invalids
   a = [1,
2,t
   incompletet   indentR   s   %%timeit
a

(   R   t   is_completeR@   R    R   R   (   R   RE   (    (    s:   lib/python2.7/site-packages/ipykernel/tests/test_kernel.pyt   test_is_completeÛ   s    c       	   C   s  t  ƒ  õ }  t d d |  ƒt |  ƒ d } |  j | ƒ |  j d t d t ƒ } | d } | d d k sq t ‚ | d	 | j d
 ƒ k s t ‚ | d | j d
 ƒ d k s³ t ‚ | d } t	 j
 t | ƒ d ƒ x$ | D] } | d  d
 k sÚ t ‚ qÚ WWd  QXd  S(   Nu   a = 1R   s   import IPython
b = a.R6   R7   R   R   R;   t   cursor_starts   a.t
   cursor_endi   t   matchesi    (   R   R	   R   RY   R@   R    R   R   t   findR(   t   assert_greatert   len(   R   t   cellRE   t   cRa   t   match(    (    s:   lib/python2.7/site-packages/ipykernel/tests/test_kernel.pyt   test_completeó   s    

#
t
   matplotlibc       
   C   sŒ   t  ƒ  } }  d j d d g ƒ } t | d i d d 6d |  ƒ\ } } t | ƒ | d d } t | ƒ d | d d	 k s‚ t ‚ Wd  QXd  S(
   Ns   
s+   import matplotlib, matplotlib.pyplot as plts"   backend = matplotlib.get_backend()t   user_expressionst   backendR   t   backend_inlinet   datas
   text/plain(   R   R   R	   R   R   (   R   Re   RP   RE   t   backend_bundle(    (    s:   lib/python2.7/site-packages/ipykernel/tests/test_kernel.pyt    test_matplotlib_inline_on_import  s    	

c          C   sŠ   t  ƒ  { }  |  j } t d d |  ƒt |  ƒ |  j ƒ  x1 t d ƒ D]# } | j ƒ  rh t j d ƒ qF PqF W| j ƒ  s€ t	 ‚ Wd QXd S(   s*   Kernel exits after polite shutdown_requestu   a = 1R   id   gš™™™™™¹?N(
   R   t   parentR	   R   t   shutdownR+   t   is_alivet   timet   sleepR   (   R   t   kmt   i(    (    s:   lib/python2.7/site-packages/ipykernel/tests/test_kernel.pyt   test_shutdown  s    	

(1   t   __doc__RK   t   os.pathRI   t   sysRs   t
   nose.toolsR   R(   t   IPython.testingR    t   decRV   t   ipython_genutilsR   t   IPython.pathsR   t   ipython_genutils.tempdirR   t   utilsR   R   R   R   R	   R
   R   R    R   R   R"   R#   R%   t   skipift   platformR/   R0   R2   RF   R<   RG   RR   t   skip_withoutRU   RX   R^   Rh   Ro   Rw   (    (    (    s:   lib/python2.7/site-packages/ipykernel/tests/test_kernel.pyt   <module>   s6   4				$	$					