a
    kxg&                     @   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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 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r6t!| j  | j"d urNt#$| j" t%| j&ob| 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j/| j*t_/t.tj0| j*t_0t.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   ,/usr/lib/python3.9/test/libregrtest/setup.py_test_audit_hookN   s    z%setup_tests.<locals>._test_audit_hook(      )1sys
__stderr__fileno
ValueErrorAttributeErrorfaulthandlerZenablehasattrsignalappendr   r   registerreplace_stdoutr   Zrecord_original_stdoutstdoutZtestdirpathinsertosabspathmodulesvalues	enumerater   getattrr	   Z
huntrleaksunittestZBaseTestSuiteZ_cleanupZmemlimitZset_memlimitZ	thresholdgcZset_thresholdZsuppress_msvcrt_assertsverboseZuse_resourcesr   r   ZtimeoutmaxZSHORT_TIMEOUTZLONG_TIMEOUTminZLOOPBACK_TIMEOUTZINTERNET_TIMEOUT)nsZ	stderr_fdZsignalsZsignummoduleindexr    r   r   r   r   setup_tests   sR    




r0   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 )	zSet stdout encoder error handler to backslashreplace (as stderr error
    handler) to avoid UnicodeEncodeError when printing a tracebackNwbackslashreplaceF
)encodingerrorsclosefdnewlinec                      s   t j   t _d S r   )r   r   closer   r   r   r   restore_stdoutt   s    
z&replace_stdout.<locals>.restore_stdout)r   r   r   r   openr4   atexitr   )fdr:   r   r9   r   r   `   s    r   )r<   r   r"   r   r   r(   testr   r)   ImportErrorZtest.libregrtest.utilsr   r0   r   r   r   r   r   <module>   s   
P