3
^d#                 @   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 yd dlZW n e	k
r`   dZY nX d dl
mZ dd Zdd ZdS )    N)support)warm_cachesc       	      C   s,  yt jj }W n ttfk
r*   d }Y n^X tjd|d g }ttdrT|j	tj
 ttdrj|j	tj x|D ]}tj|d|d qpW t  tjt j | jrt jjdtjj| j xbt jj D ]T}t|drx(t|jD ]\}}tjj||j|< qW t|dd rtjj|j|_qW | jr2d	tj_t   | j!d k	rJtj"| j! | j#d k	rbt$j%| j# ydd l&}W n t'k
r   Y nX |j(|j)|j*B |j+B |j,B  y
|j- W n tk
r   Y n\X xX|j.|j/|j0gD ]D}| j1r| j1d
kr|j-||j2 |j3||j4 n|j-|d qW | j5t_5d S )NT)Zall_threadsfileSIGALRMSIGUSR1)chainr   r   __path____file__F   )6sys
__stderr__fileno
ValueErrorAttributeErrorfaulthandler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_cleanupr   ZmemlimitZset_memlimitZ	thresholdgcZset_thresholdmsvcrtImportErrorZSetErrorModeZSEM_FAILCRITICALERRORSZSEM_NOALIGNMENTFAULTEXCEPTZSEM_NOGPFAULTERRORBOXZSEM_NOOPENFILEERRORBOXZCrtSetReportModeZCRT_WARNZ	CRT_ERRORZ
CRT_ASSERTverboseZCRTDBG_MODE_FILEZCrtSetReportFileZCRTDBG_FILE_STDERRZuse_resources)	nsZ	stderr_fdZsignalsZsignummoduleindexr   r"   m r)   ,/usr/lib/python3.6/test/libregrtest/setup.pysetup_tests   s\    






r+   c                 sZ   t j y j } W n tk
r&   dS X t| d jddddt _ fdd}tj| 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j   t _d S )N)r   r   closer)   )r   r)   r*   restore_stdouty   s    
z&replace_stdout.<locals>.restore_stdout)r   r   r   r   openr/   atexitr   )fdr4   r)   )r   r*   r   e   s    
r   )r6   r   r   r   r   r    Ztestr   r!   r#   Ztest.libregrtest.refleakr   r+   r   r)   r)   r)   r*   <module>   s   
U