a  ze@sddlZddlZddlZddlZddlZddlZddlmZz ddlZWne y^dZYn0ddl m Z ddZ ddZ dd ZdS) N)support)setup_unraisable_hookc Csztj}Wnttfy(d}YnZ0tjd|dg}ttdrR| tj ttdrh| tj |D]}tj |d|dqlt tttj|jrtjdtj|jtjD]P}t|drt|jD]\}}tj||j|<qt|ddrtj|j|_q|jr$d tj_ |j!dur._test_audit_hook()2sys __stderr__fileno ValueErrorAttributeError faulthandlerenablehasattrsignalappendrrregister_adjust_resource_limitsreplace_stdoutrZrecord_original_stdoutstdoutZtestdirpathinsertosabspathmodulesvalues enumeratergetattrr Z huntrleaksunittestZ BaseTestSuite_cleanupmemlimitZ set_memlimitZ thresholdgcZ set_thresholdZsuppress_msvcrt_assertsverboseZ use_resourcesr rtimeoutmaxZ SHORT_TIMEOUTZ LONG_TIMEOUTminZLOOPBACK_TIMEOUTZINTERNET_TIMEOUT)nsZ stderr_fdZsignalssignummoduleindexr"rr r r setup_testssT                r6csZtjz }Wnty&YdS0t|djddddt_fdd}t|dS) zSet stdout encoder error handler to backslashreplace (as stderr error handler) to avoid UnicodeEncodeError when printing a tracebackNwbackslashreplaceF )encodingerrorsclosefdnewlinecstjt_dSr )rr!closer r!r rrestore_stdoutus z&replace_stdout..restore_stdout)rr!rropenr:atexitr)fdr@r r?rr as   r c Cszddl}ddlm}m}Wnty0YdS0||\}}d}||kr||krt||}z(||||ftd|d|WnDtt fy}z(td|d|d |d WYd}~n d}~00dS) z5Adjust the system resource limits (ulimit) if needed.rN) RLIMIT_NOFILE RLIM_INFINITYizRaised RLIMIT_NOFILE: z -> z#Unable to raise RLIMIT_NOFILE from z to z: .) resourcerDrE ImportErrorZ getrlimitr1Z setrlimitprintrOSError)rGrDrEZfd_limitZmax_fdsZ desired_fdsZ new_fd_limiterrr r rr{s$   r)rBrr$rrr*testrr-rHZtest.libregrtest.utilsrr6r rr r r rs     Q