a
    Rîhô  ã                   @   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m	Z	 d dl
mZ e ed¡ G dd„ de	ƒZdd„ Zed	kr„e ¡  dS )
é    N)ÚForkWait)ÚsupportÚforkc                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚForkTestc                    sú   t  ¡ ‰d‰d‰d‰ ‡ ‡‡‡fdd„}t j|d}| ¡  ˆ ¡  d}t ¡ }z~|sŽtˆƒ}|ˆ krpt |¡ q¤t	j
dkr‚td	ƒ t d¡ n| ¡  | j||d
 W zt |tj¡ W qö tyÊ   Y qö0 n(zt |tj¡ W n tyò   Y n0 0 d S )Nzfake test moduleÚpartialZcompletec                      s:   t  ¡  ˆtjˆ< ˆ ¡  t d¡ ˆ tjˆ< t  ¡  d S )Ng{®Gáz„?)ÚimpÚacquire_lockÚsysÚmodulesÚsetÚtimeÚsleepÚrelease_lock© ©Zcomplete_moduleZfake_module_nameZimport_startedZpartial_moduler   ú7/opt/python-3.9.24/usr/lib/python3.9/test/test_fork1.pyÚimporter   s    


z9ForkTest.test_threaded_import_lock_fork.<locals>.importer)Útargeté*   é   z Child encountered partial module©Úexitcode)Ú	threadingÚEventÚThreadÚstartÚwaitÚosr   Ú
__import__Ú_exitr   ÚverboseÚprintÚjoinÚ	wait_implÚkillÚsignalÚSIGKILLÚOSError)Úselfr   Útr   ÚpidÚmr   r   r   Útest_threaded_import_lock_fork   s8    
ýz'ForkTest.test_threaded_import_lock_forkc                    s,   d‰ ‡ ‡fdd„}t dƒD ]}||ƒ qd S )Nr   c              	      sÂ   d}d}zdzFt | ƒD ]}t ¡  |d7 }qt ¡ }| }W t |ƒD ]}t ¡  qBnt |ƒD ]}t ¡  qZ0 W n4 ty    |rštjdkrt	dƒ t 
d¡ ‚ Y n0 |r°t 
ˆ ¡ ˆj|ˆ d d S )Nr   Fr   zRuntimeError in childr   )Úranger   r   r   r   r   ÚRuntimeErrorr   r    r!   r   r#   )ÚlevelÚreleaseZin_childÚir*   ©r   r(   r   r   Úfork_with_import_lockC   s,    
ÿ


zDForkTest.test_nested_import_lock_fork.<locals>.fork_with_import_locké   )r-   )r(   r3   r/   r   r2   r   Útest_nested_import_lock_fork?   s    z%ForkTest.test_nested_import_lock_forkN)Ú__name__Ú
__module__Ú__qualname__r,   r5   r   r   r   r   r      s   +r   c                   C   s   t  ¡  d S )N)r   Úreap_childrenr   r   r   r   ÚtearDownModule`   s    r:   Ú__main__)Ú_impr   r   r%   r	   r   r   ZunittestZtest.fork_waitr   Útestr   Zget_attributer   r:   r6   Úmainr   r   r   r   Ú<module>   s   M