ó
è¾bc           @   s.  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z y d  d l	 Z	 Wn e
 k
 r n Xd  d l m Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d	 „  Z e j d
 „  ƒ Z d „  Z d „  Z d d „ Z d d „ Z d e d „ Z d S(   iÿÿÿÿN(   t   strip_python_stderrc   	   
   O   s  t  j g } | s" | j d ƒ n  | j | ƒ t j j ƒ  } | j | ƒ t j	 | d t j
 d t j
 d t j
 d | ƒ} z | j ƒ  \ } } Wd  t j ƒ  | j j ƒ  | j j ƒ  X| j } t | ƒ } | rÚ |  sè | r|  rt d | | j d d ƒ f ƒ ‚ n  | | | f S(	   Ns   -Et   stdint   stdoutt   stderrt   envs-   Process return code is %d, stderr follows:
%st   asciit   ignore(   t   syst
   executablet   appendt   extendt   ost   environt   copyt   updatet
   subprocesst   Popent   PIPEt   communicatet   _cleanupR   t   closeR   t
   returncodeR    t   AssertionErrort   decode(	   t   expected_successt   argst   env_varst   cmd_lineR   t   pt   outt   errt   rc(    (    s0   /usr/lib/python2.7/test/support/script_helper.pyt   _assert_python   s*    	
	c          O   s   t  t |  | Ž S(   s£   
    Assert that running the interpreter with `args` and optional environment
    variables `env_vars` is ok and return a (return code, stdout, stderr) tuple.
    (   R    t   True(   R   R   (    (    s0   /usr/lib/python2.7/test/support/script_helper.pyt   assert_python_ok2   s    c          O   s   t  t |  | Ž S(   s£   
    Assert that running the interpreter with `args` and optional environment
    variables `env_vars` fails and return a (return code, stdout, stderr) tuple.
    (   R    t   False(   R   R   (    (    s0   /usr/lib/python2.7/test/support/script_helper.pyt   assert_python_failure9   s    c       
   G   sW   t  j d g } | j |  ƒ t t j d ƒ # } t j | d | d t j ƒSWd  QXd  S(   Ns   -Et   wR   R   (	   R   R   R
   t   openR   t   devnullR   t   callt   STDOUT(   R   R   R'   (    (    s0   /usr/lib/python2.7/test/support/script_helper.pyt   python_exit_code@   s
    c       	   O   sG   t  j d g } | j |  ƒ t j | d t j d t j d t j | S(   Ns   -ER   R   R   (   R   R   R
   R   R   R   R)   (   R   t   kwargsR   (    (    s0   /usr/lib/python2.7/test/support/script_helper.pyt   spawn_pythonG   s
    c         C   sA   |  j  j ƒ  |  j j ƒ  } |  j j ƒ  |  j ƒ  t j ƒ  | S(   N(   R   R   R   t   readt   waitR   R   (   R   t   data(    (    s0   /usr/lib/python2.7/test/support/script_helper.pyt   kill_pythonN   s    

c          O   s+   t  |  | Ž  } t | ƒ } | j ƒ  | f S(   N(   R,   R0   R.   (   R   R+   R   t   stdout_data(    (    s0   /usr/lib/python2.7/test/support/script_helper.pyt
   run_pythonX   s    c          c   s<   t  j ƒ  }  t j j |  ƒ }  z	 |  VWd  t j |  ƒ Xd  S(   N(   t   tempfilet   mkdtempR   t   patht   realpatht   shutilt   rmtree(   t   dirname(    (    s0   /usr/lib/python2.7/test/support/script_helper.pyt   temp_dira   s
    	c         C   sP   | t  j d } t  j j |  | ƒ } t | d ƒ } | j | ƒ | j ƒ  | S(   Nt   pyR%   (   R   t   extsepR5   t   joinR&   t   writeR   (   t
   script_dirt   script_basenamet   sourcet   script_filenamet   script_namet   script_file(    (    s0   /usr/lib/python2.7/test/support/script_helper.pyt   make_scriptj   s    
c         C   s!   t  j |  d t ƒ|  d } | S(   Nt   doraiset   c(   t
   py_compilet   compileR!   (   RC   t   compiled_name(    (    s0   /usr/lib/python2.7/test/support/script_helper.pyt   compile_scriptr   s    
c         C   sŒ   | t  j d } t  j j |  | ƒ } t j | d ƒ } | d  k rY t  j j | ƒ } n  | j | | ƒ | j	 ƒ  | t  j j | | ƒ f S(   Nt   zipR%   (
   R   R<   R5   R=   t   zipfilet   ZipFilet   Nonet   basenameR>   R   (   t   zip_dirt   zip_basenameRC   t   name_in_zipt   zip_filenamet   zip_namet   zip_file(    (    s0   /usr/lib/python2.7/test/support/script_helper.pyt   make_zip_scriptz   s    
t    c         C   s!   t  j |  ƒ t |  d | ƒ d  S(   Nt   __init__(   R   t   mkdirRE   (   t   pkg_dirt   init_source(    (    s0   /usr/lib/python2.7/test/support/script_helper.pyt   make_pkg‰   s    i   c         C   s§  g  } t  |  d d ƒ } | j | ƒ t j j | ƒ }	 t  |  | | ƒ }
 | j |
 ƒ | rŠ t | ƒ } t |
 ƒ }
 | j | |
 f ƒ n  g  t d | d ƒ D] } t j j	 | g | ƒ ^ qž } t j j	 | d t j j |
 ƒ ƒ } | t j
 d } t j j	 |  | ƒ } t j | d ƒ } x3 | D]+ } t j j	 | |	 ƒ } | j | | ƒ q'W| j |
 | ƒ | j ƒ  x | D] } t j | ƒ qwW| t j j	 | | ƒ f S(   NRY   RX   i   iÿÿÿÿRL   R%   (   RE   R	   R   R5   RP   RK   R
   t   ranget   sepR=   R<   RM   RN   R>   R   t   unlink(   RQ   RR   t   pkg_nameR@   RA   t   deptht   compiledR`   t	   init_namet   init_basenameRC   t   it	   pkg_namest   script_name_in_zipRT   RU   RV   t   namet   init_name_in_zip(    (    s0   /usr/lib/python2.7/test/support/script_helper.pyt   make_zip_pkg   s.    9%
(   R   R   t   ret   os.pathR3   R   RH   t
   contextlibR7   RM   t   ImportErrort   test.supportR    R    R"   R$   R*   R,   R0   R2   t   contextmanagerR:   RE   RK   RO   RW   R]   R#   Rk   (    (    (    s0   /usr/lib/python2.7/test/support/script_helper.pyt   <module>   s4   						
					