B  f]@s@ edkredddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl!Z"ddl#Z#ddl$m%Z%y ddl&Z'Wnek r:dZ'YnXy ddl(Z(Wnek rbdZ(YnXy ddl)Z)Wnek rdZ)YnXy ddl*Z*Wnek rdZ*YnXy ddl+Z+Wnek rdZ+YnXy ddl,Z,Wnek rdZ,YnXdddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbg]Z-Gdcd d e.Z/Gddd d e/Z0Gded d e/Z1Gdfdde j2Z3ej4dedhdiZ5dfdkdldmdZ6dndoZ7dpdqZ8drd;Z9dsd<Z:dgdtdZ;dud7Zda?da@dZAdjZBdaCdvdZDdwdZEdxdZFdydzZGejHd{rԐdhd|d}ZId~dZJddZKddZLddZMnejNZJejOZKddZLddZMddZNddZOddZPddZQddZRddZSdd"ZTdidd#ZUddZVdd$ZWdd%ZXdd&ZYdZZdZ[dZ\ej]ej^fddGZ_eZfddHZ`ddJZaddZbebZcddZddZedZfe gehidHddZje ge(dZke ge)dZle ge*dZme ge+dZnejHdZoepedZqejdkreqrdndZrndZrejsdkr4dZtndZtduetevZtdZwdZxxJdD]BZyyeze{eyeykrve|Wne|k rYnXeyZxPqVWetdZ}ejdkrddl~Z~e~de}Z}eZdZejsdkr0ejdkrretdZyeeWnek rYnXedeefdZnBejdkrrydeWn&ek rpetdedZYnXdZxDdD]ZGd?dMdMejjZGd@dXdXeZdadAd ZdBd0ZdadCdDZdEd9ZdadFd?ZdGd!ZdkdHdId=ZdvdJd>ZGdKdZdZZdLdMZ dNdOZ dwdPdQZ gfdRd^Z da dSdDZej4dTdUZdVd_ZGdWdXdXZdYdZZGd[d\d\ZGd]d^d^ZeZe jGd_d`d`ZeZe jGdadbdbZeZej4dcddZdS(xz test.supportz.support must be imported from the test packageN)get_test_runner PIPE_MAX_SIZEverbose max_memuse use_resourcesfailfastError TestFailed TestDidNotRunResourceDenied import_moduleimport_fresh_module CleanImportunloadforgetrecord_original_stdoutget_original_stdoutcaptured_stdoutcaptured_stdincaptured_stderrTESTFNSAVEDCWDunlinkrmtreetemp_cwdfindfilecreate_empty_file can_symlinkfs_is_case_insensitiveis_resource_enabledrequiresrequires_freebsd_versionrequires_linux_versionrequires_mac_vercheck_syntax_errorTransientResourcetime_outsocket_peer_resetioerror_peer_resettransient_internetBasicTestRunner run_unittest run_doctestskip_unless_symlink requires_gzip requires_bz2 requires_lzma bigmemtestbigaddrspacetest cpython_only get_attributerequires_IEEE_754skip_unless_xattr requires_zlibanticipate_failureload_package_testsdetect_api_mismatch check__all__skip_unless_bind_unix_socket is_jython is_androidcheck_impl_detail unix_shellsetswitchintervalHOST IPV6_ENABLEDfind_unused_port bind_portopen_urlresourcebind_unix_socket temp_umask reap_children TestHandlerthreading_setupthreading_cleanup reap_threads start_threadscheck_warningscheck_no_resource_warningEnvironmentVarGuardrun_with_locale swap_item swap_attrMatcher set_memlimitSuppressCrashReportsortdict run_with_tzPGOmissing_compiler_executablefd_count ALWAYS_EQLARGESTSMALLESTc@s eZdZdS)r N)__name__ __module__ __qualname__rdrd:/opt/alt/python37/lib64/python3.7/test/support/__init__.pyr ssc@s eZdZdS)r N)rarbrcrdrdrdrer vsc@s eZdZdS)r N)rarbrcrdrdrdrer ysc@s eZdZdS)r N)rarbrcrdrdrdrer |sTc cs8|r.ttddtdVWdQRXndVdS)Nignorez.+ (module|package))warningscatch_warningsfilterwarningsDeprecationWarning)rfrdrdre_ignore_deprecated_importss  rkFrd) required_onc Csft|Ty t|Stk rV}z$tjt|r8t t |Wdd}~XYnXWdQRXdS)N) rk importlibr ImportErrorsysplatform startswithtupleunittestSkipTeststr)name deprecatedrlmsgrdrdrer s  cCs^|tjkrt|tj|=x>ttjD]0}||ks@||dr&tj|||<tj|=q&WdS)N.)romodules __import__listrq)rv orig_modulesmodnamerdrdre_save_and_remove_modules rcCs>d}ytj|||<Wntk r.d}YnXdtj|<|S)NTF)rorzKeyError)rvr}Zsavedrdrdre_save_and_block_modules  rcCs|r tjSddS)NcSs|S)Nrd)frdrdrez$anticipate_failure..)rsZexpectedFailure)Z conditionrdrdrer9scCsF|dkr d}tjtjtjt}|j|||d}|||S)Nztest*)Z start_dirZ top_level_dirpattern)ospathdirname__file__ZdiscoverZaddTests)Zpkg_dirloaderZstandard_testsrZtop_dirZ package_testsrdrdrer:s c Cst|i}g}t||zfyHx|D]}t||q&Wx |D]}t||s>||q>Wt|}Wntk r~d}YnXWdx|D]\} } | tj | <qWx|D] } tj | =qWX|SQRXdS)N) rkrrappendrmr rnitemsrorz) rvZfreshZblockedrwr}Znames_to_removeZ fresh_nameZ blocked_nameZ fresh_moduleZ orig_namemoduleZname_to_removerdrdrers$      cCs>yt||}Wn&tk r4td||fYnX|SdS)Nzobject %r has no attribute %r)getattrAttributeErrorrsrt)objrvZ attributerdrdrer5s cCs|adS)N)_original_stdout)stdoutrdrdrer'scCs tptjS)N)rrorrdrdrdrer+scCs&y tj|=Wntk r YnXdS)N)rorzr)rvrdrdrer.s c Gspy||Stk rj}zDtdkrHtd|jj|ftd|j|ft|tj||Sd}~XYnXdS)Nz%s: %sz re-run %s%r) OSErrorrprint __class__rarchmodstatS_IRWXU)rfuncargserrrdrdre _force_run4srwincCs|||r|}ntj|\}}|p(d}d}x>|dkrlt|}|rL|sXn||ksXdSt||d9}q0Wtjd|tdddS)NrygMbP?g?rz)tests may fail, delete still pending for ) stacklevel) rrsplitlistdirtimesleeprgwarnRuntimeWarning)rpathnamewaitallrrvtimeoutLrdrdre_waitfor?s     rcCsttj|dS)N)rrr)filenamerdrdre_unlink`srcCsttj|dS)N)rrrmdir)rrdrdre_rmdircsrcs,fddt|ddtdd|dS)Nc sxt|tj|D]}tj||}yt|j}Wn<tk rn}ztd||ft j dd}Wdd}~XYnXt |rt |ddt|tj|qt|tj|qWdS)Nz-support.rmtree(): os.lstat(%r) failed with %s)filerT)r)rrrrjoinlstatst_moderrro __stderr__rS_ISDIRrrr)rrvfullnamemodeexc) _rmtree_innerrdrergs   z_rmtree.._rmtree_innerT)rcSst|tj|S)N)rrr)prdrdrervrz_rmtree..)r)rrd)rre_rmtreefs rcCs^y ddl}Wntk r Yn:X|t|d}|jj||t|}|rZ|d|S|S)Nrr)ctypesrnZcreate_unicode_bufferlenwindllkernel32ZGetLongPathNameW)rrbufferlengthrdrdre _longpathxs    rcsFyt|dStk r"YnXfdd|t|dS)Nc sx~t|tj|D]l}tj||}yt|j}Wntk rJd}YnXt |rn|t|tj |qt|tj |qWdS)Nr) rrrrrrrrrrrr)rrvrr)rrdrers  z_rmtree.._rmtree_inner)shutilrrrr)rrd)rrers  cCs|S)Nrd)rrdrdrersc Cs*y t|Wnttfk r$YnXdS)N)rFileNotFoundErrorNotADirectoryError)rrdrdrers cCs&y t|Wntk r YnXdS)N)rr)rrdrdrers rcCs&y t|Wntk r YnXdS)N)rr)rrdrdrers cCsBtj|}tjtj|}tj||d}t|||S)Nc) rmutilcache_from_sourcerrrabspathrrename)sourceZpyc_fileZup_oneZ legacy_pycrdrdremake_legacy_pycs   rcCs\t|xNtjD]D}tj||d}t|dx dD]}ttjj||dq8WqWdS)Nz.pyr)rr) optimization) rrorrrrrmrr)r~rroptrdrdrers    c sttdrtjSd}tjdrddlddld}d}Gfdddj}j j }| }|sj |}j }||||||}|s t|j|@sd}ntjdkrVdd lm} mm} m} dd lm} | | d } | dkrd }nFGfd dd| }|}| |}| |dksR| |dkrVd}|sy.ddlm}|}|| |!Wn\t"k r}z.USEROBJECTFLAGSZfInheritZ fReserveddwFlagsN)rarbrcwintypesZBOOLDWORD_fields_rd)rrdreUSEROBJECTFLAGSs  rz,gui not available (WSF_VISIBLE flag not set)darwin)cdllc_intpointer Structure) find_libraryZApplicationServicesz0gui tests cannot run without OS X window managercseZdZdfdfgZdS)z._is_gui_available..ProcessSerialNumberZ highLongOfPSNZ lowLongOfPSNN)rarbrcrrd)rrdreProcessSerialNumbersrz#cannot run without OS X gui process)Tk2z [...]zTk unavailable due to {}: {}))hasattr_is_gui_availablerrorprqrZctypes.wintypesrrZuser32ZGetProcessWindowStationZWinErrorrrZGetUserObjectInformationWZbyrefZsizeofboolrrrrZ ctypes.utilrZ LoadLibraryZCGMainDisplayIDZGetCurrentProcessZSetFrontProcessZtkinterrZwithdrawupdateZdestroy Exceptionrurformattyperareason)rZ UOI_FLAGSZ WSF_VISIBLErZdllhZuofZneededZresrrrrZ app_servicesrZpsnZpsn_prrooteZ err_stringrd)rrrersh         rcCstdkp|tkS)N)r)resourcerdrdrer scCs<t|s |dkrd|}t||dkr8ts8ttjdS)Nz"Use of the %r resource not enabledgui)r r rr)rrxrdrdrer!#s cCsddl}dtt|}|ddd}||krtyttt|d}Wnt k rhd}YqxX||k}nd}t ||d|d|S)Nrry-rFz version z or higher required, not ) rprmaprureleasersystemrrint ValueErrorrsskipIf)sysname min_versionrpmin_version_txt version_txtversionskiprdrdre_requires_unix_version,s   rcGs td|S)NZFreeBSD)r)rrdrdrer"GscGs td|S)NZLinux)r)rrdrdrer#Pscsfdd}|S)Ncs"tfdd}|_|S)Ncsxtjdkrntd}yttt|d}Wntk rBYn,X|krndtt }t d||f||S)Nrrryz&Mac OS X %s or higher required, not %s) rorpZmac_verrrrrrrrrursrt)rkwrrr)rrrdrewrapperas   z4requires_mac_ver..decorator..wrapper) functoolswrapsr)rr)r)rre decorator`sz#requires_mac_ver..decoratorrd)rrrd)rrer$Ys Z localhostz 127.0.0.1z::1cCs"t||}t|}|~|S)N)socketrFclose)familyZsocktypeZtempsockportrdrdrerEzs 8 cCs|jtjkr|jtjkrttdr>|tjtjdkr>t dttdrdt j kry |tjtj dkrpt dWnt k rYnXttdr|tjtjd||df|d}|S) N SO_REUSEADDRrzHtests should never set the SO_REUSEADDR socket option on TCP/IP sockets! SO_REUSEPORTZWITHIN_PYTHON_RPM_BUILDzHtests should never set the SO_REUSEPORT socket option on TCP/IP sockets!SO_EXCLUSIVEADDRUSEr)rrAF_INETr SOCK_STREAMrZ getsockoptZ SOL_SOCKETrr renvironrrZ setsockoptrbindZ getsockname)sockZhostrrdrdrerFs       cCs:y||Wn&tk r4|tdYnXdS)Nzcannot bind AF_UNIX sockets)r PermissionErrorrrsrt)r ZaddrrdrdrerHs cCsZtjrVd}z.dec)rr)rrrd)rresystem_must_validate_certs ri@iZdoubleZIEEEztest requires IEEE 754 doublesz requires zlibz requires gzipz requires bz2z requires lzmajavaZgetandroidapilevelwin32z/system/bin/shz/bin/shz$testz@testz {}_{}_tmpzhttp://www.pythontest.net) æuİuŁuφuКuאu،uتuก u€u -àòɘŁğrZNFDntru-共Ł♡ͣztWARNING: The filename %r CAN be encoded by the filesystem encoding (%s). Unicode filename tests may not be effectives-surrogateescape)swrsssrc csd}|dkr&t}d}tj|}nXyt|d}WnDtk r|}z&|sPtjd|d|t ddWdd}~XYnX|rt }z |VWd|r|t krt |XdS)NFTz5tests may fail, unable to create temporary directory z: )r) tempfilemkdtemprrrealpathmkdirrrgrrgetpidr)rquietZ dir_createdrpidrdrdretemp_dirs&  r c cs|t}yt|WnDtk rZ}z&|s.tjd|d|tddWdd}~XYnXztVWdt|XdS)NzBtests may fail, unable to change the current working directory to z: r)r)rgetcwdchdirrrgrr)rrZ saved_dirrrdrdre change_cwds r#tempcwdc cs:t||d$}t||d }|VWdQRXWdQRXdS)N)rr)r)r r#)rvrZ temp_pathZcwd_dirrdrdrersumaskc cs&t|}z dVWdt|XdS)N)rr%)r%ZoldmaskrdrdrerIs  datacCsbtj|r|S|dk r&tj||}tgtj}x*|D]"}tj||}tj|r8|Sq8W|S)N)rrisabsr TEST_HOME_DIRroexists)rZsubdirrZdnfnrdrdrer%s    cCs(t|tjtjBtjB}t|dS)N)ropenO_WRONLYO_CREATO_TRUNCr)rfdrdrdrer7scCs,t|}dd|D}d|}d|S)NcSsg|] }d|qS)z%r: %rrd).0Zpairrdrdre ?szsortdict..z, z{%s})sortedrr)dictrZ reprpairsZ withcommasrdrdrerY<s  cCs*ttd}z|S|ttXdS)Nwb)r+rfilenorr)rrdrdre make_bad_fdCs  r6)linenooffsetc Csp|t}t|ddWdQRX|j}||j|dk rJ||j|||j|dk rl||j|dS)Nz exec) assertRaises SyntaxErrorcompileZ exceptionZassertIsNotNoner7 assertEqualr8)testcaseZ statementr7r8cmrrdrdrer%Os   c sTddl}ddl}dd|j|ddd}tjt |}fdd}tj |r|||}|dk rt|St |t dt rtd |td |j}tr|jd |j|d d }tr|jddkrtj|d}z@t|d,} |} x| r| | |} qWWdQRXWd|X||}|dk rD|Std|dS)Nrcheckr/cs>t|f}dkr|S|r2|d|S|dS)Nr)r+seekr)r*r)rr@rrdrecheck_valid_filecs z*open_urlresource..check_valid_fileZurlfetchz fetching %s ...)r)zAccept-Encodinggzip)rzContent-EncodingrE)Zfileobjr4zinvalid resource %r)Zurllib.requestZ urllib.parsepopparseZurlparserrrr TEST_DATA_DIRr)rr!rrrZrequestZ build_openerrEZ addheadersrr+ZheadersgetZGzipFilereadwriterr ) Zurlrrurllibrr*rDropeneroutsrd)rr@rrerGZs<         c@s0eZdZddZddZeddZddZd S) WarningsRecordercCs||_d|_dS)Nr) _warnings_last)selfZ warnings_listrdrdre__init__szWarningsRecorder.__init__cCsDt|j|jkr t|jd|S|tjjkr0dStd||fdS)NrBz%r has no attribute %r)rrRrSrrgWarningMessage_WARNING_DETAILSr)rTattrrdrdre __getattr__s  zWarningsRecorder.__getattr__cCs|j|jdS)N)rRrS)rTrdrdrergszWarningsRecorder.warningscCst|j|_dS)N)rrRrS)rTrdrdreresetszWarningsRecorder.resetN)rarbrcrUrYpropertyrgrZrdrdrdrerQs rQc cstd}|jd}|r"|tjdd }tjddt |VWdQRXt |}g}xv|D]n\}}d} xH|ddD]8}|j } t |t| t jrt| j|rd} ||qW| sf|sf|||jfqfW|rtd|d |rtd |d dS) NrZ__warningregistry__T)recordrgalwaysFzunhandled warning %srz)filter (%r, %s) did not catch any warning)ro _getframe f_globalsrJclearrgrhrz simplefilterrQr|messagerematchruI issubclassrremoverraAssertionError) filtersrframeregistrywZreraisemissingrxcatseenZwarningrdrdre_filterwarningss0   rpcOs.|d}|s$dtff}|dkr$d}t||S)NrrT)rJWarningrp)rirrrdrdrerPs   c csBtjdd }tjdtddVtWdQRX||gdS)NT)r\r])category)rgrhriResourceWarning gc_collectr=)r>ZwarnsrdrdrerQs c@s$eZdZddZddZddZdS)rcGsNtj|_x<|D]4}|tjkrtj|}|j|kr>tj|j=tj|=qWdS)N)rorzcopyoriginal_modulesra)rTZ module_namesZ module_namerrdrdrerUs      zCleanImport.__init__cCs|S)Nrd)rTrdrdre __enter__szCleanImport.__enter__cGstj|jdS)N)rorzrrv)rT ignore_excrdrdre__exit__szCleanImport.__exit__N)rarbrcrUrwryrdrdrdrers  c@sdeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ dS)rRcCstj|_i|_dS)N)rr_environ_changed)rTrdrdrerUszEnvironmentVarGuard.__init__cCs |j|S)N)rz)rTenvvarrdrdre __getitem__ szEnvironmentVarGuard.__getitem__cCs*||jkr|j||j|<||j|<dS)N)r{rzrJ)rTr|valuerdrdre __setitem__#s zEnvironmentVarGuard.__setitem__cCs2||jkr|j||j|<||jkr.|j|=dS)N)r{rzrJ)rTr|rdrdre __delitem__)s  zEnvironmentVarGuard.__delitem__cCs |jS)N)rzkeys)rTrdrdrer0szEnvironmentVarGuard.keyscCs t|jS)N)iterrz)rTrdrdre__iter__3szEnvironmentVarGuard.__iter__cCs t|jS)N)rrz)rTrdrdre__len__6szEnvironmentVarGuard.__len__cCs |||<dS)Nrd)rTr|r~rdrdreset9szEnvironmentVarGuard.setcCs ||=dS)Nrd)rTr|rdrdreunset<szEnvironmentVarGuard.unsetcCs|S)Nrd)rTrdrdrerw?szEnvironmentVarGuard.__enter__cGsJx<|jD].\}}|dkr0||jkr:|j|=q ||j|<q W|jt_dS)N)r{rrzrr)rTrxkvrdrdreryBs   zEnvironmentVarGuard.__exit__N)rarbrcrUr}rrrrrrrrwryrdrdrdrerRsc@s$eZdZddZddZddZdS) DirsOnSysPathcGs(tjdd|_tj|_tj|dS)N)rororiginal_valueoriginal_objectextend)rTpathsrdrdrerUXszDirsOnSysPath.__init__cCs|S)Nrd)rTrdrdrerw]szDirsOnSysPath.__enter__cGs|jt_|jtjdd<dS)N)rrorr)rTrxrdrdrery`szDirsOnSysPath.__exit__N)rarbrcrUrwryrdrdrdrerLs rc@s&eZdZddZddZdddZdS) r&cKs||_||_dS)N)rattrs)rTrrrdrdrerUjszTransientResource.__init__cCs|S)Nrd)rTrdrdrerwnszTransientResource.__enter__NcCsT|dk rPt|j|rPx:|jD]$\}}t||s4Pt|||kr Pq WtddS)Nz%an optional resource is not available)rfrrrrrr )rTZtype_r~ tracebackrXZ attr_valuerdrdreryqs zTransientResource.__exit__)NNN)rarbrcrUrwryrdrdrdrer&es)errnocCsNtjg}ttdr|tjttdr4|tjttdrJ|tj|S)N ENETUNREACH EADDRNOTAVAIL EHOSTUNREACH)r ECONNREFUSEDrrrrr)errorsrdrdreget_socket_conn_refused_errss      r>@)rerrnosc #slddddddg}ddd d d g}td ||gsRd d|Ddd|Dfdd}t}zy|dk rt|dVWntjk r}z$trtj j dd|Wdd}~XYnt k rV}zlx\|j }t |dkrt |dt r|d}qt |dkr6t |dt r6|d}qPqW||Wdd}~XYnXWdt|XdS)N)ro) ECONNRESETh)rq)re) ETIMEDOUTn)rc)Z EAI_AGAIN)ZEAI_FAIL)Z EAI_NONAME)Z EAI_NODATA)Z WSANO_DATAi*zResource %r is not availablecSsg|]\}}tt||qSrd)rr)r0rvnumrdrdrer1sz&transient_internet..cSsg|]\}}tt||qSrd)rr)r0rvrrdrdrer1scst|dd}t|tjst|tjr,|kst|tjjrRd|jkrPdksnt|tjj r~d|j ksd|j ksd|j ks|krt st j jdd|dS) NriiWConnectionRefusedError TimeoutErrorEOFErrorr )r isinstancerrZgaierrorrMerrorZ HTTPErrorcodeZURLErrorrrrostderrrLr)rn)captured_errnosdenied gai_errnosrdre filter_errors     z(transient_internet..filter_errorrrrr)r rZgetdefaulttimeoutZsetdefaulttimeoutnntplibZNNTPTemporaryErrorrrorrLrrrr) Z resource_namerrZdefault_errnosZdefault_gai_errnosrZ old_timeoutrard)rrrrer*sP     c csFddl}tt|}tt||ztt|VWdtt||XdS)Nr)iorrosetattrStringIO)Z stream_namerZ orig_stdoutrdrdrecaptured_outputs  rcCstdS)Nr)rrdrdrdrerscCstdS)Nr)rrdrdrdrerscCstdS)Nstdin)rrdrdrdrers cCs*ttrtdttdS)Ng?)gcZcollectr>rrrdrdrdrerts  rtccs.t}tz dVWd|r(tXdS)N)rZ isenableddisableenable)Zhave_gcrdrdre disable_gc"s  rcCs:tdp d}d}x|D]}|dr|}qW|dkS)NZ PY_CFLAGSrz-O)rz-O0z-Og) sysconfigget_config_varrrq)ZcflagsZ final_optrrdrdrepython_is_optimized-s  rZnPZ0nZgettotalrefcountZ2PZ0PrcCstt|tS)N)structcalcsize_header_align)fmtrdrdre calcobjsize>srcCstt|tS)N)rr_vheaderr)rrdrdre calcvobjsizeAsri@icCspddl}t|}t|tkr(|jt@sBt|tkrLt|jt@rL||j7}dt|||f}||||dS)Nrz&wrong size for %s: got %d, expected %d) _testcapiro getsizeofr __flags___TPFLAGS_HEAPTYPE_TPFLAGS_HAVE_GCZSIZEOF_PYGC_HEADr=)testosizerrrxrdrdre check_sizeofHs  rcsfdd}|S)Ncs$fdd}j|_j|_|S)Nc sy ddl}t|}||}Wn(tk r6YnBd}}Yn0Xx,D]$}y|||PWqPYqPXqPWz ||S|r|r|||XdS)Nr)localer setlocaler)rkwdsrrrZ orig_localeloc)catstrrlocalesrdreinnerYs$     z1run_with_locale..decorator..inner)ra__doc__)rr)rr)rrerXsz"run_with_locale..decoratorrd)rrrrd)rrrerSWscsfdd}|S)Ncs"fdd}j|_j|_|S)Nc sy tj}Wntk r(tdYnXdtjkr@tjd}nd}tjd<|z ||S|dkrrtjd=n |tjd<tXdS)Nztzset requiredZTZ)rtzsetrrsrtrr)rrrZorig_tz)rtzrdrer}s       z-run_with_tz..decorator..inner)rar)rr)r)rrer|szrun_with_tz..decoratorrd)rrrd)rrerZ{s iircCsdttdtd}td|tjtjB}|dkr>td|ftt| d|| d }|a |t krrt }|t dkrtd|f|adS)Ni)rmgtz(\d+(\.\d+)?) (K|M|G|T)b?$zInvalid memory limit %rrrz$Memory limit %r too low to be useful)_1M_1Grcrd IGNORECASEVERBOSErrfloatgrouplowerreal_max_memuseMAX_Py_ssize_t_2Gr)limitZsizesrZmemlimitrdrdrerWs $ c@s$eZdZddZddZddZdS)_MemoryWatchdogcCsdjtd|_d|_dS)Nz/proc/{pid}/statm)rF)rrrprocfilestarted)rTrdrdrerUsz_MemoryWatchdog.__init__c Csyt|jd}Wn>tk rN}z td|ttj dSd}~XYnXt d}t j tj |g|t jd|_|d|_dS)Nrz!/proc not available for stats: {}zmemory_watchdog.py)rrT)r+rrrgrrrrorflushr subprocessPopen executableZDEVNULL mem_watchdogrr)rTrrZwatchdog_scriptrdrdrestarts   z_MemoryWatchdog.startcCs|jr|j|jdS)N)rrZ terminatewait)rTrdrdrestops z_MemoryWatchdog.stopN)rarbrcrUrrrdrdrdrersrcsfdd}|S)Ncs fdd__S)Ncsj}j}tsd}n|}ts"sDt||krDtd||dtrztrzttdj||ddt}| nd}z ||S|r| XdS)Niz'not enough memory: %.1fG minimum neededi@z* ... expected peak memory use: {peak:.1f}G)Zpeak) rmemuserrsrtrrrrrr)rTrrmaxsizeZwatchdog)dry_runrrrdrers*   z.bigmemtest..decorator..wrapper)rr)r)rrr)rrrerszbigmemtest..decoratorrd)rrrrrd)rrrrer2s !csfdd}|S)NcsDttkr8tdkr$tdkr$tdq@tdtdn|SdS)Nllz-not enough memory: try a 32-bit build insteadz'not enough memory: %.1fG minimum neededi@)rrrsrt)rT)rrdrer sz!bigaddrspacetest..wrapperrd)rrrd)rrer3s c@seZdZddZdS)r+cCst}|||S)N)rsZ TestResult)rTrrrdrdrerunszBasicTestRunner.runN)rarbrcrrdrdrdrer+scCs|S)Nrd)rrdrdre_id srcCs:|dkrtsttjSt|r&tStd|SdS)Nrzresource {0!r} is not enabled)rrsrrr rr)rrdrdrerequires_resource#s  rcCstdd|S)NT)cpython) impl_detail)rrdrdrer4+scKsVtf|rtS|dkrLt|\}}|r,d}nd}t|}|d|}t|S)Nz*implementation detail not available on {0}z%implementation detail specific to {0}z or ) r@r _parse_guardsr2rrrrsr)rxguardsZ guardnamesdefaultrdrdrer1s   rcCs*|sddidfSt|d}|| fS)NrTFr)r|values)rZis_truerdrdrer>s rcKs t|\}}|t|S)N)rrJrpZpython_implementationr)rrrdrdrer@Hs cs,ttdsStfdd}|SdS)Ngettracec s.t}ztd||St|XdS)N)rorsettrace)rrZoriginal_trace)rrdrerXs   zno_tracing..wrapper)rrorr)rrrd)rre no_tracingSs rcCs tt|S)N)rr4)rrdrdre refcount_testcsrcCsRg}xB|jD]8}t|tjr2t||||q ||r ||q W||_dS)N)Z_testsrrs TestSuite _filter_suiter)suiteZpredZnewtestsrrdrdrerns    rcCsttjttdk d}||}tdk r4t||jsD|j sDt | st |j dkrp|jsp|j dd}n4t |jdkr|j s|jdd}nd}ts|d7}t|dS)N) verbosityZcapture_outputrrzmultiple errors occurredz!; run in verbose mode for details)rrorrjunit_xml_listrrZget_xml_elementZtestsRunZskippedr Z wasSuccessfulrrZfailuresr )rZrunnerrrrdrdre _run_suitezs"   r cCstdkr dSt|SdS)NT)_match_test_funcid)rrdrdre match_testsrcCsd|kotd| S)Nryz[?*\[\]])rcsearch)rrdrdre_is_full_match_testsrcs~|dkr d}|dkrd}d|tkr4t|\}|tkrHt|\}t|at|adk shdk rzfdd}|adS)Nrdcs*d}d}r|}r |}|o(| S)NTFrd)test_idZacceptrf) accept_func ignore_funcrdrematch_functionsz'set_match_tests..match_function)_accept_test_patterns_compile_match_function_ignore_test_patternsrrr )Zaccept_patternsZignore_patternsrrd)rrreset_match_testss   rcs^|sd}d}nHttt|r(t|j}n.dttj|}t |j fdd}|}||fS)Nrd|cs$|r dStt|dSdS)NTry)anyrr)r) regex_matchrdrematch_test_regexsz1_compile_match_function..match_test_regex) allrrr __contains__rfnmatch translatercr<rd)ZpatternsrZregexrrd)rrers   rcGstjtjf}t}xh|D]`}t|trT|tjkrJ|ttj|qzt dqt||rj||q|t |qWt |t t |dS)Nz)str arguments must be keys in sys.modules)rsrZTestCaserrurorzZaddTestZ findTestCasesrZ makeSuiterrr )classesZ valid_typesrclsrdrdrer,s        cCsdS)Nrdrdrdrdre_check_docstringssr#ZWITH_DOC_STRINGSztest requires docstringscCs`ddl}|dkrt}nd}|j|||d\}}|rBtd||ftrXtd|j|f||fS)Nr)r optionflagsz%d of %d doctests failedz,doctest (%s) ... %d tests with zero failures)doctestrZtestmodr rra)rr r$r%rrrdrdrer-scCs tjfS)N)rorzrurdrdrdre modules_setup.sr&cCs:ddtjD}tjtj|tj|dS)NcSs"g|]\}}|dr||fqS)z encodings.)rq)r0rrrdrdrer15sz#modules_cleanup..)rorzrr`r)Z oldmodules encodingsrdrdremodules_cleanup1s  r(cCsttjfS)N)_thread_count threading _danglingrurdrdrdrerLTscGsd}xt|D]}ttjf}||kr*P|sda|d}td|d|d|dt|ftj dx |D]}td|tj dqlWtj d}d}t dt qWdS) NdTrzUWarning -- threading_cleanup() failed to cleanup %s threads (count: %s, dangling: %s)r)rzDangling thread: g{Gz?)ranger)r*r+r,environment_alteredrrrorrrrrt)Zoriginal_valuesZ _MAX_COUNTcountrZdangling_threadsthreadrdrdrerMWs&    cstfdd}|S)Ncst}z|St|XdS)N)rLrM)rkey)rrdrerzszreap_threads..decorator)rr)rrrd)rrerNvsN@ccst}z dVWdt}||}xjt}||kr8Pt|kr|t|}d||d|dd|d|d }t|tdtq&WXdS)Nz!wait_threads() failed to cleanup z threads after z.1fz seconds (count: z , old count: )g{Gz?)r)r*r monotonicrhrrt)rZ old_countZ start_timeZdeadliner0Zdtrxrdrdrewait_threads_exits   $ r6cCs,|||r(d|dd}t|dS)Nzfailed to join the thread in z.1fz seconds)ris_aliverh)r1rrxrdrdre join_threads r8cCspttdrttdsdSxRytdtj\}}Wntk rFPYnX|dkrRPtd|tjddaqWdS)NwaitpidWNOHANGrBrz2Warning -- reap_children() reaped child process %s)rT) rrr9r:rrrorr/)rstatusrdrdrerJs ccs*t|}g}zZy$x|D]}|||qWWn*trVtdt|t|fYnXdVWdz|rt|t}}xltddD]^}|d7}x$|D]}| t |tdqWdd|D}|sPtrtdt||fqWWdd d|D}|r"t t jtd t|XXdS) Nz/Can't start %d threads, only %d threads startedr<g{Gz?cSsg|]}|r|qSrd)r7)r0rrdrdrer1sz!start_threads..z7Unable to join %d threads during a period of %d minutescSsg|]}|r|qSrd)r7)r0rrdrdrer1szUnable to join %d threads)r|rrrrrrr5r.rmax faulthandlerZdump_tracebackrorrh)ZthreadsZunlockrrZendtimeZ starttimerrdrdrerOs>     c csnt||ry||daWn&tk rp}z|aWdd}~XYnXWdt |XWdQRXtrdt}t||S|SdS)NAF_UNIXzNo UNIX SocketsZcan_bind_unix_socketFz%Requires a functional unix bind(): %s) rrrsr_bind_nix_socket_errorrrar rr)rrr rrxrdrdrer= s  c Cs^tj|dH}|j}|}||kr,|}ytj||Stk rNdSXWdQRXdS)N)r\F) rZNamedTemporaryFilervupperrrrsamefiler)Z directorybase base_pathZ case_pathrdrdrer s)rfcCs>tt|tt|}|r(|t|8}tdd|D}|S)Ncss&|]}|dr|dr|VqdS)___N)rqendswith)r0rrdrdre sz&detect_api_mismatch..)rr\)Zref_apiZ other_apirfZ missing_itemsrdrdrer; s  cCs|dkr|jf}nt|tr"|f}t|}x^t|D]R}|ds4||krLq4t||}t|dd|ks|t|ds4t|tj s4| |q4W| |j |dS)Nrgrb) rarrurr\rqrrtypes ModuleTypeaddZassertCountEqual__all__)Z test_caserZname_of_moduleZextraZ blacklistZexpectedrvrrdrdrer< s)     c@s$eZdZdZdZddZddZdS)rXNc Csrtjdrddl}|jj|_d}|j||_|j|j|Byddl }|j Wnt t fk rlYnLXi|_ x|j|j|jgD].}| ||j}|||j}||f|j |<qWntdk r y*ttj|_ttjd|jdfWnttfk rYnXtjdkrndddd g}tj|tjtjd }||d} WdQRX| d krntd d dd|S)Nrrrrrz/usr/bin/defaultsrKzcom.apple.CrashReporterZ DialogType)rrs developerz:this test triggers the Crash Reporter, that is intentionalrT)endr) rorprqrrr_k32 SetErrorMode old_valuemsvcrtCrtSetReportModerrn old_modesCRT_WARN CRT_ERROR CRT_ASSERTZCRTDBG_MODE_FILECrtSetReportFileZCRTDBG_FILE_STDERRrZ getrlimit RLIMIT_CORE setrlimitrrrrPIPEZ communicaterEr) rTrZSEM_NOGPFAULTERRORBOXrs report_typeold_modeold_filecmdprocrrdrdrerw; sN        zSuppressCrashReport.__enter__c Gs|jdkrdStjdrl|j|j|jrddl}xj|jD]$\}\}}| ||| ||qBWn6t dk ryt t j |jWnttfk rYnXdS)Nrr)rrrorprqrprqrursrrtryrr{rzrr)rTrxrsr}r~rrdrdrery| s   zSuppressCrashReport.__exit__)rarbrcrrrurwryrdrdrdrerX2 sAc srtdyjWn$ttfk r@tdYnXdfdd}||t|dS)NFTcs rtn tdS)N)rr@rd) attr_is_local attr_nameobject_to_patchrrrdrecleanup szpatch..cleanup)rrNrrZ addCleanupr)Z test_instancerrZ new_valuerrd)rrrrrrepatch s  rcCsFy ddl}Wntk r YnX|r4tdddl}||S)NrzUrun_in_subinterp() cannot be used if tracemalloc module is tracing memory allocations) tracemallocrn is_tracingrsrtrrun_in_subinterp)rrrrdrdrer s  rcsHGfddd|}d||||ttt|dS)NcseZdZfddZdS)z%check_free_after_iterating..Acs*dy tWntk r$YnXdS)NT)next StopIteration)rT)doneitrdre__del__ s  z-check_free_after_iterating..A.__del__N)rarbrcrrd)rrrdreA srF)r:rrrtZ assertTrue)rrr"rrrd)rrrecheck_free_after_iterating s   rcCs|ddlm}m}m}|}||xP|jD]F}|r@||kr@q.t||}|rPn |dkrZq.||ddkr.|dSq.WdS)Nr) ccompilerrspawn) Z distutilsrrrZ new_compilerZcustomize_compilerZ executablesrZfind_executable)Z cmd_namesrrrZcompilerrvrrdrdrer\ s     cCs@d}tr6||kr6tdkr.tddgdkatr6|}t|S)Ngh㈵>Zgetpropzro.kernel.qemu1)r?_is_android_emulatorrZ check_outputrErorB)intervalZminimum_intervalrdrdrerB s c cs>tj}t}ztdVWd|r8tj|ddXdS)NT)rZ all_threads)rorr5r? is_enabledrr)r/rrdrdredisable_faulthandler s  rc Cstjdr8ytd}t|dStk r6YnXd}ttdrjytd}Wnt k rhYnXd}tjdkryddl }|j Wnt t fk rYn0Xi}x(|j|j|jfD]}| |d||<qWzpd}xft|D]Z}yt|}Wn4t k r(}z|jtjkrWdd}~XYqXt||d7}qWWd|dk rzx*|j|j|jfD]}| |||q`WX|S) N)ZlinuxZfreebsdz /proc/self/fdrsysconf SC_OPEN_MAXrr)rorprqrrrrrrrrsrtrrnrvrwrxr.duprZEBADFr) namesZMAXFDrursr}r0r/Zfd2rrdrdrer] sP          c@s$eZdZddZddZddZdS) SaveSignalsc Csjddl}||_ttd|j|_x>dD]6}yt||}Wntk rNw&YnX|j|q&Wi|_dS)Nrr)SIGKILLSIGSTOP) signalr|r.NSIGsignalsrrrgrJ)rTrZsignamesignumrdrdrerUV s zSaveSignals.__init__cCs4x.|jD]$}|j|}|dkr"q||j|<qWdS)N)rr getsignalrJ)rTrhandlerrdrdresavec s   zSaveSignals.savecCs*x$|jD]\}}|j||q WdS)N)rJrr)rTrrrdrdrerestoreo szSaveSignals.restoreN)rarbrcrUrrrdrdrdrerM s   rcCsddl}|jS)Nr)rZ WITH_PYMALLOC)rrdrdre with_pymalloct src@s$eZdZddZddZddZdS)FakePathcCs ||_dS)N)r)rTrrdrdrerU| szFakePath.__init__cCsd|jdS)Nz )r)rTrdrdre__repr__ szFakePath.__repr__cCs6t|jts$t|jtr,t|jtr,|jn|jSdS)N)rr BaseExceptionrrf)rTrdrdre __fspath__ s    zFakePath.__fspath__N)rarbrcrUrrrdrdrdrery src@seZdZddZddZdS) _ALWAYS_EQcCsdS)NTrd)rTotherrdrdre__eq__ sz_ALWAYS_EQ.__eq__cCsdS)NFrd)rTrrdrdre__ne__ sz_ALWAYS_EQ.__ne__N)rarbrcrrrdrdrdrer src@seZdZddZddZdS)_LARGESTcCs t|tS)N)rr)rTrrdrdrer sz_LARGEST.__eq__cCsdS)NFrd)rTrrdrdre__lt__ sz_LARGEST.__lt__N)rarbrcrrrdrdrdrer src@seZdZddZddZdS) _SMALLESTcCs t|tS)N)rr)rTrrdrdrer sz_SMALLEST.__eq__cCsdS)NFrd)rTrrdrdre__gt__ sz_SMALLEST.__gt__N)rarbrcrrrdrdrdrer src cs.t}zt|dVWdt|XdS)N)roget_int_max_str_digitsset_int_max_str_digits)Z max_digitsZcurrentrdrdreadjust_int_max_str_digits s   r)T)F)rdrdF)F)N)NF)F)r$F)N)F)T)N)NN)Nr)r3)r)N)Nrdrd)rd(rarnZcollections.abc collections contextlibZdatetimerr?rrrrmimportlib.utilrZlogging.handlersrIrrrprcrrrrrrorrr)r+rrkrsZ urllib.errorrMrgZ testresultrZmultiprocessing.processZmultiprocessingzlibrEbz2Zlzmarrnrr r r rtr contextmanagerrkr rrr9r:rr5rrrrr rrrrrrrqrrrrrrrrrrrr r!rr"r#r$rCZHOSTv4r rrrErFrHr rDrrZ SOCK_MAX_SIZEZ skipUnlessr __getformat__r6r8r/r0r1r>rr?rArvrrrZ TEST_HTTP_URLZ FS_NONASCII characterfsdecodefsencode UnicodeErrorZTESTFN_UNICODEZ unicodedata normalizegetfilesystemencodingZTESTFN_ENCODINGZTESTFN_UNENCODABLEZgetwindowsversionencodeUnicodeEncodeErrorrdecodeUnicodeDecodeErrorZTESTFN_UNDECODABLEZTESTFN_NONASCIIr!rr[r r#rrIrrrrZTEST_SUPPORT_DIRr(rrIrrrYr6r%rGobjectrQrprPrQrabcMutableMappingrRrr&rrr'rr(r)rr*rrrrrtrrrrrrrrrrrSrZrrrZ_4GrrrWrr2r3r+rrr4rrr@rrrr r rrrrrrr,r#rZMISSING_C_DOCSTRINGSrZHAVE_DOCSTRINGSZrequires_docstringsr-r&r(r/rLrMrNr6r8rJrOrUrTrFrZrequires_type_collectingrGrHrJrKrKrVrVrr.r^r`r7rbr=rr;r<rXrrrr\rrBrr]rrrrr^total_orderingrr_rr`rrdrdrdres                    2   !  J   > &                &      2 ' 5M       $#  0        !          " #   "     :_"  ;'