
    dafn                        d Z ddlZddlmZ ddlZddlZ eed      s ej                  d      ej                  Z	de	v rde	z   dz   Z	 ej                          G d d	ej                               Zed
k(  r ej                          yy)zQBasic tests for os.popen()

  Particularly useful for platforms that fake popen.
    N)supportpopenzneed os.popen() "c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)	PopenTestc                     d}|t         |fz  }t        j                  |      5 }|j                         }d d d        t	              dd  }| j                  ||       y # 1 sw Y   *xY w)Nz&%s -c "import sys; print(sys.argv)" %s   )pythonosr   readevalassertEqual)selfcmdlineexpectedcmdpdatagots          */root/Python-3.12.4/Lib/test/test_popen.py_do_test_commandlinezPopenTest._do_test_commandline   sb    6VW%%XXc] 	a668D	4jnh'	 	s   AA&c                     | j                  t        t        j                         | j	                  dddg       | j	                  dg d       | j	                  dg d       t        j                          y )Nzfoo barfoobarz foo "spam and eggs" "silly walk")r   zspam and eggsz
silly walkzfoo "a \"quoted\" arg" bar)r   za "quoted" argr   )assertRaises	TypeErrorr   r   r   r   reap_childrenr   s    r   
test_popenzPopenTest.test_popen!   sh    )RXX.!!EN	
 	!!.2	
 	!!*,	
 	    c                 F   | j                  t        j                  d      j                         d        t        j                  d      j                         }t        j                  dk(  r| j                  |d       y | j                  t        j
                  |      d       y )Nexit 0zexit 42nt*   )r   r   r   closenamewaitstatus_to_exitcode)r   statuss     r   test_return_codezPopenTest.test_return_code1   sq    (+113T:)$**,77d?VR(R66v>Cr!   c                     t        j                  d      5 }| j                  |j                         d       d d d        y # 1 sw Y   y xY wNz
echo hellozhello
)r   r   r   r   r   fs     r   test_contextmanagerzPopenTest.test_contextmanager9   s;    XXl# 	2qQVVXy1	2 	2 	2s   !A  A	c                     t        j                  d      5 }| j                  t        |      dg       d d d        y # 1 sw Y   y xY wr,   )r   r   r   listr-   s     r   test_iteratingzPopenTest.test_iterating=   s;    XXl# 	3qT!Wyk2	3 	3 	3s	   <Ac                 `    t        j                  ddd      5  	 d d d        y # 1 sw Y   y xY w)Nr#   w)r   mode	buffering)r   r   r   s    r   test_keywordszPopenTest.test_keywordsA   s*    XX(; 		 	 	s   $-N)	__name__
__module____qualname__r   r    r*   r/   r2   r8    r!   r   r   r      s!    (  D23r!   r   __main__)__doc__unittesttestr   r   syshasattrSkipTest
executabler   requires_subprocessTestCaser   r9   mainr<   r!   r   <module>rH      s   
   r7
(

-
.. 
&=6\CF,!! , ,\ zHMMO r!   