a XC?h<0@sddlmZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl m Z ddlmZmZddlmZddlmZddlmZmZGdd d ZGd d d eZGd d d eZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZ GdddeZ!GdddeZ"GdddeZ#d Z$gd!Z%e&Z'gZ(d d"d#d$d%d&Z)d@d'd(Z*de%e'fd)d*Z+d"d+d+d,d-d.Z,d"d+d d,d/d0Z-d"d+d d,d1d2Z.d3d4Z/d"d+d#d,d5d6Z0dAd"d+d#d d8d9d:Z1d+d;dd?Z2dS)B) annotationsN)support)dash_R clear_caches) Namespace)saved_test_environment)format_duration print_warningc@s0eZdZd ddddddd Zdd d d ZdS) TestResultNstrfloatlist[str] | NoneNone)name duration_secxml_datareturncCs||_||_||_dSN)rrr)selfrrrr=/opt/alt/python39/lib64/python3.9/test/libregrtest/runtest.py__init__szTestResult.__init__rcCs |jdS)Nz finishedrrrrr__str__ szTestResult.__str__)r N)__name__ __module__ __qualname__rrrrrrr s r c@seZdZddddZdS)Passedr rcCs |jdS)Nz passedrrrrrr%szPassed.__str__Nrrrrrrrrr $sr cs<eZdZddddddddfd d Zdd d d ZZS)Failedr Nr r rzlist[tuple[str, str]] | Noner)rrrerrorsfailuresrcs"tj|||d||_||_dS)N)rr)superrr#r$)rrrrr#r$ __class__rrr*szFailed.__init__rc Cs|jrl|jrlt|j}t|j}d|dkr.dnd}d|dkrBdnd}|jd|d|d|d|d S|jrt|j}d|dkrdnd}|jd|d|d S|jrt|j}d|dkrdnd}|jd|d|d S|jd S) NerrorsZfailurez failed ( z, ) failed)r#r$lenr)rleZlfZerror_sZ failure_srrrr6s   $  zFailed.__str__)r NNN)rrrrr __classcell__rrr&rr")s  r"c@seZdZddddZdS)UncaughtExceptionr rcCs |jdS)Nz failed (uncaught exception)rrrrrrLszUncaughtException.__str__Nr!rrrrr2Ksr2c@seZdZddddZdS) EnvChangedr rcCs |jdS)Nz failed (env changed)rrrrrrQszEnvChanged.__str__Nr!rrrrr3Psr3c@seZdZddddZdS)RefLeakr rcCs |jdS)Nz failed (reference leak)rrrrrrVszRefLeak.__str__Nr!rrrrr4Usr4c@seZdZddddZdS)Skippedr rcCs |jdS)Nz skippedrrrrrr[szSkipped.__str__Nr!rrrrr5Zsr5c@seZdZddddZdS)ResourceDeniedr rcCs |jdS)Nz skipped (resource denied)rrrrrr`szResourceDenied.__str__Nr!rrrrr6_sr6c@seZdZddddZdS) Interruptedr rcCs |jdS)Nz interruptedrrrrrreszInterrupted.__str__Nr!rrrrr7dsr7c@seZdZddddZdS) ChildErrorr rcCs |jdS)Nz crashedrrrrrrjszChildError.__str__Nr!rrrrr8isr8c@seZdZddddZdS) DidNotRunr rcCs |jdS)Nz ran no testsrrrrrroszDidNotRun.__str__Nr!rrrrr9nsr9c@seZdZddddZdS)Timeoutr rcCs|jdt|jdS)Nz timed out (r-)rrrrrrrrtszTimeout.__str__Nr!rrrrr:ssr:g>@) Z test_grammarZ test_opcodesZ test_dictZ test_builtinZtest_exceptionsZ test_typesZ test_unittestZ test_doctestZ test_doctest2Z test_supportrbool)resultnsrcCst|tr|jSt|tSr) isinstancer3Zfail_env_changedr")r<r=rrr is_faileds r?cCs|ptjtjtptjSr)ospathdirname__file__curdir)rArrr findtestdirsrEc Csrt|}t|}g}t||B}|D]>}tj|\}}|dddkr&|dvr&||vr&||q&|t|S)z-Return a list of all applicable test modules.NZtest_)z.pyr+)rEr@listdirsetrAsplitextappendsorted) testdirZstdtestsZnottestsnamestestsZothersrmodZextrrr findtestss    rPr )r= test_namercCs |ds|jr|Sd|SdS)Nztest.) startswithrL)r=rQrrrget_abs_modulesrSc sn|j}|jdu}|r$tj|jddt}z$t|j|j |j rJgndt_ }|j r`dt_ |rdt_ t}tj}tj}zN|t_|t_t||dd} t| ts|} || |W|t_|t_q|t_|t_0n|j t_ t|||j d} |r$ddlmmfdd|D| _t|| _| W|rDtdt_ Sdt_ n|rbtdt_ 0dS)NT)exitF)display_failurercsg|]}|dqS)zus-ascii)Ztostringdecode).0xZETrr sz_runtest..)Zverbose3Ztimeout faulthandlerZdump_traceback_latertime perf_counterrZset_match_testsZ match_testsZ ignore_testsZxmlpathZjunit_xml_listZfailfastverboseioStringIOsysstdoutstderr_runtest_innerr>r getvaluewriteflushZxml.etree.ElementTreeZetreeZ ElementTreerrZcancel_dump_traceback_later) r=rQZoutput_on_failureZ use_timeoutZ start_timeZxml_liststreamZ orig_stdoutZ orig_stderrr<outputrrYr_runtestsd      rjcCsPz t||WS|js>t}td|d|tjddt|YS0dS)aRun a single test. ns -- regrtest namespace of options test_name -- the name of the test Returns a TestResult sub-class depending on the kind of result received. If ns.xmlpath is not None, xml_data is a list containing each generated testsuite element. test crashed -- TfilergN)rjpgo traceback format_excprintrarcr")r=rQmsgrrrruntests  rtcCsHt}||}|jD]}t|tjdq|jr:tdt |dS)N)rnzerrors while loading tests) unittestZ TestLoaderZloadTestsFromModuler#rrrarc ExceptionrZ run_unittest) the_moduleloaderrNr(rrr _test_modules  ryc Cst||}t|t|}t|dd}|dur>tt|}z.|j rTt |||}n |d}Wt ||j nt ||j 0t tjrdt_t|dttjdttjtjt|S)NZ test_mainFTz created z uncollectable object(s).)rSrZunload importlib import_modulegetattr functoolspartialryZ huntrleaksrcleanup_test_droppingsr^ gc_collectgcZgarbageenvironment_alteredr r/ FOUND_GARBAGEextendclearZ reap_children)r=rQZabstestrwZ test_runnerrefleakrrr_runtest_inner2 s(       rT)r=rQrUrc Csddt_|jrd}zLtt||j|j|jd}t||}Wdn1sN0YWntjy}z6|js|jst |d|ddt|WYd}~Sd}~0t j y}z6|js|jst |d|ddt |WYd}~Sd}~0tj yd}zNd|d}|r.|d|}t |tjdd t||j|jd WYd}~Sd}~0tjy}zDd|d}|r|d|}t |tjdd t|WYd}~Sd}~0tjyt|YStyt t|YS|js0t}t d|d |tjdd t|YS0|rLt|S|jr\t|St|S) NF)roz skipped -- T)rgrkr.z -- rm)r#r$rl)rrrorrr^quietrr6rrruZSkipTestr5ZTestFailedWithDetailsrarcr"r#r$Z TestFailedZ TestDidNotRunr9KeyboardInterruptr7rprqr2r4Zchangedr3r )r=rQrUZ environmentrrsexcrrrrd6sX.   &   rdintr)rQr^rc Cs ttjfD]}tj|s"qtj|rDddl}d|j}}n*tj |r^dtj }}nt d|d|rt |d|d|dt_ z.ddl}t||j|jB|jB||Wqty}z*t |d|d|d |WYd}~qd}~00qdS) NrZ directoryrnz os.path says z) exists but is neither directory nor filez left behind r,Tz and it couldn't be removed: )rrZTESTFNr@rAexistsisdirshutilZrmtreeisfileunlink RuntimeErrorr rstatchmodS_IRWXUS_IRWXGS_IRWXOrv)rQr^rrkindZnukerrrrrrrns*     r)N)T)3Z __future__rr[r}rrzr_r@rar\rprutestrZtest.libregrtest.refleakrrZtest.libregrtest.cmdlinerZtest.libregrtest.save_envrZtest.libregrtest.utilsrr r r r"r2r3r4r5r6r7r8r9r:ZPROGRESS_MIN_TIMEZSTDTESTSrHZNOTTESTSrr?rErPrSrjrtryrrdrrrrrsT    "  9 -8