o =?h1 @sBddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z ddl m Z ddlmZddlmZddlmZmZmZGdddZGd d d eZGd d d eZGd ddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZ GdddeZ!dZ"gd Z#e$Z%gZ&d!ed"ed#e'fd$d%Z(d>d&d'Z)de#e%fd(d)Z*d"ed*e+d#e+fd+d,Z,d"ed*e+d#efd-d.Z-d"ed*e+d#efd/d0Z.d1d2Z/d"ed*e+fd3d4Z0d"ed*e+d#e'fd5d6Z1 7d?d"ed*e+d8e'd#efd9d:Z2d*e+d;e3d#dfd@) Z test_grammarZ test_opcodesZ test_dictZ test_builtinZtest_exceptionsZ test_typesZ test_unittestZ test_doctestZ test_doctest2Z test_supportresultnsrcCst|tr|jSt|tSr) isinstancer5Zfail_env_changedr#)r=r>rrr is_faileds  r@cCs|ptjtjtptjSr)ospathdirname__file__curdir)rBrrr findtestdirsrFc Csrt|}t|}g}t||B}|D]}tj|\}}|dddkr2|dvr2||vr2||q|t|S)z-Return a list of all applicable test modules.NZtest_)z.pyr,)rFrAlistdirsetrBsplitextappendsorted) testdirZstdtestsZnottestsnamestestsZothersr modZextrrr findtestss     rQ test_namecCs|ds|jr |Sd|S)Nztest.) startswithrMr>rRrrrget_abs_modulesrUc sX|j}|jdu}|rtj|jddt}zt|j|j |j r$gndt_ }|j r/dt_ |rmdt_ t}tj}tj}z'|t_|t_t||dd} t| ts^|} || |W|t_|t_n|t_|t_w|j t_ t|||j d} |rddlmmfdd|D| _t|| _| W|rtdt_ S|rtdt_ w)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 ElementTreer r Zcancel_dump_traceback_later) r>rRZoutput_on_failureZ use_timeoutZ start_timeZxml_liststreamZ orig_stdoutZ orig_stderrr=outputrr[r_runtests^    rlcCsJzt||WS|jst}td|d|tjddt|YS)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 -- Tfileri)rlpgo traceback format_excprintrcrer#)r>rRmsgrrrruntests  rvcCsHt}||}|jD] }t|tjdq |jrtdt |dS)N)rpzerrors while loading tests) unittestZ TestLoaderZloadTestsFromModuler$rtrcre ExceptionrZ run_unittest) the_moduleloaderrOr)rrr _test_modules  r{cCst||j|j|jdS)N)rq)rr`quietrqrTrrrsave_envsr}c Cst||}ztj|=Wn tyYnwt|}|jr#ddlm}t |dd}|dur3t t |}z,t |||jrD||||}n|d}Wdn1sSwYWt||jnt||jwttjrdt_t|dttjdttjtjt|S)Nr)dash_RZ test_mainFTz created z uncollectable object(s).)rUrcmodulesKeyError importlib import_moduleZ huntrleaksZtest.libregrtest.refleakr~getattr functoolspartialr{r}cleanup_test_droppingsr`r gc_collectgcZgarbageenvironment_alteredrr0 FOUND_GARBAGEextendclearZ reap_children)r>rRZabstestryr~Z test_runnerrefleakrrr_runtest_inner2 s<          rTrWc CsFdt_|jrd}ztt|| t||}Wdn1s!wYWntjyO}z|jsA|jsAt|d|ddt|WYd}~Sd}~wt j yv}z|jsh|jsht|d|ddt |WYd}~Sd}~wtj y}z&d|d}|r|d|}t|t jddt||j|jd WYd}~Sd}~wtjy}z!d|d}|r|d|}t|t jddt|WYd}~Sd}~wtjyt|YStytt|YS|js t}td|d |t jddt|YS|rt|Stjrt|St|S) NFz skipped -- T)rirmr/z -- ro)r$r%rn)rrrqrr}rr8r|rtrwZSkipTestr7ZTestFailedWithDetailsrcrer#r$r%Z TestFailedZ TestDidNotRunr;KeyboardInterruptr9rrrsr4r6r5r )r>rRrWrruexcrrrrf?sd          rfr`c CsttjfD]x}tj|sqtj|r"ddl}d|j }}ntj |r/dtj }}nt d|d|rHt |d|d|dt_zddl}t||j|jB|jB||Wqty}zt |d|d|d |WYd}~qd}~wwdS) NrZ directoryrpz os.path says z) exists but is neither directory nor filez left behind r-Tz and it couldn't be removed: )rrrZTESTFNrArBexistsisdirshutilZrmtreeisfileunlink RuntimeErrorrrstatchmodS_IRWXUS_IRWXGS_IRWXOrx)rRr`r rkindZnukerrrrrrrws0     rr)T)5r]rrrrarArcr^rrrwtestrZ test.supportrZtest.libregrtest.cmdlinerZtest.libregrtest.save_envrZtest.libregrtest.utilsrrrr r r#r4r5r6r7r8r9r:r;r<ZPROGRESS_MIN_TIMEZSTDTESTSrIZNOTTESTSrboolr@rFrQrrUrlrvr{r}rrfintrrrrrsf    "  9 4 8