3 ]ia@s edkredddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZ ddl!Z!ddl"m#Z#yddl$Z$ddl%Z%Wnek r6dZ$dZ%YnXy ddl&Z'Wnek r^dZ'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,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`g[Z-Gdad d e.Z/Gdbd d e/Z0Gdcd d e/Z1Gddddej2Z3ej4d\dfdgZ5d]fdidjdZ6dkdlZ7dmdnZ8dod;Z9dpd<Z:ffdhfdqdZ;drd7Zda?da@dZAdhZBdaCdsdZDdtdZEdudZFdvdwZGejjHdxrd^dydzZId{d|ZJd}d~ZKddZLddZMnejNZJejOZKddZLddZMddZNddZOddZPddZQddZRddZSdd"ZTd_dd#ZUddZVdd$ZWdd%ZXdd&ZYdZZdZ[ej\ej]fddHZ^eZfddIZ_ddKZ`ddZaeaZbddZcdbZddeZeejfegjhdjHddZiejfe(dZjejfe)dZkejfe*dZlejfe+dZmejjHdZnejodZpepdk o6epdkZqejdkrTeqrNdndZrndZrejsdkrjdZtndZtdjuetejvZtdZwxLdfD]BZxyejyejzexexkre{Wne{k rYnXexZwPqWetdZ|ejdkrddl}Z}e}j~de|Z|ejZdZejsdkrdejjdkretdZyejeWnek rLYnXedeefdZnBejdkrydjeWn&ek retdjedăZYnXdZxFdgD]Zd?d@ZGdAdNdNejjZGdBdYdYeZdadCd ZdDd0ZdadEdFZdGd9ZdHd!ZfdIdJd=ZdfffdKd>ZGdLd[d[ZdMdNZdOdPZffdQdRZgfdSd_Zda dTdEZ ej4dUdVZ dWd`Z GdXdYdYZ GdZd[d[ZdS(uz 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__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__rbrb-/opt/alt/python36/lib64/python3.6/__init__.pyr usc@s eZdZdS)r N)r_r`rarbrbrbrcr xsc@s eZdZdS)r N)r_r`rarbrbrbrcr {sc@s eZdZdS)r N)r_r`rarbrbrbrcr ~sTc cs8|r.tjtjddtdVWdQRXndVdS)Nignorez.+ (module|package))warningscatch_warningsfilterwarningsDeprecationWarning)rdrbrbrc_ignore_deprecated_importss  riF) required_oncCsft|Ty tj|Stk rV}z&tjjt|r8tj t |WYdd}~XnXWdQRXdS)N) ri importlibr ImportErrorsysplatform startswithtupleunittestSkipTeststr)name deprecatedrjmsgrbrbrcr s  cCs^|tjkrt|tj|=x>ttjD]0}||ks@|j|dr&tj|||<tj|=q&WdS)N.)rmmodules __import__listro)rt orig_modulesmodnamerbrbrc_save_and_remove_modules r}c Cs>d}ytj|||<Wntk r.d}YnXdtj|<|S)NTF)rmrxKeyError)rtr{Zsavedrbrbrc_save_and_block_modules  rcCs|r tjSddS)NcSs|S)Nrb)frbrbrcsz$anticipate_failure..)rqZexpectedFailure)Z conditionrbrbrcr9scCsF|dkr d}tjjtjjtjjt}|j|||d}|j||S)Nztest*)Z start_dirZ top_level_dirpattern)ospathdirname__file__ZdiscoverZaddTests)Zpkg_dirloaderZstandard_testsrZtop_dirZ package_testsrbrbrcr: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) rir}rappendrkr rlitemsrmrx) rtZfreshZblockedrur{Znames_to_removeZ fresh_nameZ blocked_nameZ fresh_moduleZ orig_namemoduleZname_to_removerbrbrcrs$      c Cs>yt||}Wn&tk r4tjd||fYnX|SdS)Nzobject %r has no attribute %r)getattrAttributeErrorrqrr)objrtZ attributerbrbrcr5s cCs|adS)N)_original_stdout)stdoutrbrbrcr)scCs tptjS)N)rrmrrbrbrbrcr-sc Cs&y tj|=Wntk r YnXdS)N)rmrxr~)rtrbrbrcr0s cGsny||Stk rh}zDtdkrHtd|jj|ftd|j|ftj|tj||Sd}~XnXdS)Nz%s: %sz re-run %s%r) OSErrorrprint __class__r_rchmodstatS_IRWXU)rfuncargserrrbrbrc _force_run6srwincCs|||r|}ntjj|\}}|p(d}d}x<|dkrjtj|}|rJ|n||ksVdStj||d9}q0Wtjd|tdddS)NrwgMbP?g?rz)tests may fail, delete still pending for ) stacklevel) rrsplitlistdirtimesleeprewarnRuntimeWarning)rpathnamewaitallrrttimeoutLrbrbrc_waitforAs     rcCsttj|dS)N)rrr)filenamerbrbrc_unlinkbsrcCsttj|dS)N)rrrmdir)rrbrbrc_rmdiresrcs,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_moderrrm __stderr__rS_ISDIRrrr)rrtfullnamemodeexc) _rmtree_innerrbrcris   z_rmtree.._rmtree_innerT)rcSst|tj|S)N)rrr)prbrbrcrxsz_rmtree..)r)rrb)rrc_rmtreehs rc Cs^y ddl}Wntk r Yn:X|jt|d}|jjj||t|}|rZ|d|S|S)Nrr)ctypesrlZcreate_unicode_bufferlenwindllkernel32ZGetLongPathNameW)rrbufferZlengthrbrbrc _longpathzs    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)rrtrr)rrbrcrs  z_rmtree.._rmtree_inner)shutilrrrr)rrb)rrcrs  cCs|S)Nrb)rrbrbrcrsc Cs*y t|Wnttfk r$YnXdS)N)rFileNotFoundErrorNotADirectoryError)rrbrbrcrs c Cs&y t|Wntk r YnXdS)N)rr)rrbrbrcrs rc Cs&y t|Wntk r YnXdS)N)rr)rrbrbrcrs cCsBtjj|}tjjtjj|}tjj||d}tj|||S)Nc) rkutilcache_from_sourcerrrabspathrrename)sourceZpyc_fileZup_oneZ legacy_pycrbrbrcmake_legacy_pycs   rcCs\t|xNtjD]D}tjj||d}t|dx dD]}ttjj||dq8WqWdS)Nz.pyrrr) optimization)rrr) rrmrrrrrkrr)r|rroptrbrbrcrs    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_r`rawintypesZBOOLDWORD_fields_rb)rrbrcUSEROBJECTFLAGSs  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_r`rarrb)rrbrcProcessSerialNumbersrz#cannot run without OS X gui process)Tk2z [...]zTk unavailable due to {}: {}))hasattr_is_gui_availablerrmrnrorZctypes.wintypesrrZuser32ZGetProcessWindowStationZWinErrorrrZGetUserObjectInformationWZbyrefZsizeofboolrrrrZ ctypes.utilrZ LoadLibraryZCGMainDisplayIDZGetCurrentProcessZSetFrontProcessZtkinterrZwithdrawupdateZdestroy Exceptionrsrformattyper_reason)rZ UOI_FLAGSZ WSF_VISIBLErZdllhZuofZneededresrrrrZ app_servicesrZpsnZpsn_prrooteZ err_stringrb)rrrcrsh         rcCstdkp|tkS)N)r)resourcerbrbrcr scCs>t|s |dkrd|}t||dkr:t r:ttjdS)Nz"Use of the %r resource not enabledgui)r r rr)rrvrbrbrcr!%s csfdd}|S)Ncs$tjfdd}|_|S)Nc stjkrztjjddd}yttt|jd}Wntk rLYn.X|krzdjtt }t j d||f||S)N-rrrwz(%s version %s or higher required, not %s) rnsystemreleaserrpmapint ValueErrorrrsrqrr)rkw version_txtversionmin_version_txt)r min_versionsysnamerbrcwrapper6s z:_requires_unix_version..decorator..wrapper) functoolswrapsr)rr)rr)rrc decorator5sz)_requires_unix_version..decoratorrb)rrrrb)rrrc_requires_unix_version.srcGs td|S)NZFreeBSD)r)rrbrbrcr"IscGs td|S)NZLinux)r)rrbrbrcr#Rscsfdd}|S)Ncs"tjfdd}|_|S)Nc sxtjdkrntjd}yttt|jd}Wntk rBYn,X|krndjtt }t j d||f||S)Nrrrwz&Mac OS X %s or higher required, not %s) rmrnZmac_verrprrrrrrsrqrr)rrrrr)rrrbrcrcs   z4requires_mac_ver..decorator..wrapper)rrr)rr)r)rrcrbsz#requires_mac_ver..decoratorrb)rrrb)rrcr$[s z 127.0.0.1z::1cCs"tj||}t|}|j~|S)N)socketrGclose)familyZsocktypeZtempsockportrbrbrcrF}s 8 c Cs|jtjkr|jtjkrttdr>|jtjtjdkr>t dttdrdt j kry |jtjtj dkrpt dWnt k rYnXttdr|jtjtjd|j|df|jd}|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)sockhostrrbrbrcrGs       c Cs:y|j|Wn&tk r4|jtjdYnXdS)Nzcannot bind AF_UNIX sockets)rPermissionErrorrrqrr)rZaddrrbrbrcrIs cCsZtjrVd}z.dec)rr)rr rb)rrcsystem_must_validate_certs r riZdoubleZIEEEztest 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) tempfilemkdtemprrrealpathmkdirrrerrgetpidr)rquietZ dir_createdpidrbrbrctemp_dirs&   r,ccsftj}ytj|Wn.tk rD|s,tjd|tddYnXztjVWdtj|XdS)Nz)tests may fail, unable to change CWD to: r$)r)rgetcwdchdirrrerr)rr*Z saved_dirrbrbrc change_cwds  r/tempcwdccs:t||d$}t||d }|VWdQRXWdQRXdS)N)rr*)r*)r,r/)rtr*Z temp_pathZcwd_dirrbrbrcrsumaskc cs&tj|}z dVWdtj|XdS)N)rr1)r1ZoldmaskrbrbrcrJs  datacCsbtjj|r|S|dk r&tjj||}tgtj}x*|D]"}tjj||}tjj|r8|Sq8W|S)N)rrisabsr TEST_HOME_DIRrmexists)rZsubdirrZdnfnrbrbrcr#s    cCs(tj|tjtjBtjB}tj|dS)N)ropenO_WRONLYO_CREATO_TRUNCr)rfdrbrbrcr5scCs,t|j}dd|D}dj|}d|S)NcSsg|] }d|qS)z%r: %rrb).0Zpairrbrbrc =szsortdict..z, z{%s})sortedrr)dictrZ reprpairsZ withcommasrbrbrcrZ:s  c Cs*ttd}z|jS|jttXdS)Nwb)r7rfilenorr)rrbrbrc make_bad_fdAs  rB)linenooffsetc Csp|jt}t|ddWdQRX|j}|j|j|dk rJ|j|j||j|j|dk rl|j|j|dS)Nz exec) assertRaises SyntaxErrorcompileZ exceptionZassertIsNotNonerC assertEqualrD)testcaseZ statementrCrDcmrrbrbrcr%Ms   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)r7seekr)r6r)rrLrrbrccheck_valid_fileas z*open_urlresource..check_valid_fileZurlfetchz fetching %s ...)rAccept-Encodinggzip)rzContent-Encoding)Zfileobjr@zinvalid resource %r)rPrQ)Zurllib.requestZ urllib.parsepopparseZurlparserrrr TEST_DATA_DIRr5rr!rrrZrequestZ build_openerrQZ addheadersrr7ZheadersgetZGzipFilereadwriterr ) Zurlrrurllibrr6rOropeneroutsrb)rrLrrcrHXs<         c@s0eZdZddZddZeddZddZd S) WarningsRecordercCs||_d|_dS)Nr) _warnings_last)selfZ warnings_listrbrbrc__init__szWarningsRecorder.__init__cCsDt|j|jkr t|jd|S|tjjkr0dStd||fdS)Nrz%r has no attribute %rrS)rr_r`rreWarningMessage_WARNING_DETAILSr)raattrrbrbrc __getattr__s  zWarningsRecorder.__getattr__cCs|j|jdS)N)r_r`)rarbrbrcreszWarningsRecorder.warningscCst|j|_dS)N)rr_r`)rarbrbrcresetszWarningsRecorder.resetN)r_r`rarbrfpropertyrergrbrbrbrcr^s r^c 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)recordrealwaysFzunhandled warning %srz)filter (%r, %s) did not catch any warning)rm _getframe f_globalsrWclearrerfrx simplefilterr^rzmessagerematchrsI issubclassrremoverr_AssertionError) filtersr*frameregistrywZreraisemissingrvcatseenZwarningrbrbrc_filterwarningss0    r}cOs.|jd}|s$dtff}|dkr$d}t||S)Nr*rT)rWWarningr})rvr r*rbrbrcrQs   c csBtjdd }tjdtddVtWdQRX|j|gdS)NT)rirj)category)rerfrgResourceWarning gc_collectrI)rJZwarnsrbrbrcrRs c@s$eZdZddZddZddZdS)rcGsNtjj|_x<|D]4}|tjkrtj|}|j|kr>tj|j=tj|=qWdS)N)rmrxcopyoriginal_modulesr_)raZ module_namesZ module_namerrbrbrcrbs      zCleanImport.__init__cCs|S)Nrb)rarbrbrc __enter__szCleanImport.__enter__cGstjj|jdS)N)rmrxrr)ra ignore_excrbrbrc__exit__szCleanImport.__exit__N)r_r`rarbrrrbrbrbrcrs  c@sdeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ dS)rScCstj|_i|_dS)N)rr_environ_changed)rarbrbrcrbszEnvironmentVarGuard.__init__cCs |j|S)N)r)raenvvarrbrbrc __getitem__szEnvironmentVarGuard.__getitem__cCs*||jkr|jj||j|<||j|<dS)N)rrrW)rarvaluerbrbrc __setitem__!s zEnvironmentVarGuard.__setitem__cCs2||jkr|jj||j|<||jkr.|j|=dS)N)rrrW)rarrbrbrc __delitem__'s  zEnvironmentVarGuard.__delitem__cCs |jjS)N)rkeys)rarbrbrcr.szEnvironmentVarGuard.keyscCs t|jS)N)iterr)rarbrbrc__iter__1szEnvironmentVarGuard.__iter__cCs t|jS)N)rr)rarbrbrc__len__4szEnvironmentVarGuard.__len__cCs |||<dS)Nrb)rarrrbrbrcset7szEnvironmentVarGuard.setcCs ||=dS)Nrb)rarrbrbrcunset:szEnvironmentVarGuard.unsetcCs|S)Nrb)rarbrbrcr=szEnvironmentVarGuard.__enter__cGsJx<|jjD].\}}|dkr0||jkr:|j|=q ||j|<q W|jt_dS)N)rrrrr)rarkvrbrbrcr@s   zEnvironmentVarGuard.__exit__N)r_r`rarbrrrrrrrrrrrbrbrbrcrSsc@s$eZdZddZddZddZdS) DirsOnSysPathcGs(tjdd|_tj|_tjj|dS)N)rmroriginal_valueoriginal_objectextend)rapathsrbrbrcrbVszDirsOnSysPath.__init__cCs|S)Nrb)rarbrbrcr[szDirsOnSysPath.__enter__cGs|jt_|jtjdd<dS)N)rrmrr)rarrbrbrcr^szDirsOnSysPath.__exit__N)r_r`rarbrrrbrbrbrcrJs rc@s&eZdZddZddZdddZdS) r&cKs||_||_dS)N)rattrs)rarr rbrbrcrbhszTransientResource.__init__cCs|S)Nrb)rarbrbrcrlszTransientResource.__enter__NcCsT|dk rPt|j|rPx:|jjD]$\}}t||s4Pt|||kr Pq WtddS)Nz%an optional resource is not available)rsrrrrrr )raZtype_r tracebackreZ attr_valuerbrbrcros zTransientResource.__exit__)NNN)r_r`rarbrrrbrbrbrcr&cs)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||qSrb)rr)r<rtnumrbrbrcr=sz&transient_internet..cSsg|]\}}tt||qSrb)rr)r<rtrrbrbrcr=scst|dd}t|tjst|tjr,|kst|tjjrTd|jkoNdknst|tjj rd|j ksd|j ksd|j ks|krt st j jjdd|dS) NriiWConnectionRefusedError TimeoutErrorEOFErrorr )r isinstancerrZgaierrorrZerrorZ HTTPErrorcodeZURLErrorrrrmstderrrYr)rn)captured_errnosdenied gai_errnosrbrc filter_errors     z(transient_internet..filter_errorrrr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)r rZgetdefaulttimeoutZsetdefaulttimeoutnntplibZNNTPTemporaryErrorrrmrrYrrrr) Z resource_namerrZdefault_errnosZdefault_gai_errnosrZ old_timeoutrarb)rrrrcr*sP     c csFddl}tt|}tt||jztt|VWdtt||XdS)Nr)iorrmsetattrStringIO)Z stream_namerZ orig_stdoutrbrbrccaptured_outputs  rcCstdS)Nr)rrbrbrbrcrscCstdS)Nr)rrbrbrbrcrscCstdS)Nstdin)rrbrbrbrcrs cCs*tjtrtjdtjtjdS)Ng?)gcZcollectr?rrrbrbrbrcrs  rc cs.tj}tjz dVWd|r(tjXdS)N)r isenableddisableenable)Zhave_gcrbrbrc disable_gc s  rcCs:tjdp d}d}x|jD]}|jdr|}qW|dkS)N PY_CFLAGSrz-O-O0-Og)rrr) sysconfigget_config_varrro)ZcflagsZ final_optrrbrbrcpython_is_optimizeds  rZnPZ0ngettotalrefcountZ2PZ0PrcCstjt|tS)N)structcalcsize_header_align)fmtrbrbrc calcobjsize)srcCstjt|tS)N)rr_vheaderr)rrbrbrc calcvobjsize,sr cCspddl}tj|}t|tkr(|jt@sBt|tkrLt|jt@rL||j7}dt|||f}|j|||dS)Nrz&wrong size for %s: got %d, expected %d) _testcapirm getsizeofr __flags___TPFLAGS_HEAPTYPE_TPFLAGS_HAVE_GCZSIZEOF_PYGC_HEADrI)testosizerrrvrbrbrc check_sizeof3s  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)catstrrlocalesrbrcinnerDs$     z1run_with_locale..decorator..inner)r___doc__)rr)rr)rrcrCsz"run_with_locale..decoratorrb)rrrrb)rrrcrTBscsfdd}|S)Ncs"fdd}j|_j|_|S)Ncsy tj}Wntk r(tjdYnXdtjkr@tjd}nd}tjd<|z ||S|dkrrtjd=n |tjd<tjXdS)Nztzset requiredZTZ)rtzsetrrqrrrr)rrrZorig_tz)rtzrbrcrhs       z-run_with_tz..decorator..inner)r_r)rr)r)rrcrgszrun_with_tz..decoratorrb)rrrb)rrcr[fs 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_1Grprq IGNORECASEVERBOSErrfloatgrouplowerreal_max_memuseMAX_Py_ssize_t_2Gr)limitZsizesrZmemlimitrbrbrcrXs $ c@s$eZdZddZddZddZdS)_MemoryWatchdogcCsdjtjd|_d|_dS)Nz/proc/{pid}/statm)r+F)rrr)procfilestarted)rarbrbrcrbsz_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)r7rrrerrrrmrflushr subprocessPopen executableZDEVNULL mem_watchdogrr)rarrZwatchdog_scriptrbrbrcstarts   z_MemoryWatchdog.startcCs|jr|jj|jjdS)N)rr Z terminatewait)rarbrbrcstops z_MemoryWatchdog.stopN)r_r`rarbr r rbrbrbrcrsrcsfdd}|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@) rmemuserrqrrrrrrr r )rarrmaxsizeZwatchdog)dry_runrrrbrcrs*    z.bigmemtest..decorator..wrapper)rr)r)rrr)rrrcrszbigmemtest..decoratorrb)rrrrrb)rrrrcr2s !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@)rrrqrr)ra)rrbrcrsz!bigaddrspacetest..wrapperrb)rrrb)rrcr3s c@seZdZddZdS)r+cCstj}|||S)N)rqZ TestResult)rarrrbrbrcrunszBasicTestRunner.runN)r_r`rarrbrbrbrcr+scCs|S)Nrb)rrbrbrc_id srcCs<|dkrt rtjtjSt|r(tStjdj|SdS)Nrzresource {0!r} is not enabled)rrqskiprr rr)rrbrbrcrequires_resources  rcCs&trt|krtjd|tfStSdS)Nz%s at Android API level %d)r@_ANDROID_API_LEVELrqrr)levelrrbrbrcr=s  cCstdd|S)NT)cpython) impl_detail)rrbrbrcr4scKsVtf|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 ) rAr _parse_guardsr>rrrrqr)rvguardsZ guardnamesdefaultrbrbrcr#s   rc CsTtdkr:ddl}y|jdaWntk r8daYnXd}trF|Stj||S)NrTFz6requires a functioning shared semaphore implementation)_have_mp_queuemultiprocessingZQueuerlrqr)rrrvrbrbrcr>1s cCs*|sddidfSt|jd}|| fS)NrTFr)rzvalues)rZis_truerbrbrcr@s rcKs t|\}}|jtjj|S)N)rrWrnZpython_implementationr)rrrbrbrcrAJs cs,ttdsStjfdd}|SdS)Ngettracec s.tj}ztjd||Stj|XdS)N)rmr!settrace)rr Zoriginal_trace)rrbrcrZs   zno_tracing..wrapper)rrmrr)rrrb)rrc no_tracingUs r#cCs tt|S)N)r#r4)rrbrbrc refcount_testesr$cCsRg}xB|jD]8}t|tjr2t|||j|q ||r |j|q W||_dS)N)Z_testsrrq TestSuite _filter_suiter)suiteZpredZnewtestsrrbrbrcr&ps    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)rrmrrjunit_xml_listrrZget_xml_elementZtestsRunr Z wasSuccessfulrerrorsZfailuresr )r'Zrunnerrrrbrbrc _run_suite|s"  r+cCstdkr dSt|jSdS)NT)_match_test_funcid)rrbrbrc match_testsr.cCsd|kotjd| S)Nrwz[?*\[\]])rpsearch)rrbrbrc_is_full_match_testsr0csr|tkr dS|sd}f}nHttt|r4t|j}n.djttj|}t j |j fdd}|}t |a|a dS)N|cs$|r dStt|jdSdS)NTrw)anyrr)Ztest_id) regex_matchrbrcmatch_test_regexsz)set_match_tests..match_test_regex)_match_test_patternsallrr0r __contains__rfnmatch translaterprHrqrpr,)ZpatternsrZregexr4rb)r3rcset_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)rqr%ZTestCaserrsrmrxZaddTestZ findTestCasesrZ makeSuiter&r.r+)classesZ valid_typesr'clsrbrbrcr,s        cCsdS)Nrbrbrbrbrc_check_docstringssr=WITH_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(r?r@rrrbrbrcr-scCs tjjfS)N)rmrxrrbrbrbrc modules_setupsrAcCs:ddtjjD}tjjtjj|tjj|dS)NcSs"g|]\}}|jdr||fqS)z encodings.)ro)r<rrrbrbrcr=sz#modules_cleanup..)rmrxrrmr)Z oldmodules encodingsrbrbrcmodules_cleanups  rCcCs"trtjtjjfSdffSdS)Nr)_thread_count threading _danglingrrbrbrbrcrM<scGsJtsdSd}x8t|D],}tjtjf}||kr2PtjdtqWdS)Ndg{Gz?)rDrangerErFrGrrr)Zoriginal_valuesZ _MAX_COUNTcountr rbrbrcrNBs cs"tsStjfdd}|S)Nc st}z|St|XdS)N)rMrN)rkey)rrbrcrVszreap_threads..decorator)rDrr)rrrb)rrcrONsN@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?)rDrErZ monotonicrurr)rZ old_countZ start_timeZdeadlinerJZdtrvrbrbrcwait_threads_exit`s   $ rNc CsZttdrVd}xFy2tj|tj\}}|dkr.Ptd|tjdWqPYqXqWdS)Nwaitpidrrz2Warning -- reap_children() reaped child process %s)rrS)rrrOWNOHANGrrmr)Z any_processr+statusrbrbrcrKs 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|qSrb)isAlive)r<rrbrbrcr=sz!start_threads..z7Unable to join %d threads during a period of %d minutescSsg|]}|jr|qSrb)rS)r<rrbrbrcr=szUnable to join %d threads)rzr rrrrrrIrmax faulthandlerZdump_tracebackrmrru)ZthreadsZunlockrrZendtimeZ starttimerrbrbrcrPs>     c csnt||rtt|tt|}|r(|t|8}tdd|D}|S)Ncss(|] }|jd s|jdr|VqdS)___N)roendswith)r<rrbrbrc sz&detect_api_mismatch..)rrs)Zref_apiZ other_apirdZ missing_itemsrbrbrcr; 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)Nr|r`) r_rrsrrsrorrtypes ModuleTypeaddZassertCountEqual__all__)Z test_caserZname_of_moduleZextraZ blacklistZexpectedrtrrbrbrcr< s)    c@s$eZdZdZdZddZddZdS)rYNc 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/defaultsrXzcom.apple.CrashReporterZ DialogType)rrs developerz:this test triggers the Crash Reporter, that is intentionalrT)endr) rmrnrorrr_k32 SetErrorMode old_valuemsvcrtCrtSetReportModerrl old_modesCRT_WARN CRT_ERROR CRT_ASSERTZCRTDBG_MODE_FILECrtSetReportFileZCRTDBG_FILE_STDERRrZ getrlimit RLIMIT_CORE setrlimitrrrrPIPEZ communicater\r) rarZSEM_NOGPFAULTERRORBOXr report_typeold_modeold_filecmdprocrrbrbrcr sN        zSuppressCrashReport.__enter__c Gs|jdkrdStjjdrl|jj|j|jrddl}xj|jjD]$\}\}}|j |||j ||qBWn6t dk ryt j t j |jWnttfk rYnXdS)Nrr)rrmrnrorrrrrrrrrrrr)rarrrrrrbrbrcr0 s   zSuppressCrashReport.__exit__)r_r`rarrrrrbrbrbrcrY sAc srtdyjWn$ttfk r@tdYnXdfdd}|j|t|dS)NFTcs rtn tdS)N)rrVrb) attr_is_local attr_nameobject_to_patchrrbrccleanup[ szpatch..cleanup)rrerr~Z addCleanupr)Z test_instancerrZ new_valuerrb)rrrrrcpatchE s  rc CsFy ddl}Wntk r YnX|jr4tjdddl}|j|S)NrzUrun_in_subinterp() cannot be used if tracemalloc module is tracing memory allocations) tracemallocrlZ is_tracingrqrrrrun_in_subinterp)rrrrbrbrcrg s  rcsHGfddd|}d||||jttt|jdS)NcseZdZfddZdS)z%check_free_after_iterating..Ac s*dy tWntk r$YnXdS)NT)next StopIteration)ra)doneitrbrc__del__} s  z-check_free_after_iterating..A.__del__N)r_r`rarrb)rrrbrcA| srF)rFrrrZ assertTrue)rrr<rrrb)rrrccheck_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_namesrrrZcompilerrtrrbrbrcr] s     cCs@d}tr6||kr6tdkr.tjddgjdkatr6|}tj|S)Ngh㈵>Zgetpropzro.kernel.qemu1)r@_is_android_emulatorrZ check_outputr\rmrC)intervalZminimum_intervalrbrbrcrC s c cs>tjj}tj}ztjdVWd|r8tj|ddXdS)NT)rZ all_threads)rmrrArU is_enabledrr)r;rrbrbrcdisable_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)rmrnrorrrrrrrrrrrlrrrrIduprZEBADFr) namesZMAXFDrrrrJr;Zfd2rrbrbrcr^ sP          c@s$eZdZddZddZddZdS) SaveSignalsc Csjddl}||_ttd|j|_x>dD]6}yt||}Wntk rNw&YnX|jj|q&Wi|_dS)NrrSIGKILLSIGSTOP)rr) signalrzrINSIGsignalsrrrtra)rarZsignamesignumrbrbrcrb s zSaveSignals.__init__cCs4x.|jD]$}|jj|}|dkr"q||j|<qWdS)N)rr getsignalra)rarhandlerrbrbrcsave s   zSaveSignals.savecCs*x$|jjD]\}}|jj||q WdS)N)rarr)rarrrbrbrcrestore# szSaveSignals.restoreN)r_r`rarbrrrbrbrbrcr s   rc@s$eZdZddZddZddZdS)FakePathcCs ||_dS)N)r)rarrbrbrcrb+ szFakePath.__init__cCsd|jdS)Nz )r)rarbrbrc__repr__. szFakePath.__repr__cCs6t|jts$t|jtr,t|jtr,|jn|jSdS)N)rr BaseExceptionrrs)rarbrbrc __fspath__1 s    zFakePath.__fspath__N)r_r`rarbrrrbrbrbrcr( sr)T)F)F)Nii@i@i@ii) rrrrrrrrrrr)r rr!r"r#)NF)F)r0F)N)Fi@ii)T)N)Nr)rL)N(r_rlcollections.abc collections contextlibZdatetimerrUr8rrrkimportlib.utilrZlogging.handlersr`rrrnrprrrrrrmrr%rrrqZ urllib.errorrZreZ testresultrrDrFZmultiprocessing.processrzlibrQbz2Zlzmarrrr r r rrr contextmanagerrir r}rr9r:rr5rrrrr)rrrrrrrorrrrrrrrrrrr r!rr"r#r$rDrrrrFrGrIr rEr rZ SOCK_MAX_SIZEZ skipUnlessr __getformat__r6r8r/r0r1r?rrr@rBrtrrr)Z FS_NONASCII characterfsdecodefsencode UnicodeErrorZTESTFN_UNICODEZ unicodedata normalizegetfilesystemencodingZTESTFN_ENCODINGZTESTFN_UNENCODABLEZgetwindowsversionencodeUnicodeEncodeErrorrdecodeUnicodeDecodeErrorZTESTFN_UNDECODABLEZTESTFN_NONASCIIr-rr\r,r/rrrJrrrrZTEST_SUPPORT_DIRr4rrVrrrZrBr%rHobjectr^r}rQrRrabcMutableMappingrSrr&rrr'rr(r)r*rrrrrrrrrrrrrrrrTr[rrrZ_4GrrrXrr2r3r+rrr=r4rrr>rrAr#r$r&r+r,r5r.r0r:r,r=ZMISSING_C_DOCSTRINGSrZHAVE_DOCSTRINGSZrequires_docstringsr-rArCZenvironment_alteredrMrNrOrNrKrPrVrUr]ZskipIfZrequires_type_collectingr^r_rarbrLrWrmrr.rurwr7rr;r<rYrrrr]rrCrr^rrrbrbrbrcs                    2   !  J   > &                 %      2 ' 5M         $ # 0           (        " #   "     :_"  ;'