a XC?h@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 faulthandlerZenablehasattrsignalappendrrregister_adjust_resource_limitsreplace_stdoutrZrecord_original_stdoutstdoutZtestdirpathinsertosabspathmodulesvalues enumeratergetattrr Z huntrleaksunittestZ BaseTestSuiteZ_cleanupZmemlimitZ set_memlimitZ thresholdgcZ set_thresholdZsuppress_msvcrt_assertsverboseZ use_resourcesr rZtimeoutmaxZ SHORT_TIMEOUTZ LONG_TIMEOUTminZLOOPBACK_TIMEOUTZINTERNET_TIMEOUT)nsZ stderr_fdZsignalsZsignummoduleindexr!rr r r setup_testssT                r1csZtjz }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 rropenr5atexitr)fdr;r r:rras   rc 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: .) resourcer?r@ ImportErrorZ getrlimitr-Z setrlimitprintrOSError)rBr?r@Zfd_limitZmax_fdsZ desired_fdsZ new_fd_limiterrr r rr{s$   r)r=rr#rrr)testrr*rCZtest.libregrtest.utilsrr1rrr r r rs     Q