
    <en                     
   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                     dS dS )zQBasic tests for os.popen()

  Particularly useful for platforms that fake popen.
    N)supportpopenzneed os.popen() "c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )	PopenTestc                     d}|t           |fz  }t          j        |          5 }|                                }d d d            n# 1 swxY w Y   t	          |          dd          }|                     ||           d S )Nz&%s -c "import sys; print(sys.argv)" %s   )pythonosr   readevalassertEqual)selfcmdlineexpectedcmdpdatagots          &/usr/lib/python3.11/test/test_popen.py_do_test_commandlinezPopenTest._do_test_commandline   s    6VW%%Xc]] 	a6688D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	4jjnh'''''s   AAAc                    |                      t          t          j                   |                     dddg           |                     dg d           |                     dg d           t          j                     d S )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!   s    )RX...!!EN	
 	
 	
 	!!.222	
 	
 	
 	!!*,,,	
 	
 	
 	    c                 f   |                      t          j        d                                          d            t          j        d                                          }t          j        dk    r|                      |d           d S |                      t          j        |          d           d S )Nexit 0zexit 42nt*   )r   r   r   closenamewaitstatus_to_exitcode)r   statuss     r   test_return_codezPopenTest.test_return_code1   s    (++1133T:::)$$**,,7d??VR(((((R6v>>CCCCCr!   c                     t          j        d          5 }|                     |                                d           d d d            d S # 1 swxY w Y   d S Nz
echo hellozhello
)r   r   r   r   r   fs     r   test_contextmanagerzPopenTest.test_contextmanager9   s    Xl## 	2qQVVXXy111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   )AAAc                     t          j        d          5 }|                     t          |          dg           d d d            d S # 1 swxY w Y   d S r,   )r   r   r   listr-   s     r   test_iteratingzPopenTest.test_iterating=   s    Xl## 	3qT!WWyk222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s   %AAAc                 h    t          j        ddd          5  	 d d d            d S # 1 swxY w Y   d S )Nr#   w)r   mode	buffering)r   r   r   s    r   test_keywordszPopenTest.test_keywordsA   s    X(;;; 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   '++N)	__name__
__module____qualname__r   r    r*   r/   r2   r8    r!   r   r   r      sq        ( ( (      D D D2 2 23 3 3    r!   r   __main__)__doc__unittesttestr   r   syshasattrSkipTest
executabler   requires_subprocessTestCaser   r9   mainr<   r!   r   <module>rH      s    
        wr7 /
(
-
.
.. 
&==6\CF, , , , ,! , , ,\ zHMOOOOO r!   