3 e@s edkredddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z!ddl"Z"ddl#m$Z$yddl%Z%ddl&Z&Wnek r>dZ%dZ&YnXy ddl'Z(Wnek rfdZ(YnXy ddl)Z)Wnek rdZ)YnXy ddl*Z*Wnek rdZ*YnXy ddl+Z+Wnek rdZ+YnXy ddl,Z,Wnek rdZ,YnXy ddl-Z-Wnek r.dZ-YnXy ddl.Z.Wnek rVdZ.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`dag\Z/Gdbd d e0Z1Gdcd d e1Z2Gddd d e1Z3Gdeddej4Z5ej6d^dgdhZ7d_fdjdkdZ8dldmZ9dndoZ:dpd<Z;dqd=ZdZ?dZ@daAdaBdZCdiZDdaEdtdZFdudZGdvdZHdwdxZIejjJdyr*d`dzd{ZKd|d}ZLd~dZMddZNddZOnejPZLejQZMddZNddZOddZPddZQddZRddZSddZTddZUdd"ZVdadd#ZWddZXdd$ZYdd%ZZdd&Z[dbdd'Z\dZ]dZ^ej_ej`fddIZae]fddJZbddLZcddZdedZeddZfdeZgdhZhejiejjkdjJddZlejie)dZmejie*dZnejie+dZoejie,dZpejjJdZqejrdZsesdk otesdkZtejdkretrdndZundZuejvdkrdZwndZwdjxewejyZwdZzxLdiD]BZ{yej|ej}e{e{kre~Wne~k rYnXe{ZzPqWewdZejdkr6ddlZejdeZejZdZejvdkrejjdkrewdZyejeWnek rYnXedeefdZnBejdkrydjeWn&ek rewdjedƃZYnXdZxFdjD]Zd?d@ZdAdBZGdCdOdOejjZGdDdZdZeZdadEd ZdFd1ZdadGdHZdId:ZdJd!ZfdKdLd>ZdfffdMd?ZGdNd\d\ZdOdPZdQdRZ ffdSdTZ gfdUd`Z da dVdFZ ej6dWdXZdYdaZGdZd[d[ZGd\d]d]ZdS(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_verrequires_hashdigestcheck_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__requires_android_levelrequires_multiprocessing_queue 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_countc@s eZdZdS)r N)__name__ __module__ __qualname__rcrc-/usr/lib64/python3.6/test/support/__init__.pyr |sc@s eZdZdS)r N)r`rarbrcrcrcrdr sc@s eZdZdS)r N)r`rarbrcrcrcrdr sc@s eZdZdS)r N)r`rarbrcrcrcrdr sTc cs8|r.tjtjddtdVWdQRXndVdS)Nignorez.+ (module|package))warningscatch_warningsfilterwarningsDeprecationWarning)rercrcrd_ignore_deprecated_importss  rjF) required_oncCsft|Ty tj|Stk rV}z&tjjt|r8tj t |WYdd}~XnXWdQRXdS)N) rj importlibr ImportErrorsysplatform startswithtupleunittestSkipTeststr)name deprecatedrkmsgrcrcrdr s  cCs^|tjkrt|tj|=x>ttjD]0}||ks@|j|dr&tj|||<tj|=q&WdS)N.)rnmodules __import__listrp)ru orig_modulesmodnamercrcrd_save_and_remove_modules r~c Cs>d}ytj|||<Wntk r.d}YnXdtj|<|S)NTF)rnryKeyError)rur|Zsavedrcrcrd_save_and_block_modules  rcCs|r tjSddS)NcSs|S)Nrc)frcrcrdsz$anticipate_failure..)rrZexpectedFailure)Z conditionrcrcrdr:scCsF|dkr d}tjjtjjtjjt}|j|||d}|j||S)Nztest*)Z start_dirZ top_level_dirpattern)ospathdirname__file__ZdiscoverZaddTests)Zpkg_dirloaderZstandard_testsrZtop_dirZ package_testsrcrcrdr;s c Cst|i}g}t||zfyHx|D]}t||q&Wx |D]}t||s>|j|q>Wtj|}Wntk r~d}YnXWdx|jD]\} } | tj | <qWx|D] } tj | =qWX|SQRXdS)N) rjr~rappendrlr rmitemsrnry) ruZfreshZblockedrvr|Znames_to_removeZ fresh_nameZ blocked_nameZ fresh_moduleZ orig_namemoduleZname_to_removercrcrdrs$      c Cs>yt||}Wn&tk r4tjd||fYnX|SdS)Nzobject %r has no attribute %r)getattrAttributeErrorrrrs)objruZ attributercrcrdr6s cCs|adS)N)_original_stdout)stdoutrcrcrdr0scCs tptjS)N)rrnrrcrcrcrdr4sc Cs&y tj|=Wntk r YnXdS)N)rnryr)rurcrcrdr7s cGsny||Stk rh}zDtdkrHtd|jj|ftd|j|ftj|tj||Sd}~XnXdS)Nz%s: %sz re-run %s%r) OSErrorrprint __class__r`rchmodstatS_IRWXU)rfuncargserrrcrcrd _force_run=srwincCs|||r|}ntjj|\}}|p(d}d}x<|dkrjtj|}|rJ|n||ksVdStj||d9}q0Wtjd|tdddS)NrxgMbP?g?rz)tests may fail, delete still pending for ) stacklevel) rrsplitlistdirtimesleeprfwarnRuntimeWarning)rpathnamewaitallrrutimeoutLrcrcrd_waitforHs     rcCsttj|dS)N)rrr)filenamercrcrd_unlinkisrcCsttj|dS)N)rrrmdir)rrcrcrd_rmdirlsrcs,fddt|ddtdd|dS)Ncsxt|tj|D]}tjj||}ytj|j}Wn<tk rn}z td||ft j dd}WYdd}~XnXt j |rt |ddt|tj|qt|tj|qWdS)Nz-support.rmtree(): os.lstat(%r) failed with %s)filerT)r)rrrrjoinlstatst_moderrrn __stderr__rS_ISDIRrrr)rrufullnamemodeexc) _rmtree_innerrcrdrps   z_rmtree.._rmtree_innerT)rcSst|tj|S)N)rrr)prcrcrdrsz_rmtree..)r)rrc)rrd_rmtreeos rc Cs^y ddl}Wntk r Yn:X|jt|d}|jjj||t|}|rZ|d|S|S)Nrr)ctypesrmZcreate_unicode_bufferlenwindllkernel32ZGetLongPathNameW)rrbufferZlengthrcrcrd _longpaths    rc sFytj|dStk r"YnXfdd|tj|dS)Nc sx~t|tj|D]l}tjj||}ytj|j}Wntk rJd}YnXtj |rn|t|tj |qt|tj |qWdS)Nr) rrrrrrrrrrrr)rrurr)rrcrdrs  z_rmtree.._rmtree_inner)shutilrrrr)rrc)rrdrs  cCs|S)Nrc)rrcrcrdrsc Cs*y t|Wnttfk r$YnXdS)N)rFileNotFoundErrorNotADirectoryError)rrcrcrdrs c Cs&y t|Wntk r YnXdS)N)rr)rrcrcrdrs rc Cs&y t|Wntk r YnXdS)N)rr)rrcrcrdrs cCsBtjj|}tjjtjj|}tjj||d}tj|||S)Nc) rlutilcache_from_sourcerrrabspathrrename)sourceZpyc_fileZup_oneZ legacy_pycrcrcrdmake_legacy_pycs   rcCs\t|xNtjD]D}tjj||d}t|dx dD]}ttjj||dq8WqWdS)Nz.pyrrr) optimization)rrr) rrnrrrrrlrr)r}rroptrcrcrdrs    csttdrtjSd}tjjdrddlddld}d}Gfdddj}j j }|j }|sjj |}j j}|j||j|j|j|}|sj t|j|@sd}ntjdkrVdd lm} mm} m} dd lm} | j| d } | jdkrd }nFGfd dd| }|}| |}| j|dksR| j|dkrVd}|sy.ddlm}|}|j|j |j!Wn\t"k r}z>t#|}t$|dkr|ddd}dj%t&|j'|}WYdd}~XnX|t_(| t_tjS)Nresultrrrcs.eZdZdjjfdjjfdjjfgZdS)z*_is_gui_available..USEROBJECTFLAGSZfInheritZ fReserveddwFlagsN)r`rarbwintypesZBOOLDWORD_fields_rc)rrcrdUSEROBJECTFLAGSs  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)r`rarbrrc)rrcrdProcessSerialNumbersrz#cannot run without OS X gui process)Tk2z [...]zTk unavailable due to {}: {}))hasattr_is_gui_availablerrnrorprZctypes.wintypesrrZuser32ZGetProcessWindowStationZWinErrorrrZGetUserObjectInformationWZbyrefZsizeofboolrrrrZ ctypes.utilrZ LoadLibraryZCGMainDisplayIDZGetCurrentProcessZSetFrontProcessZtkinterrZwithdrawupdateZdestroy Exceptionrtrformattyper`reason)rZ UOI_FLAGSZ WSF_VISIBLErZdllhZuofZneededresrrrrZ app_servicesrZpsnZpsn_prrooteZ err_stringrc)rrrdrsh         rcCstdkp|tkS)N)r)resourcercrcrdr $scCs>t|s |dkrd|}t||dkr:t r:ttjdS)Nz"Use of the %r resource not enabledgui)r r rr)rrwrcrcrdr!,s csfdd}|S)Ncs$tjfdd}|_|S)Nc stjkrztjjddd}yttt|jd}Wntk rLYn.X|krzdjtt }t j d||f||S)N-rrrxz(%s version %s or higher required, not %s) rosystemreleaserrqmapint ValueErrorrrtrrrs)rkw version_txtversionmin_version_txt)r min_versionsysnamercrdwrapper=s z:_requires_unix_version..decorator..wrapper) functoolswrapsr)rr)rr)rrd decorator<sz)_requires_unix_version..decoratorrc)rrrrc)rrrd_requires_unix_version5srcGs td|S)NZFreeBSD)r)rrcrcrdr"PscGs td|S)NZLinux)r)rrcrcrdr#Yscsfdd}|S)Ncs"tjfdd}|_|S)Nc sxtjdkrntjd}yttt|jd}Wntk rBYn,X|krndjtt }t j d||f||S)Nrrrxz&Mac OS X %s or higher required, not %s) rnroZmac_verrqrrrrrrtrrrs)rrrrr)rrrcrdrjs   z4requires_mac_ver..decorator..wrapper)rrr)rr)r)rrdrisz#requires_mac_ver..decoratorrc)rrrc)rrdr$bs csfdd}|S)Ncstjfdd}|S)Nc sXy&rtdk rtjn tjWn&tk rLtjddYnX||S)Nz hash digest 'z' is not available.)_hashlibnewhashlibrrrrs)rkwargs) digestnameropensslrcrdrs  z7requires_hashdigest..decorator..wrapper)rr)rr)rr)rrdrs z&requires_hashdigest..decoratorrc)rrrrc)rrrdr%}s z 127.0.0.1z::1cCs"tj||}t|}|j~|S)N)socketrHclose)familyZsocktypeZtempsockportrcrcrdrGs 8 c Cs|jtjkr|jtjkrttdr>|jtjtjdkr>t dttdr~y |jtjtj dkrft dWnt k r|YnXttdr|j tjtj d|j|df|jd}|S)N SO_REUSEADDRrzHtests should never set the SO_REUSEADDR socket option on TCP/IP sockets! SO_REUSEPORTzHtests should never set the SO_REUSEPORT socket option on TCP/IP sockets!SO_EXCLUSIVEADDRUSEr)rrAF_INETr SOCK_STREAMrZ getsockoptZ SOL_SOCKETrr rrZ setsockoptrbindZ getsockname)sockhostrrcrcrdrHs     c Cs:y|j|Wn&tk r4|jtjdYnXdS)Nzcannot bind AF_UNIX sockets)r PermissionErrorrrrrs)r ZaddrrcrcrdrJs cCsZtjrVd}z.dec)rr)rrrc)rrdsystem_must_validate_certs rriZdoubleZIEEEztest requires IEEE 754 doublesz requires zlibz requires gzipz requires bz2z requires lzmajavaANDROID_API_LEVELwin32z/system/bin/shz/bin/shz$testz@testz {}_{}_tmpæİŁφКא،تก €u -àòɘŁğrZNFDntru-共Ł♡ͣztWARNING: The filename %r CAN be encoded by the filesystem encoding (%s). Unicode filename tests may not be effectives-surrogateescapewrccsd}|dkr&tj}d}tjj|}nBytj|d}Wn.tk rf|sNtjd|t ddYnX|rttj }z |VWd|r|tj krt |XdS)NFTz+tests may fail, unable to create temp dir: )r) tempfilemkdtemprrrealpathmkdirrrfrrgetpidr)rquietZ dir_createdpidrcrcrdtemp_dirs&   r1ccsftj}ytj|Wn.tk rD|s,tjd|tddYnXztjVWdtj|XdS)Nz)tests may fail, unable to change CWD to: r))r)rgetcwdchdirrrfrr)rr/Z saved_dirrcrcrd change_cwds  r4tempcwdccs:t||d$}t||d }|VWdQRXWdQRXdS)N)rr/)r/)r1r4)rur/Z temp_pathZcwd_dirrcrcrdr sumaskc cs&tj|}z dVWdtj|XdS)N)rr6)r6ZoldmaskrcrcrdrK4s  datacCsbtjj|r|S|dk r&tjj||}tgtj}x*|D]"}tjj||}tjj|r8|Sq8W|S)N)rrisabsr TEST_HOME_DIRrnexists)rZsubdirrZdnfnrcrcrdrEs    cCs(tj|tjtjBtjB}tj|dS)N)ropenO_WRONLYO_CREATO_TRUNCr)rfdrcrcrdrWscCs,t|j}dd|D}dj|}d|S)NcSsg|] }d|qS)z%r: %rrc).0Zpairrcrcrd _szsortdict..z, z{%s})sortedrr)dictrZ reprpairsZ withcommasrcrcrdr[\s  c Cs*ttd}z|jS|jttXdS)Nwb)r<rfilenorr)rrcrcrd make_bad_fdcs  rG)linenooffsetc Csp|jt}t|ddWdQRX|j}|j|j|dk rJ|j|j||j|j|dk rl|j|j|dS)Nz exec) assertRaises SyntaxErrorcompileZ exceptionZassertIsNotNonerH assertEqualrI)testcaseZ statementrHrIcmrrcrcrdr&os   c sVddl}ddl}jdd|jj|djdd}tjjt |}fdd}tjj |r|||}|dk rt|St |t dt rtd |td |jj}tr|jjd|j|d d}tr|jjdd krtj|d}zBt|d.} |j} x| r| j| |j} qWWdQRXWd|jX||}|dk rF|Std|dS)Nrcheckr/rcs>t|f}dkr|S|r2|jd|S|jdS)Nr)r<seekr)r;r)rrQrrcrdcheck_valid_files z*open_urlresource..check_valid_fileZurlfetchz fetching %s ...)rAccept-Encodinggzip)rzContent-Encoding)ZfileobjrEzinvalid resource %r)rUrV)Zurllib.requestZ urllib.parsepopparseZurlparserrrr TEST_DATA_DIRr:rr!rrrZrequestZ build_openerrVZ addheadersrr<ZheadersgetZGzipFilereadwriterr ) Zurlrrurllibrr;rTropeneroutsrc)rrQrrdrIzs<         c@s0eZdZddZddZeddZddZd S) WarningsRecordercCs||_d|_dS)Nr) _warnings_last)selfZ warnings_listrcrcrd__init__szWarningsRecorder.__init__cCsDt|j|jkr t|jd|S|tjjkr0dStd||fdS)Nrz%r has no attribute %rrX)rrdrerrfWarningMessage_WARNING_DETAILSr)rfattrrcrcrd __getattr__s  zWarningsRecorder.__getattr__cCs|j|jdS)N)rdre)rfrcrcrdrfszWarningsRecorder.warningscCst|j|_dS)N)rrdre)rfrcrcrdresetszWarningsRecorder.resetN)r`rarbrgrkpropertyrfrlrcrcrcrdrcs rcc cs tjd}|jjd}|r"|jtjdd }tjdjdt |VWdQRXt |}g}xz|D]r\}}d} xH|ddD]8}|j } t j |t| t jrt| j|rd} |j|qW| rf| rf|j||jfqfW|rtd|d |rtd |d dS) NrZ__warningregistry__T)recordrfalwaysFzunhandled warning %srz)filter (%r, %s) did not catch any warning)rn _getframe f_globalsr\clearrfrgry simplefilterrcr{messagerematchrtI issubclassrremoverr`AssertionError) filtersr/frameregistrywZreraiseZmissingrwcatseenZwarningrcrcrd_filterwarningss0    rcOs.|jd}|s$dtff}|dkr$d}t||S)Nr/rT)r\Warningr)r{rr/rcrcrdrRs   c csBtjdd }tjdtddVtWdQRX|j|gdS)NT)rnro)category)rfrgrhResourceWarning gc_collectrN)rOZwarnsrcrcrdrSs c@s$eZdZddZddZddZdS)rcGsNtjj|_x<|D]4}|tjkrtj|}|j|kr>tj|j=tj|=qWdS)N)rnrycopyoriginal_modulesr`)rfZ module_namesZ module_namerrcrcrdrg#s      zCleanImport.__init__cCs|S)Nrc)rfrcrcrd __enter__0szCleanImport.__enter__cGstjj|jdS)N)rnryrr)rf ignore_excrcrcrd__exit__3szCleanImport.__exit__N)r`rarbrgrrrcrcrcrdrs  c@sdeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ dS)rTcCstj|_i|_dS)N)renviron_environ_changed)rfrcrcrdrg<szEnvironmentVarGuard.__init__cCs |j|S)N)r)rfenvvarrcrcrd __getitem__@szEnvironmentVarGuard.__getitem__cCs*||jkr|jj||j|<||j|<dS)N)rrr\)rfrvaluercrcrd __setitem__Cs zEnvironmentVarGuard.__setitem__cCs2||jkr|jj||j|<||jkr.|j|=dS)N)rrr\)rfrrcrcrd __delitem__Is  zEnvironmentVarGuard.__delitem__cCs |jjS)N)rkeys)rfrcrcrdrPszEnvironmentVarGuard.keyscCs t|jS)N)iterr)rfrcrcrd__iter__SszEnvironmentVarGuard.__iter__cCs t|jS)N)rr)rfrcrcrd__len__VszEnvironmentVarGuard.__len__cCs |||<dS)Nrc)rfrrrcrcrdsetYszEnvironmentVarGuard.setcCs ||=dS)Nrc)rfrrcrcrdunset\szEnvironmentVarGuard.unsetcCs|S)Nrc)rfrcrcrdr_szEnvironmentVarGuard.__enter__cGsJx<|jjD].\}}|dkr0||jkr:|j|=q ||j|<q W|jt_dS)N)rrrrr)rfrkvrcrcrdrbs   zEnvironmentVarGuard.__exit__N)r`rarbrgrrrrrrrrrrrcrcrcrdrT7sc@s$eZdZddZddZddZdS) DirsOnSysPathcGs(tjdd|_tj|_tjj|dS)N)rnroriginal_valueoriginal_objectextend)rfpathsrcrcrdrgxszDirsOnSysPath.__init__cCs|S)Nrc)rfrcrcrdr}szDirsOnSysPath.__enter__cGs|jt_|jtjdd<dS)N)rrnrr)rfrrcrcrdrszDirsOnSysPath.__exit__N)r`rarbrgrrrcrcrcrdrls rc@s&eZdZddZddZdddZdS) r'cKs||_||_dS)N)rattrs)rfrrrcrcrdrgszTransientResource.__init__cCs|S)Nrc)rfrcrcrdrszTransientResource.__enter__NcCsT|dk rPt|j|rPx:|jjD]$\}}t||s4Pt|||kr Pq WtddS)Nz%an optional resource is not available)rxrrrrrr )rfZtype_r tracebackrjZ attr_valuercrcrdrs zTransientResource.__exit__)NNN)r`rarbrgrrrcrcrcrdr's)errnog>@)rerrnosc #spd d!d"d#d$d%g}d'd)d+d-d.g}td||gsRdd|Ddd|Dfdd}tj}zy|dk rtj|dVWntjk r}z&trtjj j dd|WYdd}~Xnt k rZ}zpx^|j }t |dkrt |dt r|d}n*t |dkr8t |dt r8|d}nPqW||WYdd}~XnXWdtj|XdS)/N ECONNREFUSEDo ECONNRESETh EHOSTUNREACHq ENETUNREACHe ETIMEDOUTn EADDRNOTAVAILc EAI_AGAINr)EAI_FAILr EAI_NONAMEr EAI_NODATA WSANO_DATA*zResource %r is not availablecSsg|]\}}tt||qSrc)rr)rArunumrcrcrdrBsz&transient_internet..cSsg|]\}}tt||qSrc)rr)rArurrcrcrdrBscst|dd}t|tjst|tjr,|kst|tjjrTd|jkoNdknst|tjj rd|j ksd|j ksd|j ks|krt st j jjdd|dS) NriiWConnectionRefusedError TimeoutErrorEOFErrorr )r isinstancerrZgaierrorr_errorZ HTTPErrorcodeZURLErrorrrrnstderrr^r)rn)captured_errnosdenied gai_errnosrcrd filter_errors     z(transient_internet..filter_errorrrr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)r rZgetdefaulttimeoutZsetdefaulttimeoutnntplibZNNTPTemporaryErrorrrnrr^rrrr) Z resource_namerrZdefault_errnosZdefault_gai_errnosrZ old_timeoutrarc)rrrrdr+sP     c csFddl}tt|}tt||jztt|VWdtt||XdS)Nr)iorrnsetattrStringIO)Z stream_namerZ orig_stdoutrcrcrdcaptured_outputs  rcCstdS)Nr)rrcrcrcrdrscCstdS)Nr)rrcrcrcrdr scCstdS)Nstdin)rrcrcrcrdrs cCs*tjtrtjdtjtjdS)Ng?)gcZcollectr@rrrcrcrcrdrs  rc cs.tj}tjz dVWd|r(tjXdS)N)r isenableddisableenable)Zhave_gcrcrcrd disable_gc/s  rcCs:tjdp d}d}x|jD]}|jdr|}qW|dkS)N PY_CFLAGSrz-O-O0-Og)rrr) sysconfigget_config_varrrp)ZcflagsZ final_optrrcrcrdpython_is_optimized:s  rZnPZ0ngettotalrefcountZ2PZ0PrcCstjt|tS)N)structcalcsize_header_align)fmtrcrcrd calcobjsizeKsrcCstjt|tS)N)rr_vheaderr)rrcrcrd calcvobjsizeNsr cCspddl}tj|}t|tkr(|jt@sBt|tkrLt|jt@rL||j7}dt|||f}|j|||dS)Nrz&wrong size for %s: got %d, expected %d) _testcapirn getsizeofr __flags___TPFLAGS_HEAPTYPE_TPFLAGS_HAVE_GCZSIZEOF_PYGC_HEADrN)testosizerrrwrcrcrd check_sizeofUs  rcsfdd}|S)Ncs$fdd}j|_j|_|S)Ncsy ddl}t|}|j|}Wn(tk r6YnBd}}Yn0Xx,D]$}y|j||PWqPYqPXqPWz ||S|r|r|j||XdS)Nr)localer setlocaler)rkwdsrrZ orig_localeloc)catstrrlocalesrcrdinnerfs$     z1run_with_locale..decorator..inner)r`__doc__)rr)rr)rrdresz"run_with_locale..decoratorrc)rrrrc)rrrdrUdscsfdd}|S)Ncs"fdd}j|_j|_|S)Ncsy tj}Wntk r(tjdYnXdtjkr@tjd}nd}tjd<|z ||S|dkrrtjd=n |tjd<tjXdS)Nztzset requiredZTZ)rtzsetrrrrsrr)rrrZorig_tz)rtzrcrdrs       z-run_with_tz..decorator..inner)r`r)rr)r)rrdrszrun_with_tz..decoratorrc)rrrc)rrdr\s cCsdttdtd}tjd|tjtjB}|dkr>td|ftt|j d||j dj }|a |t krrt }|t dkrtd|f|adS)Ni)rmgtz(\d+(\.\d+)?) (K|M|G|T)b?$zInvalid memory limit %rrr)z$Memory limit %r too low to be useful)_1M_1Grurv IGNORECASEVERBOSErrfloatgrouplowerreal_max_memuseMAX_Py_ssize_t_2Gr)limitZsizesrZmemlimitrcrcrdrYs $ c@s$eZdZddZddZddZdS)_MemoryWatchdogcCsdjtjd|_d|_dS)Nz/proc/{pid}/statm)r0F)rrr.procfilestarted)rfrcrcrdrgsz_MemoryWatchdog.__init__cCsyt|jd}Wn<tk rL}z tjdj|ttjj dSd}~XnXt d}t j tj |g|t jd|_|jd|_dS)Nrz!/proc not available for stats: {}zmemory_watchdog.py)rrT)r<rrrfrrrrnrflushr subprocessPopen executableZDEVNULL mem_watchdogrr )rfrrZwatchdog_scriptrcrcrdstarts   z_MemoryWatchdog.startcCs|jr|jj|jjdS)N)r rZ terminatewait)rfrcrcrdstops z_MemoryWatchdog.stopN)r`rarbrgrrrcrcrcrdrsrcsfdd}|S)Ncs fdd__S)Nc sj}j}tsd}n|}ts$ rFt||krFtjd||dtr|tr|ttdj||ddt}|j nd}z ||S|r|j XdS) Niz'not enough memory: %.1fG minimum neededir)z* ... expected peak memory use: {peak:.1f}G)Zpeaki@i@) rmemuserrrrsrrrrrr)rfrrmaxsizeZwatchdog)dry_runrrrcrdrs*    z.bigmemtest..decorator..wrapper)rr)r)rrr)rrrdrszbigmemtest..decoratorrc)rrrrrc)rrrrdr3s !csfdd}|S)NcsDttkr8td kr$td kr$tjdq@tjdtd n|SdS) Nr?rz-not enough memory: try a 32-bit build insteadz'not enough memory: %.1fG minimum neededir)llli@)rrrrrs)rf)rrcrdrsz!bigaddrspacetest..wrapperrc)rrrc)rrdr4s c@seZdZddZdS)r,cCstj}|||S)N)rrZ TestResult)rfrrrcrcrdrun(szBasicTestRunner.runN)r`rarbrrcrcrcrdr,'scCs|S)Nrc)rrcrcrd_id-srcCs<|dkrt rtjtjSt|r(tStjdj|SdS)Nrzresource {0!r} is not enabled)rrrskiprr rr)rrcrcrdrequires_resource0s  rcCs&trt|krtjd|tfStSdS)Nz%s at Android API level %d)rA_ANDROID_API_LEVELrrrr)levelrrcrcrdr>8s  cCstdd|S)NT)cpython) impl_detail)rrcrcrdr5?scKsVtf|rtS|dkrLt|\}}|r,d}nd}t|j}|jdj|}tj|S)Nz*implementation detail not available on {0}z%implementation detail specific to {0}z or ) rBr _parse_guardsrCrrrrrr)rwguardsZ guardnamesdefaultrcrcrdrEs   rc CsTtdkr:ddl}y|jdaWntk r8daYnXd}trF|Stj||S)NrTFz6requires a functioning shared semaphore implementation)_have_mp_queuemultiprocessingZQueuermrrr)rr$rwrcrcrdr?Ss cCs*|sddidfSt|jd}|| fS)NrTFr)r{values)r!Zis_truercrcrdr bs r cKs t|\}}|jtjj|S)N)r r\roZpython_implementationr)r!r"rcrcrdrBls cs,ttdsStjfdd}|SdS)Ngettracec s.tj}ztjd||Stj|XdS)N)rnr&settrace)rrZoriginal_trace)rrcrdr|s   zno_tracing..wrapper)rrnrr)rrrc)rrd no_tracingws r(cCs tt|S)N)r(r5)rrcrcrd refcount_testsr)cCsRg}xB|jD]8}t|tjr2t|||j|q ||r |j|q W||_dS)N)Z_testsrrr TestSuite _filter_suiter)suiteZpredZnewtestsrrcrcrdr+s    r+cCsttjttdk d}|j|}tdk r4tj|j|js>t |j st |j dkrl|j rl|j dd}n6t |j dkr|j r|j dd}nd}ts|d7}t|dS)N) verbosityZcapture_outputrrzmultiple errors occurredz!; run in verbose mode for details)rrnrrjunit_xml_listrrZget_xml_elementZtestsRunr Z wasSuccessfulrerrorsZfailuresr )r,Zrunnerrrrcrcrd _run_suites"  r0cCstdkr dSt|jSdS)NT)_match_test_funcid)rrcrcrd match_testsr3cCsd|kotjd| S)Nrxz[?*\[\]])rusearch)rrcrcrd_is_full_match_testsr5csr|tkr dS|sd}f}nHttt|r4t|j}n.djttj|}t j |j fdd}|}t |a|a dS)N|cs$|r dStt|jdSdS)NTrx)anyrr)Ztest_id) regex_matchrcrdmatch_test_regexsz)set_match_tests..match_test_regex)_match_test_patternsallrr5r __contains__rfnmatch translaterurMrvrqr1)ZpatternsrZregexr9rc)r8rdset_match_testss   r?cGstjtjf}tj}xh|D]`}t|trT|tjkrJ|jtjtj|qzt dqt||rj|j|q|jtj |qWt |t t |dS)Nz)str arguments must be keys in sys.modules)rrr*ZTestCaserrtrnryZaddTestZ findTestCasesrZ makeSuiter+r3r0)classesZ valid_typesr,clsrcrcrdr-s        cCsdS)Nrcrcrcrcrd_check_docstrings srBWITH_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 rr`)rr-rDrErrrcrcrdr.scCs tjjfS)N)rnryrrcrcrcrd modules_setup8srFcCs:ddtjjD}tjjtjj|tjj|dS)NcSs"g|]\}}|jdr||fqS)z encodings.)rp)rArrrcrcrdrB?sz#modules_cleanup..)rnryrrrr)Z oldmodulesZ encodingsrcrcrdmodules_cleanup;s  rGcCs"trtjtjjfSdffSdS)Nr)_thread_count threading _danglingrrcrcrcrdrN^scGsJtsdSd}x8t|D],}tjtjf}||kr2PtjdtqWdS)Ndg{Gz?)rHrangerIrJrKrrr)Zoriginal_valuesZ _MAX_COUNTcountr%rcrcrdrOds cs"tsStjfdd}|S)Nc st}z|St|XdS)N)rNrO)rkey)rrcrdrxszreap_threads..decorator)rHrr)rrrc)rrdrPpsN@ccstj}z dVWdtj}||}xjtj}||kr8Ptj|kr|tj|}d||d|dd|d|d }t|tjdtq&WXdS)Nz!wait_threads() failed to cleanup z threads after z.1fz seconds (count: z , old count: )g{Gz?)rHrIrZ monotonicrzrr)rZ old_countZ start_timeZdeadlinerNZdtrwrcrcrdwait_threads_exits   $ rRc CsZttdrVd}xFy2tj|tj\}}|dkr.Ptd|tjdWqPYqXqWdS)Nwaitpidrrz2Warning -- reap_children() reaped child process %s)rrX)rrrSWNOHANGrrnr)Z any_processr0ZstatusrcrcrdrLs ccs*t|}g}zZy$x|D]}|j|j|qWWn*trVtdt|t|fYnXdVWdz|rt|tj}}xltddD]^}|d7}x$|D]}|jt |tjdqWdd|D}|sPtrtdt||fqWWdd d|D}|r"t j t j td t|XXdS) Nz/Can't start %d threads, only %d threads startedrr<g{Gz?cSsg|]}|jr|qSrc)isAlive)rArrcrcrdrBsz!start_threads..z7Unable to join %d threads during a period of %d minutescSsg|]}|jr|qSrc)rV)rArrcrcrdrBszUnable to join %d threads)r{rrrrrrrMrmax faulthandlerZdump_tracebackrnrrz)ZthreadsZunlockr rZendtimeZ starttimerrcrcrdrQs>     c csnt||rtt|tt|}|r(|t|8}tdd|D}|S)Ncss(|] }|jd s|jdr|VqdS)___N)rpendswith)rArrcrcrd sz&detect_api_mismatch..)rrv)Zref_apiZ other_apireZ missing_itemsrcrcrdr< s  cCs|dkr|jf}nt|tr"|f}t|}xbt|D]V}|jds4||krLq4t||}t|dd|kst|d r4t|tj  r4|j |q4W|j |j |dS)Nrra) r`rrtrrvrprrtypes ModuleTypeaddZassertCountEqual__all__)Z test_caserZname_of_moduleZextraZ blacklistZexpectedrurrcrcrdr= s)    c@s$eZdZdZdZddZddZdS)rZNc Csrtjjdrddl}|jj|_d}|jj||_|jj|j|Byddl }|j Wnt t fk rlYnLXi|_ x|j|j|jgD].}|j ||j}|j||j}||f|j |<qWntdk r y*tjtj|_tjtjd|jdfWnttfk rYnXtjdkrndddd g}tj|tjtjd }||jd} WdQRX| jd krntd d dd|S)Nrrrrrz/usr/bin/defaultsr]zcom.apple.CrashReporterZ DialogType)rrs developerz:this test triggers the Crash Reporter, that is intentionalrT)endr ) rnrorprrr_k32 SetErrorMode old_valuemsvcrtCrtSetReportModerrm old_modesCRT_WARN CRT_ERROR CRT_ASSERTZCRTDBG_MODE_FILECrtSetReportFileZCRTDBG_FILE_STDERRrZ getrlimit RLIMIT_CORE setrlimitrrr r PIPEZ communicater_r) rfrZSEM_NOGPFAULTERRORBOXr report_typeold_modeold_filecmdprocrrcrcrdr sN        zSuppressCrashReport.__enter__c Gs|jdkrdStjjdrl|jj|j|jrddl}xj|jjD]$\}\}}|j |||j ||qBWn6t dk ryt j t j |jWnttfk rYnXdS)Nrr)rrnrorprrrrrrrrrrrr)rfrrrrrrcrcrdrR s   zSuppressCrashReport.__exit__)r`rarbrrrrrcrcrcrdrZ sAc srtdyjWn$ttfk r@tdYnXdfdd}|j|t|dS)NFTcs rtn tdS)N)rrYrc) attr_is_local attr_nameobject_to_patchrrcrdcleanup} szpatch..cleanup)rrhrrZ addCleanupr)Z test_instancerrZ new_valuerrc)rrrrrdpatchg s  rc CsFy ddl}Wntk r YnX|jr4tjdddl}|j|S)NrzUrun_in_subinterp() cannot be used if tracemalloc module is tracing memory allocations) tracemallocrmZ is_tracingrrrsrrun_in_subinterp)rrrrcrcrdr s  rcsHGfddd|}d||||jttt|jdS)NcseZdZfddZdS)z%check_free_after_iterating..Ac s*dy tWntk r$YnXdS)NT)next StopIteration)rf)doneitrcrd__del__ s  z-check_free_after_iterating..A.__del__N)r`rarbrrc)rrrcrdA srF)rKrrrZ assertTrue)rrrArrrc)rrrdcheck_free_after_iterating s   rcCs|ddlm}m}m}|j}|j|xP|jD]F}|r@||kr@q.t||}|rPn |dkrZq.|j|ddkr.|dSq.WdS)Nr) ccompilerrspawn) Z distutilsrrrZ new_compilerZcustomize_compilerZ executablesrZfind_executable)Z cmd_namesrrrZcompilerrurrcrcrdr^ s     cCs@d}tr6||kr6tdkr.tjddgjdkatr6|}tj|S)Ngh㈵>Zgetpropzro.kernel.qemu1)rA_is_android_emulatorr Z check_outputr_rnrD)ZintervalZminimum_intervalrcrcrdrD s c cs>tjj}tj}ztjdVWd|r8tj|ddXdS)NT)rZ all_threads)rnrrFrX is_enabledrr)r@rrcrcrddisable_faulthandler s  rc /Cstjjd r8ytjd}t|dStk r6YnXd}ttdrjytjd}Wnt k rhYnXd}tjdkryd dl }|j Wnt t fk rYn0Xi}x(|j|j|jfD]}|j |d ||<qWzpd }xft|D]Z}ytj|}Wn4t k r(}z|jtjkrWYdd}~XqXtj||d7}qWWd|dk rzx*|j|j|jfD]}|j |||q`WX|S) Nlinuxfreebsdz /proc/self/fdrsysconf SC_OPEN_MAXrr)rr)rnrorprrrrrrrrrrrmrrrrMduprZEBADFr) namesZMAXFDrrrrNr@Zfd2rrcrcrdr_ sP          c@s$eZdZddZddZddZdS) SaveSignalsc Csjddl}||_ttd|j|_x>dD]6}yt||}Wntk rNw&YnX|jj|q&Wi|_dS)NrrSIGKILLSIGSTOP)rr) signalr{rMNSIGsignalsrrryrd)rfrZsignamesignumrcrcrdrg, s zSaveSignals.__init__cCs4x.|jD]$}|jj|}|dkr"q||j|<qWdS)N)rr getsignalrd)rfrhandlerrcrcrdsave9 s   zSaveSignals.savecCs*x$|jjD]\}}|jj||q WdS)N)rdrr)rfrrrcrcrdrestoreE szSaveSignals.restoreN)r`rarbrgrrrcrcrcrdr# s   rc@s$eZdZddZddZddZdS)FakePathcCs ||_dS)N)r)rfrrcrcrdrgM szFakePath.__init__cCsd|jdS)Nz )r)rfrcrcrd__repr__P szFakePath.__repr__cCs6t|jts$t|jtr,t|jtr,|jn|jSdS)N)rr BaseExceptionrrx)rfrcrcrd __fspath__S s    zFakePath.__fspath__N)r`rarbrgrrrcrcrcrdrJ sr)T)F)F)N)Nii@i@i@ii) rrrrrrrrrr r!)r%r#r&r'r()NF)F)r5F)N)Fi@ii)T)N)Nr)rP)N(r`rmcollections.abc collections contextlibZdatetimerrXr=rrrrlimportlib.utilrZlogging.handlersrcrrrorurrrrr rnrr*rrrrZ urllib.errorr_rfZ testresultrrHrJZmultiprocessing.processr$zlibrVbz2Zlzmarrrrr r r rsr contextmanagerrjr r~rr:r;rr6rrrrr.rrrrrrrprrrrrrrrrrrr r!rr"r#r$r%rErrr rGrHrJrrFrrZ SOCK_MAX_SIZEZ skipUnlessr __getformat__r7r9r0r1r2r@rrrArCrurrr.Z FS_NONASCII characterfsdecodefsencode UnicodeErrorZTESTFN_UNICODEZ unicodedata normalizegetfilesystemencodingZTESTFN_ENCODINGZTESTFN_UNENCODABLEZgetwindowsversionencodeUnicodeEncodeErrorrdecodeUnicodeDecodeErrorZTESTFN_UNDECODABLEZTESTFN_NONASCIIr2rr]r1r4rrrKrrrrZTEST_SUPPORT_DIRr9rr[rrr[rGr&rIobjectrcrrRrSrabcMutableMappingrTrr'rrr(rr)r*r+rrrrrrrrrrrrrrrrUr\rrrZ_4GrrrYrr3r4r,rrr>r5rr#r?r rBr(r)r+r0r1r:r3r5r?r-rBZMISSING_C_DOCSTRINGSrZHAVE_DOCSTRINGSZrequires_docstringsr.rFrGZenvironment_alteredrNrOrPrRrLrQrWrVr`ZskipIfZrequires_type_collectingrarbrdrerMrXrprr/rxrzr8rr<r=rZrrrr^rrDrr_rrrcrcrcrds                      2   !  J    > %                 %      2 ' 5M          $ # 0           (        " #   "    :_"  ;'