a
    äze9  ã                   @   s˜   d Z ddlZddlZddlZddlZddlZddlmZ ddlm	Z	 e
edƒsXe d¡‚e
edƒsle d¡‚G d	d
„ d
eƒZdd„ Zedkr”e ¡  dS )z/This test checks for correct wait3() behavior.
é    N)ÚForkWait)ÚsupportÚforkzos.fork not definedÚwait3zos.wait3 not definedc                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú	Wait3Testc                C   sn   t  ¡ tj }t  ¡ |krBt tj¡\}}}||kr6qBt  d¡ q|  ||¡ |  t 	|¡|¡ |  
|¡ d S )Ngš™™™™™¹?)ÚtimeÚ	monotonicr   ZSHORT_TIMEOUTÚosr   ÚWNOHANGÚsleepÚassertEqualÚwaitstatus_to_exitcodeZ
assertTrue)ÚselfZcpidÚexitcodeÚdeadlineZspidÚstatusÚrusage© r   ú%/usr/lib/python3.9/test/test_wait3.pyÚ	wait_impl   s    zWait3Test.wait_implc                 C   s†   t jddg}tj|tjd}zPt tj¡\}}}|  d|¡ |  d|¡ |  dt	|ƒ¡ W |j
 ¡  | ¡  n|j
 ¡  | ¡  0 d S )Nz-czimport sys; sys.stdin.read())Ústdinr   )ÚsysÚ
executableÚ
subprocessÚPopenÚPIPEr	   r   r
   r   Úsumr   ÚcloseÚwait)r   ÚargsÚprocÚpidr   r   r   r   r   Útest_wait3_rusage_initialized$   s    

ÿ
z'Wait3Test.test_wait3_rusage_initializedN)Ú__name__Ú
__module__Ú__qualname__r   r"   r   r   r   r   r      s   r   c                   C   s   t  ¡  d S )N)r   Úreap_childrenr   r   r   r   ÚtearDownModule4   s    r'   Ú__main__)Ú__doc__r	   r   r   r   ZunittestZtest.fork_waitr   Útestr   ÚhasattrZSkipTestr   r'   r#   Úmainr   r   r   r   Ú<module>   s   



"