a zeC@sPdZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlmZddlmZddlmZee dZejejeddZejejeZdZe d ZGd d d ej Z!Gd d d ej Z"Gddde"Z#Gddde"Z$Gddde"Z%Gdddej Z&e'dkrLe(dS)zM Tests of regrtest.py. Note: test_regrtest cannot be run twice in parallel. 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@sPeZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;Z dd?Z"d@dAZ#dBdCZ$dDdEZ%dFdGZ&dHdIZ'dJdKZ(dLdMZ)dNdOZ*dPdQZ+dRS)SParseArgsTestCasezC Test regrtest's argument parsing, function _parse_args(). c CsptD}|tt|Wdn1s40YWdn1sR0Y|||dSN)rZcaptured_stderr assertRaises SystemExitr _parse_argsassertIngetvalue)selfargsmsgerrrF/opt/bitninja-python-dojo/embedded/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_help2s HzParseArgsTestCase.test_helpcCs>tddg}||jd|dgd|ddgddS)N --timeoutz4.2g@expected one argumentfoozinvalid float value)rr assertEqualtimeoutrr nsrrr test_timeout:szParseArgsTestCase.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_argsDsz"ParseArgsTestCase.test_worker_argsc CsddD]Z}|j|d:t|dg}||jd||gdWdq1sT0YqdS)N)z-S--startrrr)rrr rstartrr rrrrr test_startIs zParseArgsTestCase.test_startcCstdg}||jdtdg}||jdtdg}||jdtdgd}||jdtg}||jddS)N-vz-vvv --verboser)rr rverboserrrr test_verbosePs    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_verbose3bs zParseArgsTestCase.test_verbose3c Cs`dD]V}|j|d6t|g}||j||jdWdq1sP0YqdS)N)-q--quietrr)rrr r!quietrr-r'rrr test_quieths   zParseArgsTestCase.test_quietc CsRdD]H}|j|d(t|g}||jWdq1sB0YqdS)N)z-o --slowestr)rrr r!Z print_slowr'rrr test_slowestos zParseArgsTestCase.test_slowestcCs4tdg}||jtdg}||jdS)Nz--headerr,)rr r!headerrrrr test_headerus   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_nowindows1s* z ParseArgsTestCase.test_nowindowsc CsRdD]H}|j|d(t|g}||jWdq1sB0YqdS)N)z-F --foreverr)rrr r!foreverr'rrr test_forever:s 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__partialCs  z+ParseArgsTestCase.test_long_option__partialcCs8tddg}||j||jd||jdS)Nr4rFr)rr r!r5rr-rGrrrrtest_two_optionsHs z"ParseArgsTestCase.test_two_optionscCs tddg}||jddS)Nr%)rr rr&rrrr#test_option_with_empty_string_valueNsz5ParseArgsTestCase.test_option_with_empty_string_valuecCs tdg}||jdgdS)Nr)rr rr rrrrtest_argRs zParseArgsTestCase.test_argcCs<tddg}||j||jd||jdgdS)Nr4rr)rr r!r5rr-r rrrrtest_option_and_argVs 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_optionasz%ParseArgsTestCase.test_unknown_optionN),__name__ __module__ __qualname____doc__rrrr#r$r(r.r0r2r6r8r:r=r?rErHrIr^rbrcrhrjrnrorxr}rrrrrrrrrrrrrrrrrrr(sR    rc @sxeZdZdZdZdZddZdddZd d Zd d Z d dZ ddddiddddf ddZ ddZ dddZ ddZdS) BaseTestCaser*Ztest_regrtest_ztest_[a-zA-Z0-9_]+cCs4tjtjt|_t|_| t j |jdSr) rXrYrealpathdirname__file__rktempfilemkdtemp tmptestdirrSrrmtreerrrrsetUpks 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}||} | r|t| t||n|| ||ddfdd} |r| d|}||||r| d|}||||r| d|}||||r| d|}||||r|| d |}|||td }||||D],\}}td |d |d }|||qN|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 mode \(matching: z\)z%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) isinstancestrrrsetrkeysritemsrappendanyrl)r rrskippedfailed env_changedomittedrerun no_test_ranr< interruptedfail_env_changedZexecutedrrrrQZgoodresultrrrcheck_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_pythonszBaseTestCase.run_python)NN)Nr)rrrrrrrrrrrrrrrrrrrrfs"  ^ rc@seZdZddZdS)CheckActualTestscCstgd}||}t|}tjttjt d}tt|}|j ||dddd|ddS) zP Check that regrtest appears to find the expected set of tests. )-Wd-E-bbrP test.regrtest --list-testsztest*.py z+Unexpectedly low number of tests found in: r)rN) 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)rrrr rrrrr%srcseZdZdZdZfddZddZddZd d Zd d Z d dZ ddZ ddZ ddZ eedddZddZeedeejdkdddZeejdkddd ZZS)!ProgramsTestCasezp Test various ways to run the Python test suite. Use options close to options used on the buildbot. rscsftfddtjD_gd_dddjg_jdt j dkrbj d dS) Ncsg|] }qSrrrindexrrr Irz*ProgramsTestCase.setUp..)rrrz-uallz-rwW --testdir=%s)rZ3600z-j4win32r) superrrangeNTESTr python_argsr regrtest_argsextendrplatformrr __class__rrrEs    zProgramsTestCase.setUpcCs |||j||jdddS)NT)r<)rrr)r rrrr check_outputRs zProgramsTestCase.check_outputcCs||}||dSr)rr)r r rrrr run_testsVs zProgramsTestCase.run_testscCs8tj|jd}g|j||j|j}||dS)Nz regrtest.pyrXrYrlrkrrrrr scriptr rrrtest_script_regrtestZsz%ProgramsTestCase.test_script_regrtestcCs,g|jdd|j|j}||dS)NrPtestrrrrr r rrrtest_module_testas z!ProgramsTestCase.test_module_testcCs,g|jdd|j|j}||dS)NrPrr"r#rrrtest_module_regrtestgs z%ProgramsTestCase.test_module_regrtestcCs,g|jdd|j|j}||dS)NrPz test.autotestr"r#rrrtest_module_autotestms z%ProgramsTestCase.test_module_autotestcCs0d}g|jd||j|j}||dS)Nzfrom test import autotestz-cr")r rr rrrtest_module_from_test_autotestssz/ProgramsTestCase.test_module_from_test_autotestcCs8tj|jd}g|j||j|j}||dS)Nz autotest.pyrrrrrtest_script_autotestzsz%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.batrARM64-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/r0rr1r2z-d)rXrYrlr*isfilerrr3rr4r5r,rr)r rZrt_argsrrrtest_pcbuild_rts       z ProgramsTestCase.test_pcbuild_rt)rrrrrrrrr r$r%r&r'r(unittest skipUnlessrrr+r,rrr6r8 __classcell__rrrrr =s.     r c@s,eZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZeedddZeedddZdd Zd!d"Zejd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Z d3d4Z!d5d6Z"d7d8Z#ejd9d:Z$d;d<Z%d=d>Z&d?d@Z'dAS)B ArgsTestCasez2 Test arguments of the Python test suite. cOs&ddd|jg|}|j|fi|S)NrPr!r)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 rr!rrrQ test_randomZ randseed2Z test_random2rrrrHs        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 rrrrrz.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\ZpreviousrrlinerrrrrEs<   $   <   0   4 zArgsTestCase.test_fromfilecCs6t}|jd|d}|j|dd}|j|||dddS)Nsigintr?rTrr)TEST_INTERRUPTEDrrrr rr!rrrrtest_interrupted,s  zArgsTestCase.test_interruptedcsVfddtdD}jdg|R}||djt|f}||dS)Ncsg|] }qSrr r rrrr5rz-ArgsTestCase.test_slowest..r+r7z#10 slowest tests: (?:- %s: .* ){%s})rrrrrr)r rrrrrrr83s  zArgsTestCase.test_slowestc Cst}|jd|d}dD]z}|j|dZ|r8dd|f}nd|f}|j|ddi}|j|||d d d }|||Wdq1s0YqdS) NrKr?)FT)multiprocessingr7-j2rrLTrNz10 slowest tests: )rOrrrrr)r rr!rRr 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 r!rrrrrrOs   zArgsTestCase.test_coveragecCs*|d}|jd|dd}||ddS)Nr"r key)rzPress any key to continue)rrr)r r!rrrrr#Xs 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?rrzrMr+r@rArPrrrr^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 )rrSrrTrrrrrrr r rVread) r rZwhatr!r]rrJZline2r\Zreflogrrr check_leakss    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 referencesrrrWr 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 descriptorsrXrYrrrtest_huntrleaks_fd_leaks z$ArgsTestCase.test_huntrleaks_fd_leakcs@fddtdD}jdg|R}||dS)Ncsg|] }qSrr )rirrrrrz0ArgsTestCase.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)rrrSrrzT)rr<)rrr)r rZ crash_testrrrrr test_crasheds zArgsTestCase.test_crashedcCs$tjdtjd}dd||DS)Nz^(test[^ ]+).*ok$)flagscSsg|]}|dqS)r*rrrrrrrz.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)rRrgri) rrrrrUrSrTrVrWrrdr) 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) Nrerfr?r)r^rjrKrMrarh) rrrrrdrrrUrSrTrVrW) r rr`r_rrlr]rkr\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+rMTrrrAr rr_rrrrtest_env_changed s    zArgsTestCase.test_env_changedcCsBtd}|j|d}|jd|dd}|j||g||diddS)Na import unittest class Tests(unittest.TestCase): def test_succeed(self): return def test_fail_always(self): # test that always fails self.fail("bug") r?r/rzrMZtest_fail_always)rrrArqrrrtest_rerun_fail3s   zArgsTestCase.test_rerun_failcCs@td}|j|d}|jd|dd}|j||g|diddS)Nax import builtins import unittest class Tests(unittest.TestCase): def test_succeed(self): return def test_fail_once(self): if not hasattr(builtins, '_test_failed'): builtins._test_failed = True self.fail("bug") r?r/rrMZtest_fail_once)rrArqrrrtest_rerun_successFs   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 nosuchtestrrMrrArqrrrtest_no_tests_ran[s  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?rrMrArqrrrtest_no_tests_ran_skiphs  z#ArgsTestCase.test_no_tests_ran_skipcCsRtd}|j|d}|j|d}|j||dddd}|j|||g||gddSrurA)r rr_ testname2rrrr,test_no_tests_ran_multiple_tests_nonexistentus    z9ArgsTestCase.test_no_tests_ran_multiple_tests_nonexistentc Cs^td}|j|d}td}|j|d}|j||dddddd}|j|||g|gd dS) Nrvr?z import unittest class Tests(unittest.TestCase): def test_other_bug(self): pass rPrwZtest_other_bugrrMrxrA)r rr_Z other_coder{rrrr)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?ror+rMTrpz --findleaksrArqrrrtest_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?rSz --timeout=1.0rzrMr@z %s timed out) rrrrrrrrrrqrrrtest_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?ror)r+rMTrpzWarning -- Unraisable exceptionzException: weakref callback bug)rrrrrr rqrrrtest_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_456wbrPr!z --tempdir=%sz --cleanup) rXrYrlrmkdirrVcloserZ assertFalseexists)r rr]rr=rrrr test_cleanups  zArgsTestCase.test_cleanupN)(rrrrrrBrFrHrErQr8rTrr#rrWr9r:r5rxrZr]rarZ cpython_onlyrbrdrmrnrrrsrtryrzr|r}r~rrrrrrrr<sH0      $)   !r<c@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__))rrrrZos.pathrXrrrrrrrtimer9r!rrZtest.libregrtestrhasattrr5rYrlrrr*rZnormpathrrrOZTestCaserrrr r<rrmainrrrrsH     @@r\