a 5dg@sDddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl mZddl mZddlmZeedZejejeddZejejeZdZe dZGd d d e jZGd d d e jZ Gd dde Z!Gddde Z"Gddde Z#Gddde jZ$e%dkr@e &dS)N) libregrtest)support)utilsZgettotalrefcountz..z5[0-9]+:[0-9]+:[0-9]+ (?:load avg: [0-9]+\.[0-9]{2} )?z from signal import SIGINT, raise_signal try: raise_signal(SIGINT) except ImportError: import os os.kill(os.getpid(), SIGINT) c@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Z d=d>Z!d?d@Z"dAdBZ#dCdDZ$dEdFZ%dGdHZ&dIdJZ'dKdLZ(dMdNZ)dOdPZ*dQS)RParseArgsTestCasec CsptD}|tt|Wdn1s40YWdn1sR0Y|||dSN)rZcaptured_stderr assertRaises SystemExitr _parse_argsassertIngetvalue)selfargsmsgerrr./usr/local/lib/python3.9/test/test_regrtest.py checkError,sFzParseArgsTestCase.checkErrorc CsdD]}|j|d~tF}|tt|gWdn1sL0YWdn1sj0Y|d|Wdq1s0YqdS)N)z-hz--helpoptzRun Python regression tests.) subTestrZcaptured_stdoutrrrr r r )r routrrr test_help1s HzParseArgsTestCase.test_helpcCs>tddg}||jd|dgd|ddgddS)N --timeoutz4.2g@expected one argumentfoozinvalid float value)rr assertEqualtimeoutrr nsrrr test_timeout9szParseArgsTestCase.test_timeoutcCstdg}||jdS)N--wait)rr assertTruewaitrrrr test_wait?s zParseArgsTestCase.test_waitcCs.tddg}||jd|dgddS)Nz --worker-argsz[[], {}]r)rr rZ worker_argsrrrrrtest_worker_argsCsz"ParseArgsTestCase.test_worker_argsc CsddD]Z}|j|d:t|dg}||jd||gdWdq1sT0YqdS)N)z-S--startrrr)rrr rstartrr rrrrr test_startHs zParseArgsTestCase.test_startcCstdg}||jdtdg}||jdtdg}||jdtdgd}||jdtg}||jddS)N-vz-vvv --verboser)rr rverboserrrr test_verboseOs    zParseArgsTestCase.test_verbosec CsRdD]H}|j|d(t|g}||jWdq1sB0YqdS)N)-wz --verbose2r)rrr r!Zverbose2r'rrr test_verbose2[s zParseArgsTestCase.test_verbose2c CsRdD]H}|j|d(t|g}||jWdq1sB0YqdS)N)-Wz --verbose3r)rrr r!Zverbose3r'rrr test_verbose3as zParseArgsTestCase.test_verbose3c Cs`dD]V}|j|d6t|g}||j||jdWdq1sP0YqdS)N)-q--quietrr)rrr r!quietrr-r'rrr test_quietgs   zParseArgsTestCase.test_quietc CsRdD]H}|j|d(t|g}||jWdq1sB0YqdS)N)z-o --slowestr)rrr r!Z print_slowr'rrr test_slowestns zParseArgsTestCase.test_slowestcCs4tdg}||jtdg}||jdS)Nz--headerr,)rr r!headerrrrr test_headerts   zParseArgsTestCase.test_headerc CsRdD]H}|j|d(t|g}||jWdq1sB0YqdS)N)-rz --randomizer)rrr r! randomizer'rrrtest_randomize{s z ParseArgsTestCase.test_randomizecCsJtddg}||jd||j|dgd|ddgddS)Nz --randseedZ12345i90rrinvalid int value)rr rZ random_seedr!r<rrrrr test_randseeds  zParseArgsTestCase.test_randseedc CsvdD]l}|j|dLt|dg}||jd||gd||ddgdWdq1sf0YqdS)N)-f --fromfilerrr-sdon't go together)rrr rfromfilerr'rrr test_fromfiles zParseArgsTestCase.test_fromfilec CsRdD]H}|j|d(t|g}||jWdq1sB0YqdS)N)z-x --excluder)rrr r!excluder'rrr test_excludes zParseArgsTestCase.test_excludec CsddD]Z}|j|d:t|g}||j||ddgdWdq1sT0YqdS)N)rBz--singlerr@rrC)rrr r!Zsinglerr'rrr test_singles   zParseArgsTestCase.test_singlec CsdD]\}|j|d<t|dg}||jdg||gdWdq1sV0Yq|tjtj t tj d(}t d|dt d|dWdn1s0Yt j tj }td d d |g}||jddgdS) N)z-iz--ignorerpatternrw matchfile1file matchfile2-mmatch --ignorefile)rrr rZ ignore_testsr addCleanuprunlinkTESTFNopenprintospathabspathr rrfpfilenamerrr test_ignores . *zParseArgsTestCase.test_ignorec Cs dD]\}|j|d<t|dg}||jdg||gdWdq1sV0Yqtgd}||jddg|tjtj t tj d(}t d |d t d |d Wdn1s0Yt j tj }td d d|g}||jgddS)N)rPz--matchrrJr)rPpattern1rPpattern2r_r`rKrLrMrOrPrQ --matchfile)rQrLrO)rrr rZ match_testsrrSrrTrUrVrWrXrYrZr[rrr test_matchs$. *zParseArgsTestCase.test_matchc Cs|dD]r}|j|dRt|dg}||jt|dg}||j||gdWdq1sl0YqdS)N)z-Gz --failfastrr)r1z#-G/--failfast needs either -v or -W)rrr r!Zfailfastrr'rrr test_failfasts  zParseArgsTestCase.test_failfastc CsdD]}|j|dt|dg}||jddgt|dg}||jdgttj}|dt|dg}||j|||gd||d gd t|d g}||jttjd gt|d g}||jd gWdq1s0YqdS)N)-uz--userz gui,networkZguinetworkzgui,none,networkzall,-guirrzinvalid resourcez all,tzdataZtzdataZextralargefile) rrr rZ use_resourceslistZ ALL_RESOURCESremover)r rrZexpectedrrrtest_uses$   zParseArgsTestCase.test_usec CsddD]Z}|j|d:t|dg}||jd||gdWdq1sT0YqdS)N)z-Mz --memlimitrZ4Gr)rrr rmemlimitrr'rrr test_memlimits zParseArgsTestCase.test_memlimitcCs:tddg}||jtjtjd| dgddS)Nz --testdirrr) rr rtestdirrXrYjoinrSAVEDCWDrrrrr test_testdirszParseArgsTestCase.test_testdirc CsRdD]H}|j|d(t|g}||jWdq1sB0YqdS)N)z-Lz --runleaksr)rrr r!Zrunleaksr'rrr test_runleakss zParseArgsTestCase.test_runleaksc CsdD]}|j|dt|dg}||jdt|dg}||jdt|dg}||jdt|d g}||jd ||gd ||d gd ||dgd||dgdWdq1s0YqdS)N)z-R --huntrleaksr:) reflog.txtz6:)rsrtz:3)rrr+rtz 6:3:leaks.log)rur+z leaks.logr6z&needs 2 or 3 colon-separated argumentszfoo:zinvalid huntrleaks valuez6:foo)rrr r huntrleaksrr'rrrtest_huntrleakss  z!ParseArgsTestCase.test_huntrleaksc CsdD]}|j|dnt|dg}||jd||gd||dgd||ddgd ||d dgd Wdq1s0YqdS) N)z-jz--multiprocessr2rrr>-TrC0)rrr rZuse_mprr'rrrtest_multiprocess sz#ParseArgsTestCase.test_multiprocessc CsRdD]H}|j|d(t|g}||jWdq1sB0YqdS)N)r{ --coverager)rrr r!Ztracer'rrr test_coverages zParseArgsTestCase.test_coveragec CspdD]f}|j|dFt|dg}||jtjtj d| |gdWdq1s`0YqdS)N)z-Dz --coverdirrrr) rrr rcoverdirrXrYrlrrmrr'rrr test_coverdirszParseArgsTestCase.test_coverdirc CsRdD]H}|j|d(t|g}||jWdq1sB0YqdS)N)z-Nz --nocoverdirr)rrr Z assertIsNonerr'rrrtest_nocoverdir"s z!ParseArgsTestCase.test_nocoverdirc CstdD]j}|j|dJt|dg}||jd||gd||dgdWdq1sd0YqdS)N)z-tz --thresholdrZ1000irrr>)rrr rZ thresholdrr'rrrtest_threshold(s z ParseArgsTestCase.test_thresholdc CsdD]}|j|djtt}t|g}Wdn1sF0Y||j| }| d|Wdq1s0YqdS)N)-nz --nowindowsrz)the --nowindows (-n) option is deprecated) r contextlibredirect_stderrioStringIOrr r!Z nowindowsr r )r rstderrrrrrrtest_nowindows0s* z ParseArgsTestCase.test_nowindowsc CsRdD]H}|j|d(t|g}||jWdq1sB0YqdS)N)z-F --foreverr)rrr r!foreverr'rrr test_forever9s zParseArgsTestCase.test_forevercCs|dgddS)Nz--xxxzusage:rr rrrtest_unrecognized_argument?sz,ParseArgsTestCase.test_unrecognized_argumentcCs*tdg}||j||jddS)Nz--quir)rr r!r5rr-rrrrtest_long_option__partialBs  z+ParseArgsTestCase.test_long_option__partialcCs8tddg}||j||jd||jdS)Nr4rFr)rr r!r5rr-rGrrrrtest_two_optionsGs z"ParseArgsTestCase.test_two_optionscCs tddg}||jddS)Nr%)rr rr&rrrr#test_option_with_empty_string_valueMsz5ParseArgsTestCase.test_option_with_empty_string_valuecCs tdg}||jdgdS)Nr)rr rr rrrrtest_argQs zParseArgsTestCase.test_argcCs<tddg}||j||jd||jdgdS)Nr4rr)rr r!r5rr-r rrrrtest_option_and_argUs z%ParseArgsTestCase.test_option_and_argcCs2tgd}||jd||jddgdS)N) test_unaryopr) test_binopr*rr)rr rr-r rrrrtest_arg_option_arg[sz%ParseArgsTestCase.test_arg_option_argcCs|dgddS)Nz--unknown-optionz(unrecognized arguments: --unknown-optionrrrrrtest_unknown_option`sz%ParseArgsTestCase.test_unknown_optionN)+__name__ __module__ __qualname__rrrr#r$r(r.r0r2r6r8r:r=r?rErHrIr^rbrcrhrjrnrorxr}rrrrrrrrrrrrrrrrrrr'sP    rc @sfeZdZdZdZdZddZdddZd d Zd d Z d dZ dddZ ddZ dddZ ddZdS) BaseTestCaser*Ztest_regrtest_ztest_[a-zA-Z0-9_]+cCs4tjtjt|_t|_| t j |jdSr) rXrYrealpathdirname__file__rktempfilemkdtemp tmptestdirrSrrmtreerrrrsetUpjs zBaseTestCase.setUpNc Cs|sdtj}tjd7_|dur.td}|j|}tj|j|d}| t j |zz4BaseTestCase.parse_executed_tests..) LOG_PREFIXTESTNAME_REGEXrfinditerrrf)r rrparserrrrparse_executed_testss z!BaseTestCase.parse_executed_testsrFc st|tr|g}t|tr |g}t|tr0|g}t|tr@|g}t|trP|g}t|tr`|g}t|trp|g}||} | r|t| t||n|| ||ddfdd} |r| d|}||||r| d|}||||r| d|}||||r$| d|}||||r|| d |}|||td }||||D]"}td |d }|||qX|r| d |}|||t|t|t|t|t|t|}|rd||f}|s|s|dkrd|}|||| r||dg}|r0|dn| rF|rF|d| rV|dt |||| ||| fsz|dn|s|dd |}|r||dd|}||d|dS)NcSs|dkr dSdS)Nr*srr)countrrrpluralsz1BaseTestCase.check_executed_tests..pluralcs6t|}dt|}|||f}d||f}|S)N z %s:\n %s$)lenrlsorted)Z line_formattestsrnamesrrrr list_regexs  z5BaseTestCase.check_executed_tests..list_regexz%s test%s skippedz%s test%s failedz+%s test%s altered the execution environmentz%s test%s omittedz%s re-run test%sz'Re-running failed tests in verbose modez Re-running z in verbose modez%s test%s run no testsz%s test%s OK\.$r*zAll %sz(Test suite interrupted by signal SIGINT.FAILUREz ENV CHANGEDZ INTERRUPTEDz NO TEST RUNSUCCESS, zTests result: FAILUREzFAILURE then %szTests result: %s) isinstancestrrrsetrrrappendanyrl)r rrskippedfailed env_changedomittedrerun no_test_ranr< interruptedfail_env_changedZexecutedrrZ test_nameZgoodresultrrrcheck_executed_testss                                z!BaseTestCase.check_executed_testscCs>|d|}t|d}|d|ko0dkn||S)NzUsing random seed ([0-9]+)r*ri)rintrr!)r rrQrandseedrrrparse_random_seeds  zBaseTestCase.parse_random_seedrcKsx|sd}d|vrtj|d<tj|fd|tjd|}|j|krtdt||j|jf}|jrj|d|j7}|||S)NrrT)universal_newlinesinputstdoutz8Command %s failed with exit code %s stdout: --- %s --- z stderr: --- %s--- ) subprocessSTDOUTrunPIPE returncoderrrr)r r rexitcodekwprocrrrr run_commands*   zBaseTestCase.run_commandcKs*tjdddg|}|j|fi|}|jS)Nz-X faulthandlerz-I)sys executablerr)r r rrrrr run_python szBaseTestCase.run_python)NN) rrrrrrFFF)Nr)rrrrrrrrrrrrrrrrrrrres"  ` rc@seZdZddZdS)CheckActualTestscCstgd}||}t|}tjttjt d}tt|}|j ||dddd|ddS)N)-Wd-E-bbrP test.regrtest --list-testsztest*.py z+Unexpectedly low number of tests found in: r)r) rr splitlinesrXrYrlglobescaperrZ assertGreater)r r rZrough_number_of_tests_foundZactual_testsuite_globZrough_counted_test_py_filesrrr#test_finds_expected_number_of_tests+s    z4CheckActualTests.test_finds_expected_number_of_testsN)rrrrrrrrr&srcseZdZdZfddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ e edddZddZe ede ejdkdddZe ejdkdddZZS) ProgramsTestCaserscsftfddtjD_gd_dddjg_jdt j dkrbj d dS) Ncsg|] }qSrrrindexrrr Krz*ProgramsTestCase.setUp..)rrrz-uallz-rwW --testdir=%s)rZ3600z-j4win32r) superrrangeNTESTr python_argsr regrtest_argsextendrplatformrr __class__rrrGs    zProgramsTestCase.setUpcCs |||j||jdddS)NT)r<)rrr)r rrrr check_outputTs zProgramsTestCase.check_outputcCs||}||dSr)rr)r r rrrr run_testsXs zProgramsTestCase.run_testscCs8tj|jd}g|j||j|j}||dS)Nz regrtest.pyrXrYrlrkrrrrr scriptr rrrtest_script_regrtest\sz%ProgramsTestCase.test_script_regrtestcCs,g|jdd|j|j}||dS)NrPtestrrrrr r rrrtest_module_testcs z!ProgramsTestCase.test_module_testcCs,g|jdd|j|j}||dS)NrPrrr rrrtest_module_regrtestis z%ProgramsTestCase.test_module_regrtestcCs,g|jdd|j|j}||dS)NrPz test.autotestrr rrrtest_module_autotestos z%ProgramsTestCase.test_module_autotestcCs0d}g|jd||j|j}||dS)Nzfrom test import autotestz-cr)r rr rrrtest_module_from_test_autotestusz/ProgramsTestCase.test_module_from_test_autotestcCs8tj|jd}g|j||j|j}||dS)Nz autotest.pyrrrrrtest_script_autotest|sz%ProgramsTestCase.test_script_autotestz$run_tests.py script is not installedcCs2tjtddd}|g|j|j}||dS)NToolsZscriptsz run_tests.py)rXrYrlROOT_DIRrrrrrrrtest_tools_script_run_testssz,ProgramsTestCase.test_tools_script_run_testscGs||}||jdSr)rrr)r r rrrr run_batchs zProgramsTestCase.run_batchz test.bat script is not installedrz Windows onlycCstjtddd}d|jg}tdkr6|dn2tdkrN|dntd d krh|d t sv|d |j |g||j RdS) Nr&Zbuildbotztest.batr ARM64-arm64ARM-arm32r64bit-x64z+d) rXrYrlr'rrmachiner architecturePy_DEBUGr)r)r rZ test_argsrrrtest_tools_buildbot_tests       z)ProgramsTestCase.test_tools_buildbot_testcCstjtd}tj|s,|d|ddg}tdkrJ|dn2tdkrb|dnt d d kr||d t r|d |j |g||j |j RdS) NzPCbuild\rt.batzFile "z" does not existr3r*r+r,r-rr.r/z-d)rXrYrlr'isfilerrr0rr1r2r)rr)r rZrt_argsrrrtest_pcbuild_rts       z ProgramsTestCase.test_pcbuild_rt)rrrrrrrrr!r"r#r$r%unittest skipUnlessrrr(r)rrr3r5 __classcell__rrrrr?s,     rc@s(eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZeedddZeedddZddZd d!Zejd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Z d4d5Z!d6d7Z"ejd8d9Z#d:d;Z$dd?Z&d@S)A ArgsTestCasecOs&ddd|jg|}|j|fi|S)NrPrr )rr)r ZtestargsrcmdargsrrrrszArgsTestCase.run_testscCsNtd}|d}|jd|d}||g}|j|ddi}|j|||ddS)Nz import unittest class FailingTest(unittest.TestCase): def test_failing(self): self.fail("bug") okZfailingrrrzrrrrrr)r rZtest_okZ test_failingrrrrrtest_failing_tests   zArgsTestCase.test_failing_testcCsi}dD]"}td|}|||||<qt|}|jddg|R}||||jdg|R}|j|||dd|j|}|j|||ddS)N)Zaudiorea from test import support; support.requires(%r) import unittest class PassingTest(unittest.TestCase): def test_pass(self): pass rdallz-uaudiore)r)rrrrvaluesrr)r rresourcerZ test_namesrrrrtest_resourcess"   zArgsTestCase.test_resourcesc Cstd}|d|}|d|}||}|d|}t|d}|dd||}||}||||d|}t|d}|||dS)Nza import random print("TESTRANDOM: %s" % random.randint(1, 1000)) randomr;zTESTRANDOM: ([0-9]+)r*z --randseed=%s) rrrrrrrrr) r rrrrrQ test_randomZ randseed2Z test_random2rrrrEs        zArgsTestCase.test_randomc sfddtdD}tj}tj|t|d\}d}t|dD]<\}}d||t||f}|rp|d|7}t||d|}qDWdn1s0Y d |} ||t|d>}t|dD]"\}}td |t||f|dqWdn1s0Y d |} ||t|d(}|D]}t||dq:Wdn1sd0Y d |} ||t|d,}|D]}td ||dqWdn1s0Y d |} ||dS) Ncsg|] }qSrr r rrrr rz.ArgsTestCase.test_fromfile..rrrKr*z00:00:%02i [%s/%s] %sz -- %s took 0 secrMrAz [%s/%s] %szLib/test/%s.py) rrrUrSrTrV enumeraterrWrr) r rr]r\Zpreviousr rlinerrrrrEs<   $   <   0   4 zArgsTestCase.test_fromfilecCs6t}|jd|d}|j|dd}|j|||dddS)Nsigintr<rTrr)TEST_INTERRUPTEDrrrr rrrrrrtest_interrupted.s  zArgsTestCase.test_interruptedcsVfddtdD}jdg|R}||djt|f}||dS)Ncsg|] }qSrr r rrrr 7rz-ArgsTestCase.test_slowest..r+r7z#10 slowest tests: (?:- %s: .* ){%s})rrrrrr)r rrrrrrr85s  zArgsTestCase.test_slowestc Cst}|jd|d}dD]z}|j|dZ|r8dd|f}nd|f}|j|ddi}|j|||d d d }|||Wdq1s0YqdS) NrHr<)FT)multiprocessingr7-j2rrITrKz10 slowest tests: )rLrrrrr)r rrrOr rrrrrtest_slowest_interrupted?s z%ArgsTestCase.test_slowest_interruptedcCs8|d}|d|}|||gd}|||dS)NZcoverager~zLlines +cov% +module +\(path\)\n(?: *[0-9]+ *[0-9]{1,2}% *[^ ]+ +\([^)]+\)+)+)rrrr)r rrrrrrrQs   zArgsTestCase.test_coveragecCs*|d}|jd|dd}||ddS)Nr"r key)rzPress any key to continue)rrr)r rrrrrr#Zs zArgsTestCase.test_waitcCsBtd}|jd|d}|jd|dd}|j||gd|ddS) NaL import builtins import unittest class ForeverTester(unittest.TestCase): def test_run(self): # Store the state in the builtins module, because the test # module is reload at each run if 'RUN' in builtins.__dict__: builtins.__dict__['RUN'] += 1 if builtins.__dict__['RUN'] >= 3: self.fail("fail at the 3rd runs") else: builtins.__dict__['RUN'] = 1 rr<rrzrJr+r=r>rMrrrr`s zArgsTestCase.test_foreverc Cs|jd|d}d}|tj||jdd|dtjd}|j||g|dd }||t |d ||f}| ||t |$}| } | || Wdn1s0YdS) Nrwr<rtrpz3:3:rz)rrr=z&beginning 6 repetitions 123456 ...... z%s leaked [1, 1, 1] %s, sum=3 )rrSrrTrrrrrrrr rVread) r rZwhatrr]rrGZline2r\Zreflogrrr check_leakus    zArgsTestCase.check_leakzneed a debug buildcCstd}||ddS)Nz import unittest GLOBAL_LIST = [] class RefLeakTest(unittest.TestCase): def test_leak(self): GLOBAL_LIST.append(object()) Z referencesrrrTr rrrrrxs zArgsTestCase.test_huntrleakscCstd}||ddS)Na import os import unittest class FDLeakTest(unittest.TestCase): def test_leak(self): fd = os.open(__file__, os.O_RDONLY) # bug: never close the file descriptor zfile descriptorsrUrVrrrtest_huntrleaks_fd_leaks z$ArgsTestCase.test_huntrleaks_fd_leakcs@fddtdD}jdg|R}||dS)Ncsg|] }qSrr )rirrrr rz0ArgsTestCase.test_list_tests..rrr)rrrrstripr)r rrrrrtest_list_testss zArgsTestCase.test_list_testscCsptd}|j|d}d|d|g}|d|}|||d|g}|ddd|}|||dS)Nz import unittest class Tests(unittest.TestCase): def test_method1(self): pass def test_method2(self): pass r<z%s.Tests.test_method1z%s.Tests.test_method2z --list-casesrP test_method1)rrrrrr)r rtestname all_methodsrrrrtest_list_casess   zArgsTestCase.test_list_casescCsFd}|jd|d}|g}|jdg|Rddi}|j|||dddS) Nz,import faulthandler; faulthandler._sigsegv()Zcrash)rrrPrrzT)rr<)rrr)r rZ crash_testrrrrr test_crasheds zArgsTestCase.test_crashedcCs$tjdtjd}dd||DS)Nz^(test[^ ]+).*ok$)flagscSsg|]}|dqS)r*rrrrrr rz.ArgsTestCase.parse_methods..)rrrrrrrr parse_methodsszArgsTestCase.parse_methodsc Cstd}gd}|j|d}tj}|tj|dd|g}t|d&}|D]}t||dqNWdn1st0Y| dd ||}| |} d d g}| | |dS) NV import unittest class Tests(unittest.TestCase): def test_method1(self): pass def test_method2(self): pass def test_method3(self): pass def test_method4(self): pass r[ test_method2 test_method3 test_method4r<r[%s.Tests.test_method3rKrMr)rRrdrf) rrrrrUrSrTrVrWrrar) r rr]r\r]subsetr\rrmethodsrrrtest_ignorefiles   , zArgsTestCase.test_ignorefilec Cstd}gd}|j|d}|d|}||}|||tj}|tj |dd|g}t |d&}|D]} t | |dqpWdn1s0Y|dd ||}||}dd g}|||dS) Nrbrcr<r)r[rgrKrMrare) rrrrrarrrUrSrTrVrW) r rr]r\rrir]rhr\rrrrtest_matchfiles$      , zArgsTestCase.test_matchfilecCsZtd}|j|d}||}|j||g|d|jd|dd}|j||g|dddS) Nz import unittest class Tests(unittest.TestCase): def test_env_changed(self): open("env_changed", "w").close() r<)r--fail-env-changedr+rJTrrr>r rr\rrrrtest_env_changed"s    zArgsTestCase.test_env_changedcCs>td}|j|d}|jd|dd}|j||g||ddS)Nz import unittest class Tests(unittest.TestCase): def test_bug(self): # test always fail self.fail("bug") r<r/rzrJ)rrr>rnrrrtest_rerun_fail5s    zArgsTestCase.test_rerun_failcCs<td}|j|d}|jd|dd}|j||g|ddS)NaT import builtins import unittest class Tests(unittest.TestCase): failed = False def test_fail_once(self): if not hasattr(builtins, '_test_failed'): builtins._test_failed = True self.fail("bug") r<r/rrJ)rr>rnrrrtest_rerun_successEs   zArgsTestCase.test_rerun_successcCs>td}|j|d}|j|dddd}|j||g|ddSN import unittest class Tests(unittest.TestCase): def test_bug(self): pass r<rP nosuchtestrrJrr>rnrrrtest_no_tests_ranYs  zArgsTestCase.test_no_tests_rancCs6td}|j|d}|j|dd}|||gdS)Nz import unittest class Tests(unittest.TestCase): def test_skipped(self): self.skipTest("because") r<rrJr>rnrrrtest_no_tests_ran_skipfs  z#ArgsTestCase.test_no_tests_ran_skipcCsRtd}|j|d}|j|d}|j||dddd}|j|||g||gddSrrr>)r rr\ testname2rrrr,test_no_tests_ran_multiple_tests_nonexistentss    z9ArgsTestCase.test_no_tests_ran_multiple_tests_nonexistentc Cs^td}|j|d}td}|j|d}|j||dddddd}|j|||g|gd dS) Nrsr<z import unittest class Tests(unittest.TestCase): def test_other_bug(self): pass rPrtZtest_other_bugrrJrur>)r rr\Z other_coderxrrrr)test_no_test_ran_some_test_exist_some_nots      z6ArgsTestCase.test_no_test_ran_some_test_exist_some_notcCsftd}|j|d}|jd|dd}|j||g|gdd|jd|dd}|j||g|gdddS) Na import _testcapi import gc import unittest @_testcapi.with_tp_del class Garbage: def __tp_del__(self): pass class Tests(unittest.TestCase): def test_garbage(self): # create an uncollectable object obj = Garbage() obj.ref_cycle = obj obj = None r<rlr+rJTrmz --findleaksr>rnrrrtest_findleakss    zArgsTestCase.test_findleakscCsXtd}|j|d}|jdd|dd}|j||g|d||td|tjdS) Naa import time import unittest try: import faulthandler except ImportError: faulthandler = None class Tests(unittest.TestCase): # test hangs and so should be stopped by the timeout def test_sleep(self): # we want to test regrtest multiprocessing timeout, # not faulthandler timeout if faulthandler is not None: faulthandler.cancel_dump_traceback_later() time.sleep(60 * 5) r<rPz --timeout=1.0rzrJr=z %s timed out) rrrrrrrrrrnrrrtest_multiprocessing_timeouts   z)ArgsTestCase.test_multiprocessing_timeoutcCsZtd}|j|d}|jdd|dd}|j||g|gdd|d ||d |dS) Na import unittest import weakref from test.support import captured_stderr class MyObject: pass def weakref_callback(obj): raise Exception("weakref callback bug") class Tests(unittest.TestCase): def test_unraisable_exc(self): obj = MyObject() ref = weakref.ref(obj, weakref_callback) with captured_stderr() as stderr: # call weakref_callback() which logs # an unraisable exception obj = None self.assertEqual(stderr.getvalue(), '') r<rlr)r+rJTrmzWarning -- Unraisable exceptionzException: weakref callback bug)rrrrrr rnrrrtest_unraisable_excs    z ArgsTestCase.test_unraisable_exccCs~tj|jd}t|tj|jd}t|d||g}ddd|jdg}|||D]}|tj ||q`dS)NZtest_python_123Ztest_python_456wbrPrz --tempdir=%sz --cleanup) rXrYrlrmkdirrVcloserZ assertFalseexists)r rr]rr:rrrr test_cleanups  zArgsTestCase.test_cleanupN)'rrrrr?rCrErErNr8rQrr#rrTr6r7r2rxrWrZr^rZ cpython_onlyr_rarjrkrorprqrvrwryrzr{r|r}rrrrrr9sF0      $)   !r9c@seZdZddZdS) TestUtilscCs|tdd|tdd|tdd|tdd|td d |td d |td d|tdd|tdd|tdddS)Nrz0 msg& .>z1 msg{Gz?z10 msg?z1.5 secr*z1.0 secxz2 minyz 2 min 1 seci0*z3 houri*z 3 hour 2 mini1*z 3 hour 1 sec)rrZformat_durationrrrrtest_format_durations<          zTestUtils.test_format_durationN)rrrrrrrrrsr__main__)'rrrZos.pathrXrrrrrrrr6rrrZtest.libregrtestrhasattrr2rYrlrrr'rZnormpathrrrLZTestCaserrrrr9rrmainrrrrsD     @BrX