mò
­fIc           @   sÂ   d  k  Z  d k l Z d  k Z d  k Z d  k Z d  k Z d  k Z d  k Z d  k	 Z	 e i
 d j Z e o
 d Z n d Z d „  Z d e  i f d „  ƒ  YZ d „  Z e d	 j o e ƒ  n d  S(
   N(   s   test_supportt   win32s@   import msvcrt; msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY);t    c         C   s   t  i d d |  ƒ S(   Ns   \[\d+ refs\]\r?\n?$R   (   t   ret   subt   stderr(   R   (    (    t1   /mit/python/lib/python2.4/test/test_subprocess.pyt   remove_stderr_debug_decorations   s    t   ProcessTestCasec           B   s³  t  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d	 „  Z
 d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  e! pL d  „  Z" d! „  Z# d" „  Z$ d# „  Z% d$ „  Z& d% „  Z' d& „  Z( d' „  Z) n e! o: d( „  Z* d) „  Z+ d* „  Z& d+ „  Z' d, „  Z( d- „  Z) n RS(.   Nc         C   sN   t  t d ƒ o t i ƒ  Sn- t i ƒ  } t i | t i t i Bƒ | f Sd S(   s?   wrapper for mkstemp, calling mktemp if mkstemp is not availablet   mkstempN(	   t   hasattrt   tempfileR   t   mktempt   fnamet   ost   opent   O_RDWRt   O_CREAT(   t   selfR   (    (    R   R      s
     c         C   s/   t  i t i d d g ƒ } |  i | d ƒ d  S(   Ns   -cs   import sys; sys.exit(47)i/   (   t
   subprocesst   callt   syst
   executablet   rcR   t   assertEqual(   R   R   (    (    R   t   test_call_seq)   s    c         C   sN   t  i i ƒ  } d | d <t i t i d d g d | ƒ} |  i
 | d ƒ d  S(   Nt   bananat   FRUITs   -cs5   import sys, os;sys.exit(os.getenv("FRUIT")=="banana")t   envi   (   R   t   environt   copyt   newenvR   R   R   R   R   R   R   (   R   R   R   (    (    R   t   test_call_kwargs/   s
    
c         C   sN   t  i t i d d g d t  i d t  i ƒ} | i ƒ  |  i | i	 d  ƒ d  S(   Ns   -cs   print "banana"t   stdoutR   (   R   t   PopenR   R   t   PIPEt   pt   waitR   R   t   stdint   None(   R   R#   (    (    R   t   test_stdin_none9   s    
c         C   sN   t  i t i d d g d t  i d t  i ƒ} | i ƒ  |  i | i	 d  ƒ d  S(   Ns   -csR   print "    this bit of output is from a test of stdout in a different process ..."R%   R   (   R   R!   R   R   R"   R#   R$   R   R   R    R&   (   R   R#   (    (    R   t   test_stdout_none@   s    
c         C   sN   t  i t i d d g d t  i d t  i ƒ} | i ƒ  |  i | i	 d  ƒ d  S(   Ns   -cs   print "banana"R%   R    (   R   R!   R   R   R"   R#   R$   R   R   R   R&   (   R   R#   (    (    R   t   test_stderr_noneJ   s    
c         C   sB   t  i d d d g d t i ƒ} | i ƒ  |  i | i d ƒ d  S(   Nt   somethingyoudonthaves   -cs   import sys; sys.exit(47)R   i/   (	   R   R!   R   R   R#   R$   R   R   t
   returncode(   R   R#   (    (    R   t   test_executableQ   s    
c         C   sb   t  i t i d d g d t  i ƒ} | i i d ƒ | i i ƒ  | i	 ƒ  |  i | i d ƒ d  S(   Ns   -cs0   import sys; sys.exit(sys.stdin.read() == "pear")R%   t   peari   (   R   R!   R   R   R"   R#   R%   t   writet   closeR$   R   R   R+   (   R   R#   (    (    R   t   test_stdin_pipeX   s    
c         C   s}   t  i ƒ  } | i ƒ  } t i | d ƒ t i | d d ƒ t i	 t
 i d d g d | ƒ} | i ƒ  |  i | i d ƒ d  S(   NR-   i    s   -cs0   import sys; sys.exit(sys.stdin.read() == "pear")R%   i   (   R
   t   TemporaryFilet   tft   filenot   dR   R.   t   lseekR   R!   R   R   R#   R$   R   R   R+   (   R   R4   R#   R2   (    (    R   t   test_stdin_filedesb   s    
c         C   sh   t  i ƒ  } | i d ƒ | i d ƒ t i t i d d g d | ƒ} | i
 ƒ  |  i | i d ƒ d  S(   NR-   i    s   -cs0   import sys; sys.exit(sys.stdin.read() == "pear")R%   i   (   R
   R1   R2   R.   t   seekR   R!   R   R   R#   R$   R   R   R+   (   R   R#   R2   (    (    R   t   test_stdin_fileobjn   s    
c         C   sA   t  i t i d d g d t  i ƒ} |  i | i i	 ƒ  d ƒ d  S(   Ns   -cs&   import sys; sys.stdout.write("orange")R    t   orange(
   R   R!   R   R   R"   R#   R   R   R    t   read(   R   R#   (    (    R   t   test_stdout_pipey   s    c         C   sv   t  i ƒ  } | i ƒ  } t i t i d d g d | ƒ} | i
 ƒ  t i | d d ƒ |  i t i | d ƒ d ƒ d  S(   Ns   -cs&   import sys; sys.stdout.write("orange")R    i    i   R9   (   R
   R1   R2   R3   R4   R   R!   R   R   R#   R$   R   R5   R   R   R:   (   R   R4   R#   R2   (    (    R   t   test_stdout_filedes€   s    
c         C   s^   t  i ƒ  } t i t i d d g d | ƒ} | i ƒ  | i	 d ƒ |  i | i ƒ  d ƒ d  S(   Ns   -cs&   import sys; sys.stdout.write("orange")R    i    R9   (   R
   R1   R2   R   R!   R   R   R#   R$   R7   R   R   R:   (   R   R#   R2   (    (    R   t   test_stdout_fileobj‹   s    
c         C   sG   t  i t i d d g d t  i ƒ} |  i t | i	 i
 ƒ  ƒ d ƒ d  S(   Ns   -cs*   import sys; sys.stderr.write("strawberry")R   t
   strawberry(   R   R!   R   R   R"   R#   R   R   R   R   R:   (   R   R#   (    (    R   t   test_stderr_pipe•   s    c         C   s|   t  i ƒ  } | i ƒ  } t i t i d d g d | ƒ} | i
 ƒ  t i | d d ƒ |  i t t i | d ƒ ƒ d ƒ d  S(   Ns   -cs*   import sys; sys.stderr.write("strawberry")R   i    i   R>   (   R
   R1   R2   R3   R4   R   R!   R   R   R#   R$   R   R5   R   R   R   R:   (   R   R4   R#   R2   (    (    R   t   test_stderr_filedes   s    
c         C   sd   t  i ƒ  } t i t i d d g d | ƒ} | i ƒ  | i	 d ƒ |  i t | i ƒ  ƒ d ƒ d  S(   Ns   -cs*   import sys; sys.stderr.write("strawberry")R   i    R>   (   R
   R1   R2   R   R!   R   R   R#   R$   R7   R   R   R   R:   (   R   R#   R2   (    (    R   t   test_stderr_fileobj©   s    
c         C   s\   t  i t i d d g d t  i d t  i ƒ} | i i ƒ  } t
 | ƒ } |  i | d ƒ d  S(   Ns   -csR   import sys;sys.stdout.write("apple");sys.stdout.flush();sys.stderr.write("orange")R    R   t   appleorange(   R   R!   R   R   R"   t   STDOUTR#   R    R:   t   outputR   t   strippedR   R   (   R   RE   R#   RD   (    (    R   t   test_stdout_stderr_pipe´   s    	c         C   sv   t  i ƒ  } t i t i d d g d | d | ƒ} | i ƒ  | i	 d ƒ | i
 ƒ  } t | ƒ } |  i | d ƒ d  S(   Ns   -csR   import sys;sys.stdout.write("apple");sys.stdout.flush();sys.stderr.write("orange")R    R   i    RB   (   R
   R1   R2   R   R!   R   R   R#   R$   R7   R:   RD   R   RE   R   R   (   R   RE   R#   R2   RD   (    (    R   t   test_stdout_stderr_fileÁ   s    
c         C   s£   t  i d d ƒ } t  i ƒ  } t  i | ƒ t  i ƒ  } t  i | ƒ t i t i	 d d g d t i
 d | ƒ} t  i i } |  i | | i i ƒ  ƒ | | ƒ ƒ d  S(   Nt   TEMPs   /tmps   -cs+   import sys,os;sys.stdout.write(os.getcwd())R    t   cwd(   R   t   getenvt   tmpdirt   getcwdRI   t   chdirR   R!   R   R   R"   R#   t   patht   normcaseR   R   R    R:   (   R   RO   R#   RI   RK   (    (    R   t   test_cwdÑ   s    	c         C   s`   t  i i ƒ  } d | d <t i t i d d g d t i d | ƒ} |  i | i i ƒ  d ƒ d  S(   NR9   R   s   -cs2   import sys,os;sys.stdout.write(os.getenv("FRUIT"))R    R   (   R   R   R   R   R   R!   R   R   R"   R#   R   R   R    R:   (   R   R#   R   (    (    R   t   test_envá   s    
	c         C   su   t  i t i d d g d t  i d t  i d t  i ƒ} | i d ƒ \ } } |  i
 | d ƒ |  i
 t | ƒ d ƒ d  S(   Ns   -csN   import sys,os;sys.stderr.write("pineapple");sys.stdout.write(sys.stdin.read())R%   R    R   R   t	   pineapple(   R   R!   R   R   R"   R#   t   communicateR    R   R   R   R   (   R   R    R#   R   (    (    R   t   test_communicateë   s    		c         C   sQ   t  i t i d d g ƒ } | i ƒ  \ } } |  i	 | d  ƒ |  i	 | d  ƒ d  S(   Ns   -cs   import sys; sys.exit(47)(   R   R!   R   R   R#   RS   R    R   R   R   R&   (   R   R    R#   R   (    (    R   t   test_communicate_returnsø   s    c         C   s¼   t  i ƒ  \ } } t o
 d } n t  i | d ƒ } t  i | ƒ t  i | ƒ t i	 t
 i d d | g d t i d t i d t i ƒ} d | } | i | ƒ \ } } |  i | | ƒ d  S(	   Ni   t   PC_PIPE_BUFs   -csp   import sys,os;sys.stdout.write(sys.stdin.read(47));sys.stderr.write("xyz"*%d);sys.stdout.write(sys.stdin.read())R%   R    R   t   abc(   R   t   pipet   xt   yt	   mswindowst   pipe_buft	   fpathconfR/   R   R!   R   R   R"   R#   t   string_to_writeRS   R    R   R   R   (   R   R^   R    R#   R\   R   RZ   RY   (    (    R   t   test_communicate_pipe_buf   s    
		
c         C   s…   t  i t i d d g d t  i d t  i d t  i ƒ} | i i d ƒ | i d ƒ \ } } |  i | d ƒ |  i t | ƒ d	 ƒ d  S(
   Ns   -cs0   import sys,os;sys.stdout.write(sys.stdin.read())R%   R    R   R   t   splitt   bananasplitR   (   R   R!   R   R   R"   R#   R%   R.   RS   R    R   R   R   R   (   R   R    R#   R   (    (    R   t   test_writes_before_communicate  s    		c         C   sy   t  i t i d d t d g d t  i d d ƒ} | i i ƒ  } t	 t
 d ƒ o |  i | d ƒ n |  i | d	 ƒ d  S(
   Ns   -cs   import sys,os;s	  sys.stdout.write("line1\n");sys.stdout.flush();sys.stdout.write("line2\r");sys.stdout.flush();sys.stdout.write("line3\r\n");sys.stdout.flush();sys.stdout.write("line4\r");sys.stdout.flush();sys.stdout.write("\nline5");sys.stdout.flush();sys.stdout.write("\nline6");R    t   universal_newlinesi   t   newliness#   line1
line2
line3
line4
line5
line6s%   line1
line2line3
line4
line5
line6(   R   R!   R   R   t	   SETBINARYR"   R#   R    R:   R	   R   R   R   (   R   R    R#   (    (    R   t   test_universal_newlines$  s    			c         C   s…   t  i t i d d t d g d t  i d t  i d d ƒ} | i ƒ  \ } } t
 t d ƒ o |  i | d	 ƒ n |  i | d
 ƒ d  S(   Ns   -cs   import sys,os;s	  sys.stdout.write("line1\n");sys.stdout.flush();sys.stdout.write("line2\r");sys.stdout.flush();sys.stdout.write("line3\r\n");sys.stdout.flush();sys.stdout.write("line4\r");sys.stdout.flush();sys.stdout.write("\nline5");sys.stdout.flush();sys.stdout.write("\nline6");R    R   Rc   i   Rd   s#   line1
line2
line3
line4
line5
line6s%   line1
line2line3
line4
line5
line6(   R   R!   R   R   Re   R"   R#   RS   R    R   R	   R   R   R   (   R   R    R#   R   (    (    R   t#   test_universal_newlines_communicate>  s    	c      	   C   sœ   t  i d ƒ o t o
 d } n d } xm t | ƒ D]_ } t i t i	 d d g d t i
 d t i
 d t i
 ƒ} | i d	 ƒ d
 } |  i | d	 ƒ q5 Wd  S(   NR   i  iA   s   -cs-   import sys;sys.stdout.write(sys.stdin.read())R%   R    R   t   limei    (   t   test_supportt   is_resource_enabledR[   t   max_handlest   ranget   iR   R!   R   R   R"   R#   RS   t   dataR   R   (   R   Rm   R#   Rn   Rk   (    (    R   t   test_no_leakingX  s    
 		c         C   sÐ   |  i t i d d d g ƒ d ƒ |  i t i d d d g ƒ d ƒ |  i t i d d	 d
 g ƒ d ƒ |  i t i d d d g ƒ d ƒ |  i t i d d d g ƒ d ƒ |  i t i d d d g ƒ d ƒ d  S(   Ns   a b cR4   t   es   "a b c" d es   ab"cs   \s	   ab\"c \ ds   a\\\bs   de fgt   hs   a\\\b "de fg" hs   a\"bt   cs
   a\\\"b c ds   a\\b cs   "a\\b c" d es   a\\b\ cs   "a\\b\ c" d e(   R   R   R   t   list2cmdline(   R   (    (    R   t   test_list2cmdlineh  s    c         C   s€   t  i t i d d g ƒ } d } x/ | i ƒ  d  j o t i	 d ƒ | d 7} q$ W|  i | d j ƒ |  i | i ƒ  d ƒ d  S(   Ns   -cs   import time; time.sleep(1)i    f0.10000000000000001i   i   (   R   R!   R   R   R#   t   countt   pollR&   t   timet   sleepR   t   assert_R   (   R   Ru   R#   (    (    R   t	   test_pollw  s     c         C   sK   t  i t i d d g ƒ } |  i | i ƒ  d ƒ |  i | i ƒ  d ƒ d  S(   Ns   -cs   import time; time.sleep(2)i    (   R   R!   R   R   R#   R   R   R$   (   R   R#   (    (    R   t	   test_wait‡  s    c         C   sG   y  t  i t i d d g d ƒ Wn t j
 o n X|  i d ƒ d  S(   Ns   -ct   passR9   s   Expected TypeError(   R   R!   R   R   t	   TypeErrorR   t   fail(   R   (    (    R   t   test_invalid_bufsize  s
     c         C   sj   y% t  i t i d d g d d ƒ} Wn1 t j
 o% } |  i | i	 i
 d ƒ d ƒ n X|  i d ƒ d  S(   Ns   -cR   RI   s   /this/path/does/not/exists   os.chdiriÿÿÿÿs   Expected OSError(   R   R!   R   R   R#   t   OSErrorRp   R   t   assertNotEqualt   child_tracebackt   findR~   (   R   Rp   R#   (    (    R   t   test_exceptions  s    !c         C   s@   t  i t i d d g ƒ } | i ƒ  |  i | i t	 i
 ƒ d  S(   Ns   -cs   import os; os.abort()(   R   R!   R   R   R#   R$   R   R   R+   t   signalt   SIGABRT(   R   R#   (    (    R   t   test_run_abort©  s    
c         C   sJ   t  i t i d d g d t  i d d „  ƒ} |  i | i i	 ƒ  d ƒ d  S(   Ns   -cs2   import sys,os;sys.stdout.write(os.getenv("FRUIT"))R    t
   preexec_fnc           C   s   t  i d d ƒ S(   NR   t   apple(   R   t   putenv(    (    (    R   t   <lambda>¶  s    R‰   (
   R   R!   R   R   R"   R#   R   R   R    R:   (   R   R#   (    (    R   t   test_preexec°  s    	c         C   s“   |  i ƒ  \ } } t i | d ƒ t i | d t i ƒ t i | ƒ t i	 | d ƒ t
 i | ƒ } | i ƒ  t i | ƒ |  i | i d ƒ d  S(   Ns
   #!/bin/sh
s&   exec %s -c 'import sys; sys.exit(47)'
iÀ  i/   (   R   R   t   fR   R   R.   R   R   R/   t   chmodR   R!   R#   R$   t   removeR   R+   (   R   R   R#   R   (    (    R   t   test_args_string¹  s    
c         C   sT   |  i t t i t i d d g d d ƒ|  i t t i t i d d g d d ƒd  S(   Ns   -cs   import sys; sys.exit(47)t   startupinfoi/   t   creationflags(   R   t   assertRaisest
   ValueErrorR   R   R   R   (   R   (    (    R   t   test_invalid_argsÆ  s    
c         C   sc   t  i i ƒ  } d | d <t i d g d d d t i d | ƒ} |  i	 | i
 i ƒ  i ƒ  d ƒ d  S(   NR‰   R   s   echo $FRUITt   shelli   R    R   (   R   R   R   R   R   R!   R"   R#   R   R   R    R:   t   strip(   R   R#   R   (    (    R   t   test_shell_sequenceÑ  s    
	c         C   s`   t  i i ƒ  } d | d <t i d d d d t i d | ƒ} |  i	 | i
 i ƒ  i ƒ  d ƒ d  S(   NR‰   R   s   echo $FRUITR–   i   R    R   (   R   R   R   R   R   R!   R"   R#   R   R   R    R:   R—   (   R   R#   R   (    (    R   t   test_shell_stringÚ  s    
	c         C   s†   |  i ƒ  \ } } t i | d ƒ t i | d t i ƒ t i | ƒ t i	 | d ƒ t
 i | ƒ } t i | ƒ |  i | d ƒ d  S(   Ns
   #!/bin/sh
s&   exec %s -c 'import sys; sys.exit(47)'
iÀ  i/   (   R   R   R   R   R   R.   R   R   R/   RŽ   R   R   R   R   R   (   R   R   R   R   (    (    R   t   test_call_stringã  s    c         C   sM   d } d } t i ƒ  } | | _ | | _ t i t i	 d d g d | ƒd  S(   Ni   i   s   -cs   import sys; sys.exit(0)R‘   (
   t   STARTF_USESHOWWINDOWt   SW_MAXIMIZER   t   STARTUPINFOR‘   t   dwFlagst   wShowWindowR   R   R   (   R   R‘   Rœ   R›   (    (    R   t   test_startupinfoô  s    		c         C   s4   d } t i i d ƒ t i t i d d | ƒd  S(   Ni   s'       a DOS box should flash briefly ...
s#    -c "import time; time.sleep(0.25)"R’   (   t   CREATE_NEW_CONSOLER   R   R.   R   R   R   (   R   R¡   (    (    R   t   test_creationflags  s    c         C   sW   |  i t t i t i d d g d d „  ƒ|  i t t i t i d d g d t ƒd  S(   Ns   -cs   import sys; sys.exit(47)Rˆ   c           C   s   d S(   Ni   (    (    (    (    R   R‹     s    t	   close_fds(   R   R“   R”   R   R   R   R   t   True(   R   (    (    R   R•     s    c         C   sf   t  i i ƒ  } d | d <t i d g d d d t i d | ƒ} |  i	 | i
 i ƒ  i d ƒ d ƒ d  S(	   Nt   physalisR   t   setR–   i   R    R   iÿÿÿÿ(   R   R   R   R   R   R!   R"   R#   R   R   R    R:   Rƒ   (   R   R#   R   (    (    R   R˜     s    
	c         C   sc   t  i i ƒ  } d | d <t i d d d d t i d | ƒ} |  i	 | i
 i ƒ  i d ƒ d ƒ d  S(	   NR¥   R   R¦   R–   i   R    R   iÿÿÿÿ(   R   R   R   R   R   R!   R"   R#   R   R   R    R:   Rƒ   (   R   R#   R   (    (    R   R™     s    
	c         C   s*   t  i t i d ƒ } |  i | d ƒ d  S(   Ns    -c "import sys; sys.exit(47)"i/   (   R   R   R   R   R   R   R   (   R   R   (    (    R   Rš   (  s    (,   t   __name__t
   __module__R   R   R   R'   R(   R)   R,   R0   R6   R8   R;   R<   R=   R?   R@   RA   RF   RG   RP   RQ   RT   RU   R_   Rb   Rf   Rg   Ro   Rt   Rz   R{   R   R[   R„   R‡   RŒ   R   R•   R˜   R™   Rš   R    R¢   (    (    (    R   R      s^   			
		
			
					
							
																												c           C   s   t  i t ƒ d  S(   N(   Ri   t   run_unittestR   (    (    (    R   t	   test_main/  s    t   __main__(   t   unittestt   testRi   R   R   R…   R   R
   Rw   R   t   platformR[   Re   R   t   TestCaseR   Rª   R§   (   Ri   R
   R¬   R   Re   R   R   R   Rª   Rw   R   R[   R   R…   (    (    R   t   ?   s&   								
	ÿ ÿ 	