a
    "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mZ zd dlZW n e	y^   dZY n0 d dl
mZ dd Zdd Zdd	 ZdS )
    N)support)setup_unraisable_hookc              	   C   s  zt j }W n ttfy(   d }Y nZ0 tjd|d g }ttdrR|	tj
 ttdrh|	tj |D ]}tj|d|d qlt  t  tt j | jrt jdtj| j t j D ]P}t|drt|jD ]\}}tj||j|< qt|dd rtj|j|_q| jr$d	tj_ | j!d ur<t"| j! | j#d urTt$%| j# t&| j'oh| j'd
k | j(t_(tt drdd }t )| t*  | j+d urt,tj-| j+d t_-t,tj.| j+d t_.t/tj0| j+t_0t/tj1| j+t_1t/tj-| j+t_-t/tj.| j+t_.d S )NT)Zall_threadsfileSIGALRMSIGUSR1)chainr   r   __path____file__F   addaudithookc                 S   s   d S N )nameargsr   r   >/opt/python-3.9.21/usr/lib/python3.9/test/libregrtest/setup.py_test_audit_hookO   s    z%setup_tests.<locals>._test_audit_hook(      )2sys
__stderr__fileno
ValueErrorAttributeErrorfaulthandlerenablehasattrsignalappendr   r   register_adjust_resource_limitsreplace_stdoutr   Zrecord_original_stdoutstdoutZtestdirpathinsertosabspathmodulesvalues	enumerater   getattrr	   Z
huntrleaksunittestZBaseTestSuite_cleanupmemlimitZset_memlimitZ	thresholdgcZset_thresholdZsuppress_msvcrt_assertsverboseZuse_resourcesr   r   timeoutmaxZSHORT_TIMEOUTZLONG_TIMEOUTminZLOOPBACK_TIMEOUTZINTERNET_TIMEOUT)nsZ	stderr_fdZsignalssignummoduleindexr"   r   r   r   r   setup_tests   sT    




r6   c                     sZ   t j z  } W n ty&   Y d S 0 t| d jddddt _ fdd}t| d S )NwbackslashreplaceF
)encodingerrorsclosefdnewlinec                      s   t j   t _d S r   )r   r!   closer   r!   r   r   restore_stdoutu   s    
z&replace_stdout.<locals>.restore_stdout)r   r!   r   r   openr:   atexitr   )fdr@   r   r?   r   r    a   s    r    c                  C   s   zdd l } ddl m}m} W n ty0   Y d S 0 | |\}}d}||k r||k rt||}z(| |||f td| d|  W nD tt	fy } z(td| d| d| d	 W Y d }~n
d }~0 0 d S )
Nr   )RLIMIT_NOFILERLIM_INFINITYi   zRaised RLIMIT_NOFILE: z -> z#Unable to raise RLIMIT_NOFILE from z to z: .)
resourcerD   rE   ImportErrorZ	getrlimitr1   Z	setrlimitprintr   OSError)rG   rD   rE   Zfd_limitZmax_fdsZdesired_fdsZnew_fd_limiterrr   r   r   r   {   s$    

r   )rB   r   r$   r   r   r*   testr   r-   rH   Ztest.libregrtest.utilsr   r6   r    r   r   r   r   r   <module>   s   
Q