U
    -¿áft  ã                   @   sv   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	k
r`   dZY nX dd„ Z
dd„ ZdS )é    N)Úsupportc              	   C   s’  zt j ¡ }W n ttfk
r*   d }Y nZX tjd|d g }ttdƒrT| 	tj
¡ ttdƒrj| 	tj¡ |D ]}tj|d|d qntƒ  t t j¡ | jr´t j dtj | j¡¡ t j ¡ D ]P}t|dƒròt|jƒD ]\}}tj |¡|j|< qÖt|dd ƒr¾tj |j¡|_q¾| jr d	tj_| j d k	r8t !| j ¡ | j"d k	rPt# $| j"¡ t %| j&od| j&d
k¡ | j't_'tt dƒrŽdd„ }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.8/test/libregrtest/setup.pyÚ_test_audit_hookL   s    z%setup_tests.<locals>._test_audit_hook))Ú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
   )ÚnsZ	stderr_fdZsignalsZsignumÚmoduleÚindexr   r   r   r   r   Úsetup_tests   sB    



r+   c                     s\   t j‰ zˆ  ¡ } W n tk
r(   Y dS X t| dˆ jddddt _‡ fdd„}t |¡ dS )	zˆSet 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_stdoute   s    
z&replace_stdout.<locals>.restore_stdout)r   r   r   r   Úopenr/   Úatexitr   )Úfdr5   r   r4   r   r   Q   s    ür   )r7   r   r   r   r   r%   Ztestr   r&   ÚImportErrorr+   r   r   r   r   r   Ú<module>   s   
C