σ
ΠEe]c           @` s  d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l m Z d  d l m	 Z	 d  d l
 m Z d  d l m Z m Z e j d  d k r  d  d l m Z n d  d l m Z d	 e f d
     YZ d e f d     YZ d e f d     YZ d   Z d   Z d e f d     YZ d S(   i    (   t   divisiont   absolute_importt   print_functionN(   t   TemporaryFile(   t   exec_command(   t   get_pythonexe(   t   tempdirt   assert_i   (   t   StringIOt   redirect_stdoutc           B` s,   e  Z d  Z d d  Z d   Z d   Z RS(   s9   Context manager to redirect stdout for exec_command test.c         C` s   | p t  j |  _ d  S(   N(   t   syst   stdoutt   _stdout(   t   selfR   (    (    sF   lib/python2.7/site-packages/numpy/distutils/tests/test_exec_command.pyt   __init__   s    c         C` s   t  j |  _ |  j t  _ d  S(   N(   R
   R   t
   old_stdoutR   (   R   (    (    sF   lib/python2.7/site-packages/numpy/distutils/tests/test_exec_command.pyt	   __enter__   s    c         C` s*   |  j  j   |  j t _ |  j  j   d  S(   N(   R   t   flushR   R
   R   t   close(   R   t   exc_typet	   exc_valuet	   traceback(    (    sF   lib/python2.7/site-packages/numpy/distutils/tests/test_exec_command.pyt   __exit__   s    N(   t   __name__t
   __module__t   __doc__t   NoneR   R   R   (    (    (    sF   lib/python2.7/site-packages/numpy/distutils/tests/test_exec_command.pyR	      s   	t   redirect_stderrc           B` s,   e  Z d  Z d d  Z d   Z d   Z RS(   s9   Context manager to redirect stderr for exec_command test.c         C` s   | p t  j |  _ d  S(   N(   R
   t   stderrt   _stderr(   R   R   (    (    sF   lib/python2.7/site-packages/numpy/distutils/tests/test_exec_command.pyR   #   s    c         C` s   t  j |  _ |  j t  _ d  S(   N(   R
   R   t
   old_stderrR   (   R   (    (    sF   lib/python2.7/site-packages/numpy/distutils/tests/test_exec_command.pyR   &   s    c         C` s*   |  j  j   |  j t _ |  j  j   d  S(   N(   R   R   R   R
   R   R   (   R   R   R   R   (    (    sF   lib/python2.7/site-packages/numpy/distutils/tests/test_exec_command.pyR   *   s    N(   R   R   R   R   R   R   R   (    (    (    sF   lib/python2.7/site-packages/numpy/distutils/tests/test_exec_command.pyR   !   s   	t   emulate_nonposixc           B` s,   e  Z d  Z d d  Z d   Z d   Z RS(   s.   Context manager to emulate os.name != 'posix' s	   non-posixc         C` s   | |  _  d  S(   N(   t	   _new_name(   R   t   osname(    (    sF   lib/python2.7/site-packages/numpy/distutils/tests/test_exec_command.pyR   2   s    c         C` s   t  j |  _ |  j t  _ d  S(   N(   t   ost   namet	   _old_nameR    (   R   (    (    sF   lib/python2.7/site-packages/numpy/distutils/tests/test_exec_command.pyR   5   s    c         C` s   |  j  t _ d  S(   N(   R$   R"   R#   (   R   R   R   R   (    (    sF   lib/python2.7/site-packages/numpy/distutils/tests/test_exec_command.pyR   9   s    (   R   R   R   R   R   R   (    (    (    sF   lib/python2.7/site-packages/numpy/distutils/tests/test_exec_command.pyR   0   s   	c           C` s   t  t    ( t t     t j d  Wd  QXWd  QXt j d k r t   > t  t    ( t t     t j d  Wd  QXWd  QXWd  QXn  d  S(   Ns   cd '.'t   posix(   R	   R   R   R   R   R"   R#   R   (    (    (    sF   lib/python2.7/site-packages/numpy/distutils/tests/test_exec_command.pyt   test_exec_command_stdout=   s    
c           C` s   t  t d d   ( t t     t j d  Wd  QXWd  QXt j d k r t   > t  t    ( t t     t j d  Wd  QXWd  QXWd  QXn  d  S(   Nt   modes   w+s   cd '.'R%   (   R	   R   R   R   R   R"   R#   R   (    (    (    sF   lib/python2.7/site-packages/numpy/distutils/tests/test_exec_command.pyt   test_exec_command_stderrS   s    
t   TestExecCommandc           B` s>   e  Z d    Z d   Z d   Z d   Z d   Z d   Z RS(   c         C` s   t    |  _ d  S(   N(   R   t   pyexe(   R   (    (    sF   lib/python2.7/site-packages/numpy/distutils/tests/test_exec_command.pyt   setupb   s    c         K` su   t  j  d  \ } } t | d k  t | d k  t  j  d |  j  \ } } t | d k  t | d k  d  S(   Ns   cmd /C echo path=%path%i    t    s3   "%s" -c "import sys;sys.stderr.write(sys.platform)"t   win32(   R   R   R*   (   R   t   kwst   st   o(    (    sF   lib/python2.7/site-packages/numpy/distutils/tests/test_exec_command.pyt   check_nte   s    c         K` s¨  t  j  d |  \ } } t | d k  t | d k  t  j  d |  \ } } t | d k  t | d k  t  j  d d d | \ } } t | d k  t | d k  t  j  d |  \ } } t | d k  t | d k  d	 t j k rυd
 t j d	 <t  j  d |  \ } } t | d k  t | d
 k  t  j  d d	 d | \ } } t | d k  t | d k  t  j  d |  \ } } t | d k  t | d
 k  t j d	 =t  j  d |  \ } } t | d k  t | d k  n  t  j  d |  \ } } t | d k  t | d k  t  j  d |  \ } } t | d k  t | d k  t  j  d |  j |  \ } } t | d k  t | d k  d  S(   Ns
   echo Helloi    t   Hellos	   echo $AAAR,   s   echo "$AAA"t   AAAt   Teret   BBBt   His   echo "$BBB"t   Heyt   this_is_not_a_commands   echo path=$PATHs1   "%s" -c "import sys,os;sys.stderr.write(os.name)"R%   (   R   R   R"   t   environR*   (   R   R.   R/   R0   (    (    sF   lib/python2.7/site-packages/numpy/distutils/tests/test_exec_command.pyt   check_posixo   sL    
c         G` s   t  j  d |  j |  \ } } t | d k  t | d k  t  j  d |  j |  \ } } t | d k  t | d k  t  j  d |  j |  \ } } t | d k  t | d k  t  j  d |  j |  \ } } t | d k  t | d	 k  d  S(
   Ns   "%s" -c "raise 'Ignore me.'"i    R,   sV   "%s" -c "import sys;sys.stderr.write('0');sys.stderr.write('1');sys.stderr.write('2')"t   012s!   "%s" -c "import sys;sys.exit(15)"i   s   "%s" -c "print('Heipa'")t   Heipa(   R   R*   R   (   R   R.   R/   R0   (    (    sF   lib/python2.7/site-packages/numpy/distutils/tests/test_exec_command.pyt   check_basic£   s"    c      	   K` sη   t    Ψ } d } t j j | |  } t | d  } | j d  | j   t j d |  j | f |  \ } } t	 | d k  t	 | d k  t j d |  j | f d | | \ } } t	 | d k  t	 | d k  Wd  QXd  S(	   Nt   filet   wR2   s(   "%s" -c "f = open('%s', 'r'); f.close()"i    R,   s9   "%s" -c "f = open('%s', 'r'); print(f.read()); f.close()"t
   execute_in(
   R   R"   t   patht   joint   opent   writeR   R   R*   R   (   R   R.   t   tmpdirt   fnt   tmpfilet   fR/   R0   (    (    sF   lib/python2.7/site-packages/numpy/distutils/tests/test_exec_command.pyt   check_execute_inΊ   s     
"c         C` s΄   t  t     t t     t j d k rR |  j d d  |  j d d  n2 t j d k r |  j d d  |  j d d  n  |  j d d  |  j d d  Wd  QXWd  QXd  S(   NR%   t   use_teei    i   t   nt(   R	   R   R   R"   R#   R:   R1   RI   (   R   (    (    sF   lib/python2.7/site-packages/numpy/distutils/tests/test_exec_command.pyt
   test_basicΝ   s    (   R   R   R+   R1   R:   R=   RI   RL   (    (    (    sF   lib/python2.7/site-packages/numpy/distutils/tests/test_exec_command.pyR)   a   s   		
	4		(   t
   __future__R    R   R   R"   R
   t   tempfileR   t   numpy.distutilsR   t   numpy.distutils.exec_commandR   t   numpy.testingR   R   t   version_infot   ioR   t   objectR	   R   R   R&   R(   R)   (    (    (    sF   lib/python2.7/site-packages/numpy/distutils/tests/test_exec_command.pyt   <module>   s   		