a 5êdg§¾ã@sHdZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlmZddlmZddlmZee dƒZej ej e¡dd¡Zej ej e¡¡ZdZe  d ¡ZGd d „d e jƒZ Gd d „d e jƒZ!Gdd„de!ƒZ"Gdd„de!ƒZ#Gdd„de!ƒZ$Gdd„de jƒZ%e&dkrDe  '¡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@sPeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Zd6d7„Zd8d9„Zd:d;„Z dd?„Z"d@dA„Z#dBdC„Z$dDdE„Z%dFdG„Z&dHdI„Z'dJdK„Z(dLdM„Z)dNdO„Z*dPdQ„Z+dRS)SÚParseArgsTestCasezC Test regrtest's argument parsing, function _parse_args(). c Cspt ¡D}| t¡t |¡Wdƒn1s40YWdƒn1sR0Y| || ¡¡dS©N)rZcaptured_stderrÚ assertRaisesÚ SystemExitrÚ _parse_argsÚassertInÚgetvalue)ÚselfÚargsÚmsgÚerr©rú./usr/local/lib/python3.9/test/test_regrtest.pyÚ checkError,sFzParseArgsTestCase.checkErrorc Cs¨dD]ž}|j|d~t ¡F}| t¡t |g¡Wdƒn1sL0YWdƒn1sj0Y| d| ¡¡Wdƒq1s˜0YqdS)N)z-hz--help©ÚoptzRun Python regression tests.) ÚsubTestrZcaptured_stdoutrrrr r r )r rÚoutrrrÚ test_help1s ÿHzParseArgsTestCase.test_helpcCs>t ddg¡}| |jd¡| dgd¡| ddgd¡dS)Nú --timeoutz4.2gÍÌÌÌÌÌ@úexpected one argumentÚfoozinvalid float value)rr Ú assertEqualÚtimeoutr©r ÚnsrrrÚ test_timeout9szParseArgsTestCase.test_timeoutcCst dg¡}| |j¡dS)Nú--wait)rr Ú assertTrueÚwaitrrrrÚ test_wait?s zParseArgsTestCase.test_waitcCs.t ddg¡}| |jd¡| dgd¡dS)Nz --worker-argsz[[], {}]r)rr rZ worker_argsrrrrrÚtest_worker_argsCsz"ParseArgsTestCase.test_worker_argsc CsddD]Z}|j|d:t |dg¡}| |jd¡| |gd¡Wdƒq1sT0YqdS)N)z-Sú--startrrr)rrr rÚstartr©r rrrrrÚ test_startHs zParseArgsTestCase.test_startcCsˆt dg¡}| |jd¡t dg¡}| |jd¡t dg¡}| |jd¡t dgd¡}| |jd¡t g¡}| |jd¡dS)Nú-véz-vvvéú --verboser)rr rÚverboserrrrÚ test_verboseOs    zParseArgsTestCase.test_verbosec CsRdD]H}|j|d(t |g¡}| |j¡Wdƒq1sB0YqdS)N)ú-wz --verbose2r)rrr r!Zverbose2r'rrrÚ test_verbose2[s zParseArgsTestCase.test_verbose2c CsRdD]H}|j|d(t |g¡}| |j¡Wdƒq1sB0YqdS)N)ú-Wz --verbose3r)rrr r!Zverbose3r'rrrÚ test_verbose3as zParseArgsTestCase.test_verbose3c Cs`dD]V}|j|d6t |g¡}| |j¡| |jd¡Wdƒq1sP0YqdS)N)ú-qú--quietrr)rrr r!Úquietrr-r'rrrÚ test_quietgs   zParseArgsTestCase.test_quietc CsRdD]H}|j|d(t |g¡}| |j¡Wdƒq1sB0YqdS)N)z-oú --slowestr)rrr r!Z print_slowr'rrrÚ test_slowestns zParseArgsTestCase.test_slowestcCs4t dg¡}| |j¡t dg¡}| |j¡dS)Nz--headerr,)rr r!ÚheaderrrrrÚ test_headerts   zParseArgsTestCase.test_headerc CsRdD]H}|j|d(t |g¡}| |j¡Wdƒq1sB0YqdS)N)ú-rz --randomizer)rrr r!Ú randomizer'rrrÚtest_randomize{s z ParseArgsTestCase.test_randomizecCsJt ddg¡}| |jd¡| |j¡| dgd¡| ddgd¡dS)Nz --randseedZ12345i90rrúinvalid int value)rr rZ random_seedr!r<rrrrrÚ test_randseeds  zParseArgsTestCase.test_randseedc CsvdD]l}|j|dLt |dg¡}| |jd¡| |gd¡| |ddgd¡Wdƒq1sf0YqdS)N)ú-fú --fromfilerrrú-súdon't go together)rrr rÚfromfilerr'rrrÚ test_fromfileˆs zParseArgsTestCase.test_fromfilec CsRdD]H}|j|d(t |g¡}| |j¡Wdƒq1sB0YqdS)N)z-xú --excluder)rrr r!Úexcluder'rrrÚ test_excludes zParseArgsTestCase.test_excludec CsddD]Z}|j|d:t |g¡}| |j¡| |ddgd¡Wdƒq1sT0YqdS)N)rBz--singlerr@rrC)rrr r!Zsinglerr'rrrÚ test_single–s   zParseArgsTestCase.test_singlec CsìdD]\}|j|d<t |dg¡}| |jdg¡| |gd¡Wdƒq1sV0Yq| tjtj ¡t tj dƒ(}t d|dt d|dWdƒn1s¬0Yt j  tj ¡}t d d d |g¡}| |jddg¡dS) N)z-iz--ignorerÚpatternrÚwÚ matchfile1©ÚfileÚ matchfile2ú-mÚmatchú --ignorefile)rrr rZ ignore_testsrÚ addCleanuprÚunlinkÚTESTFNÚopenÚprintÚosÚpathÚabspath©r rrÚfpÚfilenamerrrÚ test_ignores . *ÿÿzParseArgsTestCase.test_ignorec Cs dD]\}|j|d<t |dg¡}| |jdg¡| |gd¡Wdƒq1sV0Yqt gd¢¡}| |jddg¡| tjtj ¡t tj dƒ(}t d |d t d |d Wdƒn1sÌ0Yt j  tj ¡}t d d d|g¡}| |jgd¢¡dS)N)rPz--matchrrJr)rPÚpattern1rPÚpattern2r_r`rKrLrMrOrPrQú --matchfile)rQrLrO)rrr rZ match_testsrrSrrTrUrVrWrXrYrZr[rrrÚ test_match¯s$. *ÿÿzParseArgsTestCase.test_matchc Cs|dD]r}|j|dRt |dg¡}| |j¡t |dg¡}| |j¡| |gd¡Wdƒq1sl0YqdS)N)z-Gz --failfastrr)r1z#-G/--failfast needs either -v or -W)rrr r!Zfailfastrr'rrrÚ test_failfastÅs  zParseArgsTestCase.test_failfastc CsdD]}|j|dât |dg¡}| |jddg¡t |dg¡}| |jdg¡ttjƒ}| d¡t |dg¡}| |j|¡| |gd¡| |d gd ¡t |d g¡}| |jttjƒd g¡t |d g¡}| |jd g¡Wdƒq1sþ0YqdS)N)ú-uz--userz gui,networkZguiÚnetworkzgui,none,networkzall,-guirrzinvalid resourcez all,tzdataZtzdataZextralargefile) rrr rZ use_resourcesÚlistZ ALL_RESOURCESÚremover)r rrZexpectedrrrÚtest_useÎs$   ÿzParseArgsTestCase.test_usec CsddD]Z}|j|d:t |dg¡}| |jd¡| |gd¡Wdƒq1sT0YqdS)N)z-Mz --memlimitrZ4Gr)rrr rÚmemlimitrr'rrrÚ test_memlimitçs zParseArgsTestCase.test_memlimitcCs:t ddg¡}| |jtj tjd¡¡|  dgd¡dS)Nz --testdirrr) rr rÚtestdirrXrYÚjoinrÚSAVEDCWDrrrrrÚ test_testdirîszParseArgsTestCase.test_testdirc CsRdD]H}|j|d(t |g¡}| |j¡Wdƒq1sB0YqdS)N)z-Lz --runleaksr)rrr r!Zrunleaksr'rrrÚ test_runleaksós zParseArgsTestCase.test_runleaksc CsèdD]Þ}|j|d¾t |dg¡}| |jd¡t |dg¡}| |jd¡t |dg¡}| |jd¡t |d g¡}| |jd ¡| |gd ¡| |d gd ¡| |dgd¡| |dgd¡Wdƒq1sØ0YqdS)N)z-Rú --huntrleaksrú:)ééú reflog.txtz6:)érsrtz:3)rrr+rtz 6:3:leaks.log)rur+z leaks.logrÚ6z&needs 2 or 3 colon-separated argumentszfoo:zinvalid huntrleaks valuez6:foo)rrr rÚ huntrleaksrr'rrrÚtest_huntrleaksùs  ÿz!ParseArgsTestCase.test_huntrleaksc Cs˜dD]Ž}|j|dnt |dg¡}| |jd¡| |gd¡| |dgd¡| |ddgd ¡| |d dgd ¡Wdƒq1sˆ0YqdS) N)z-jz--multiprocessrÚ2érrr>ú-TrCÚ0)rrr rZuse_mprr'rrrÚtest_multiprocess sz#ParseArgsTestCase.test_multiprocessc CsRdD]H}|j|d(t |g¡}| |j¡Wdƒq1sB0YqdS)N)r{ú --coverager)rrr r!Ztracer'rrrÚ test_coverages zParseArgsTestCase.test_coveragec CspdD]f}|j|dFt |dg¡}| |jtj tj d¡¡|  |gd¡Wdƒq1s`0YqdS)N)z-Dz --coverdirrrr) rrr rÚcoverdirrXrYrlrrmrr'rrrÚ test_coverdirsÿzParseArgsTestCase.test_coverdirc CsRdD]H}|j|d(t |g¡}| |j¡Wdƒq1sB0YqdS)N)z-Nz --nocoverdirr)rrr Z assertIsNoner€r'rrrÚtest_nocoverdir"s z!ParseArgsTestCase.test_nocoverdirc CstdD]j}|j|dJt |dg¡}| |jd¡| |gd¡| |dgd¡Wdƒq1sd0YqdS)N)z-tz --thresholdrZ1000ièrrr>)rrr rZ thresholdrr'rrrÚtest_threshold(s z ParseArgsTestCase.test_thresholdc Cs”dD]Š}|j|djt t ¡¡}t |g¡}Wdƒn1sF0Y| |j¡|  ¡}|  d|¡Wdƒq1s„0YqdS)N)ú-nz --nowindowsrz)the --nowindows (-n) option is deprecated) rÚ contextlibÚredirect_stderrÚioÚStringIOrr r!Z nowindowsr r )r rÚstderrrrrrrÚtest_nowindows0s* z ParseArgsTestCase.test_nowindowsc CsRdD]H}|j|d(t |g¡}| |j¡Wdƒq1sB0YqdS)N)z-Fú --foreverr)rrr r!Úforeverr'rrrÚ test_forever9s zParseArgsTestCase.test_forevercCs| dgd¡dS)Nz--xxxzusage:©r©r rrrÚtest_unrecognized_argument?sz,ParseArgsTestCase.test_unrecognized_argumentcCs*t dg¡}| |j¡| |jd¡dS)Nz--quir)rr r!r5rr-rrrrÚtest_long_option__partialBs  z+ParseArgsTestCase.test_long_option__partialcCs8t ddg¡}| |j¡| |jd¡| |j¡dS)Nr4rFr)rr r!r5rr-rGrrrrÚtest_two_optionsGs z"ParseArgsTestCase.test_two_optionscCs t ddg¡}| |jd¡dS)Nr%Ú)rr rr&rrrrÚ#test_option_with_empty_string_valueMsz5ParseArgsTestCase.test_option_with_empty_string_valuecCs t dg¡}| |jdg¡dS)Nr)rr rr rrrrÚtest_argQs zParseArgsTestCase.test_argcCs<t ddg¡}| |j¡| |jd¡| |jdg¡dS)Nr4rr)rr r!r5rr-r rrrrÚtest_option_and_argUs z%ParseArgsTestCase.test_option_and_argcCs2t gd¢¡}| |jd¡| |jddg¡dS)N)Ú test_unaryopr)Ú test_binopr*r—r˜)rr rr-r rrrrÚtest_arg_option_arg[sz%ParseArgsTestCase.test_arg_option_argcCs| dgd¡dS)Nz--unknown-optionz(unrecognized arguments: --unknown-optionrŽrrrrÚtest_unknown_option`sÿz%ParseArgsTestCase.test_unknown_optionN),Ú__name__Ú __module__Ú __qualname__Ú__doc__rrrr#r$r(r.r0r2r6r8r:r=r?rErHrIr^rbrcrhrjrnrorxr}rrr‚rƒrŠrrr‘r’r”r•r–r™ršrrrrr'sR    rc @sfeZdZdZdZdZdd„Zddd„Zd d „Zd d „Z d d„Z ddd„Z dd„Z ddd„Z dd„ZdS)Ú BaseTestCaser*Ztest_regrtest_ztest_[a-zA-Z0-9_]+cCs4tj tj t¡¡|_t ¡|_|  t j |j¡dSr) rXrYÚrealpathÚdirnameÚ__file__rkÚtempfileÚmkdtempÚ tmptestdirrSrÚrmtreerrrrÚsetUpjs zBaseTestCase.setUpNc CsÜ|sdtj}tjd7_|dur.t d¡}|j|}tj |j|d¡}|  t j |¡zœóz4BaseTestCase.parse_executed_tests..)Ú LOG_PREFIXÚTESTNAME_REGEXr·Úfinditerr¹rf)r r¼r»ÚparserrrrÚparse_executed_tests˜s ÿz!BaseTestCase.parse_executed_testsrFc sÂt|tƒr|g}t|tƒr |g}t|tƒr0|g}t|tƒr@|g}t|tƒrP|g}t|tƒr`|g}t|tƒrp|g}| |¡} | r–| t| ƒt|ƒ|¡n| | ||¡dd„‰‡fdd„} |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ü|dkrüd|}| ||¡| r| |d¡g}|r0| d¡n| rF|rF| d¡| rV| d¡t |||| ||| fƒsz| d¡n|sŠ| d¡d  |¡}|r®| |d¡d|}| |d|¡dS)NcSs|dkr dSdS)Nr*Úsr“r)ÚcountrrrÚplural¸sz1BaseTestCase.check_executed_tests..pluralcs6t|ƒ}d t|ƒ¡}||ˆ|ƒf}d||f}|S)Nú z %s:\n %s$)ÚlenrlÚsorted)Z line_formatÚtestsrÏÚnamesr»©rÐrrÚ list_regex»s  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 RUNÚSUCCESSú, zTests result: FAILUREzFAILURE then %szTests result: %s) Ú isinstanceÚstrrÍrÚsetrÂrÉrÒÚappendÚanyrl)r r¼rÔÚskippedÚfailedÚ env_changedÚomittedÚrerunÚ no_test_ranr<Ú interruptedÚfail_env_changedZexecutedr×r»Z test_nameZgoodÚresultrrÖrÚcheck_executed_testsžsš             ÿ        ÿÿÿ       ÿ    z!BaseTestCase.check_executed_testscCs>| d|¡}t| d¡ƒ}| d|ko0dkn|¡|S)NzUsing random seed ([0-9]+)r*ri€–˜)r½ÚintrÄr!)r r¼rQÚrandseedrrrÚparse_random_seedþs  zBaseTestCase.parse_random_seedrcKsx|sd}d|vrtj|d<tj|fd|tjdœ|¤Ž}|j|krtdt|ƒ|j|jf}|jrj|d|j7}| |¡|S)Nr“r‰T)Úuniversal_newlinesÚinputÚstdoutz8Command %s failed with exit code %s stdout: --- %s --- z stderr: --- %s--- ) Ú subprocessÚSTDOUTÚrunÚPIPEÚ returncoderÜrïr‰rº)r r rîÚexitcodeÚkwÚprocrrrrÚ run_commands* ýü úû zBaseTestCase.run_commandcKs*tjdddg|¢}|j|fi|¤Ž}|jS)Nz-XÚ faulthandlerz-I)ÚsysÚ executablerørï)r r rör÷rrrÚ run_python szBaseTestCase.run_python)NN) rrrrrrFFF)Nr)r›rœrrªr­rÊr§r¶r½rÂrÍrérìrørürrrrrŸes" ü ` rŸc@seZdZdZdd„ZdS)ÚCheckActualTestszH Check that regrtest appears to find the expected set of tests. cCstgd¢}| |¡}t| ¡ƒ}tj t tj t ¡¡d¡}tt |¡ƒ}|j ||dddd | ¡¡›ddS)N)ú-Wdú-Eú-bbrPú test.regrtestú --list-testsztest*.pyé é z+Unexpectedly low number of tests found in: rÚ)r) rürÒÚ splitlinesrXrYrlÚglobÚescaper¡r¢Z assertGreater)r r r¼Zrough_number_of_tests_foundZactual_testsuite_globZrough_counted_test_py_filesrrrÚ#test_finds_expected_number_of_tests+s  ÿ  ÿþz4CheckActualTests.test_finds_expected_number_of_testsN)r›rœrržrrrrrrý&srýcsÈeZdZdZdZ‡fdd„Zdd„Zdd„Zd d „Zd d „Z d d„Z dd„Z dd„Z dd„Z e e ¡d¡dd„ƒZdd„Ze e ¡d¡e ejdkd¡dd„ƒƒZe ejdkd¡dd „ƒZ‡ZS)!ÚProgramsTestCasezp Test various ways to run the Python test suite. Use options close to options used on the buildbot. rscsftƒ ¡‡fdd„tˆjƒDƒˆ_gd¢ˆ_dddˆjgˆ_ˆj d¡t j dkrbˆj  d ¡dS) Ncsg|] }ˆ ¡‘qSr©r¶©rÆÚindexrrrÚ KrÈz*ProgramsTestCase.setUp..)rþrÿrz-uallz-rwWú --testdir=%s)rZ3600z-j4Úwin32r„) Úsuperr§ÚrangeÚNTESTrÔÚ python_argsr¥Ú regrtest_argsÚextendrúÚplatformrÞr©Ú __class__rrr§Gs  ÿ  zProgramsTestCase.setUpcCs | |¡|j||jdddS)NT)r<)rìrérÔ)r r¼rrrÚ check_outputTs zProgramsTestCase.check_outputcCs| |¡}| |¡dSr)rür)r r r¼rrrÚ run_testsXs zProgramsTestCase.run_testscCs8tj |jd¡}g|j¢|‘|j¢|j¢}| |¡dS)Nz regrtest.py©rXrYrlrkrrrÔr©r Úscriptr rrrÚtest_script_regrtest\sz%ProgramsTestCase.test_script_regrtestcCs,g|j¢d‘d‘|j¢|j¢}| |¡dS)NrPÚtest©rrrÔr©r r rrrÚtest_module_testcs ÿÿz!ProgramsTestCase.test_module_testcCs,g|j¢d‘d‘|j¢|j¢}| |¡dS)NrPrr r!rrrÚtest_module_regrtestis ÿÿz%ProgramsTestCase.test_module_regrtestcCs,g|j¢d‘d‘|j¢|j¢}| |¡dS)NrPz test.autotestr r!rrrÚtest_module_autotestos ÿÿz%ProgramsTestCase.test_module_autotestcCs0d}g|j¢d‘|‘|j¢|j¢}| |¡dS)Nzfrom test import autotestz-cr )r r´r rrrÚtest_module_from_test_autotestusÿÿz/ProgramsTestCase.test_module_from_test_autotestcCs8tj |jd¡}g|j¢|‘|j¢|j¢}| |¡dS)Nz autotest.pyrrrrrÚtest_script_autotest|sz%ProgramsTestCase.test_script_autotestz$run_tests.py script is not installedcCs2tj tddd¡}|g|j¢|j¢}| |¡dS)NÚToolsZscriptsz run_tests.py)rXrYrlÚROOT_DIRrrÔrrrrrÚtest_tools_script_run_tests‚sz,ProgramsTestCase.test_tools_script_run_testscGs| |¡}| |j¡dSr)rørrï)r r r÷rrrÚ run_batchŠs zProgramsTestCase.run_batchz test.bat script is not installedrz Windows onlycCs’tj tddd¡}d|jg}t ¡dkr6| d¡n2t ¡dkrN| d¡nt ¡d d krh| d ¡t sv| d ¡|j |g|¢|j ¢RŽdS) Nr'Zbuildbotztest.batrÚARM64ú-arm64ÚARMú-arm32rÚ64bitú-x64z+d) rXrYrlr(r¥rÚmachinerÞÚ architectureÚPy_DEBUGr*rÔ)r rZ test_argsrrrÚtest_tools_buildbot_testŽs       z)ProgramsTestCase.test_tools_buildbot_testcCs¬tj td¡}tj |¡s,| d|›d¡dg}t ¡dkrJ| d¡n2t ¡dkrb| d¡nt  ¡d d kr|| d ¡t rŠ| d ¡|j |g|¢|j ¢|j ¢RŽdS) NzPCbuild\rt.batzFile "z" does not existr3r+r,r-r.rr/r0z-d)rXrYrlr(Úisfiler²rr1rÞr2r3r*rrÔ)r rZrt_argsrrrÚtest_pcbuild_rtŸs       z ProgramsTestCase.test_pcbuild_rt)r›rœrržrr§rrrr"r#r$r%r&ÚunittestÚ skipUnlessr°r±r)r*rúrr4r6Ú __classcell__rrrrr ?s.  ÿ  ÿ r c@s,eZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Ze ed¡dd„ƒZe ed¡dd„ƒZdd „Zd!d"„Zejd#d$„ƒZd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Z d3d4„Z!d5d6„Z"d7d8„Z#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)NrPrr)r¥rü)r ZtestargsröÚcmdargsrrrr¶szArgsTestCase.run_testscCsNt d¡}| d¡}|jd|d}||g}|j|ddiŽ}|j|||ddS)Nz¥ import unittest class FailingTest(unittest.TestCase): def test_failing(self): self.fail("bug") ÚokZfailing©r´rõrz©rá©r«r¬r¶rré)r r´Ztest_okZ test_failingrÔr¼rrrÚtest_failing_testºs   zArgsTestCase.test_failing_testcCsœi}dD]"}t d|¡}| ||¡||<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 rdÚallz-uaudiore)rà)r«r¬r¶rÓÚvaluesrré)r rÔÚresourcer´Z test_namesr¼rrrÚtest_resourcesÊs"ú  ÿ ÿzArgsTestCase.test_resourcesc Cs˜t d¡}| 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) r«r¬r¶rrìr½rêrÄr) r r´rr¼rërQÚ test_randomZ randseed2Z test_random2rrrrFçs        zArgsTestCase.test_randomc sê‡fdd„tdƒDƒ}tj}ˆ tj|¡t|dƒ\}d}t|dƒD]<\}}d||t|ƒ|f}|rp|d|7}t||d|}qDWdƒn1s–0Yˆ  d |¡}ˆ  ||¡t|dƒ>}t|dƒD]"\}}td |t|ƒ|f|dqÎWdƒn1s0Yˆ  d |¡}ˆ  ||¡t|dƒ(}|D]}t||dq:Wdƒn1sd0Yˆ  d |¡}ˆ  ||¡t|dƒ,}|D]}td ||dq–Wdƒn1sÄ0Yˆ  d |¡}ˆ  ||¡dS) Ncsg|] }ˆ ¡‘qSrr r rrrr rÈz.ArgsTestCase.test_fromfile..rrrKr*z00:00:%02i [%s/%s] %sz -- %s took 0 secrMrAz [%s/%s] %szLib/test/%s.py) rrrUrSrTrVÚ enumeraterÒrWrré) r rÔr]r\Zpreviousr r³Úliner¼rrrrEþs< ÿ  $   <   0   4 zArgsTestCase.test_fromfilecCs6t}|jd|d}|j|dd}|j|||dddS)NÚsigintr=é‚©rõT©rãræ)ÚTEST_INTERRUPTEDr¶rré©r r´rr¼rrrÚtest_interrupted.s  ÿzArgsTestCase.test_interruptedcsV‡fdd„tdƒDƒ}ˆjdg|¢RŽ}ˆ ||¡dˆjt|ƒf}ˆ ||¡dS)Ncsg|] }ˆ ¡‘qSrr r rrrr 7rÈz-ArgsTestCase.test_slowest..r+r7z#10 slowest tests: (?:- %s: .* ){%s})rrrérÊrÒrÂ)r rÔr¼r»rrrr85s  þzArgsTestCase.test_slowestc Cs–t}|jd|d}dD]z}|j|dZ|r8dd|f}nd|f}|j|ddiŽ}|j|||d d d }| ||¡Wdƒq1s†0YqdS) NrIr=)FT)Úmultiprocessingr7ú-j2rõrJTrLz10 slowest tests: )rMr¶rrrérÂ)r r´rrPr r¼r»rrrÚtest_slowest_interrupted?s ÿz%ArgsTestCase.test_slowest_interruptedcCs8| d¡}| d|¡}| ||g¡d}| ||¡dS)NZcoverager~zLlines +cov% +module +\(path\)\n(?: *[0-9]+ *[0-9]{1,2}% *[^ ]+ +\([^)]+\)+)+)r¶rrérÂ)r rr¼r»rrrrQs   zArgsTestCase.test_coveragecCs*| d¡}|jd|dd}| |d¡dS)Nr"r Úkey)rîzPress any key to continue)r¶rrÂ)r rr¼rrrr#Zs zArgsTestCase.test_waitcCsBt d¡}|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 rŒr=r‹rzrKr+r>r?rNrrrr`s zArgsTestCase.test_foreverc Cs¶|jd|d}d}| tj|¡|jdd|dtjd}|j||g|dd }| |t   |¡¡d ||f}|  ||¡t |ƒ$}|  ¡} |  || ¡Wdƒn1s¨0YdS) Nrwr=rtrpz3:3:rz)rõr‰r>z&beginning 6 repetitions 123456 ...... z%s leaked [1, 1, 1] %s, sum=3 )r¶rSrrTrrðrñrérÂr·rr rVÚread) r r´Zwhatrr]r¼rHZline2r\ZreflogrrrÚ check_leakus þ   zArgsTestCase.check_leakzneed a debug buildcCst d¡}| |d¡dS)NzÌ import unittest GLOBAL_LIST = [] class RefLeakTest(unittest.TestCase): def test_leak(self): GLOBAL_LIST.append(object()) Z references©r«r¬rU©r r´rrrrx‰s zArgsTestCase.test_huntrleakscCst d¡}| |d¡dS)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 descriptorsrVrWrrrÚtest_huntrleaks_fd_leak—s z$ArgsTestCase.test_huntrleaks_fd_leakcs@‡fdd„tdƒDƒ}ˆjdg|¢RŽ}ˆ | ¡ ¡|¡dS)Ncsg|] }ˆ ¡‘qSrr )rÆÚirrrr §rÈz0ArgsTestCase.test_list_tests..rrr)rrrÚrstripr)r rÔr¼rrrÚtest_list_tests¥s ÿzArgsTestCase.test_list_testscCspt d¡}|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)r«r¬r¶rrr)r r´ÚtestnameÚ all_methodsr¼rrrÚtest_list_cases¬s ÿ  þzArgsTestCase.test_list_casescCsFd}|jd|d}|g}|jdg|¢RddiŽ}|j|||dddS) Nz,import faulthandler; faulthandler._sigsegv()Zcrash)r³r´rQrõrzT)rár<)r¶rré)r r´Z crash_testrÔr¼rrrÚ test_crashedÆs ÿzArgsTestCase.test_crashedcCs$tjdtjd}dd„| |¡DƒS)Nz^(test[^ ]+).*ok$)ÚflagscSsg|]}| d¡‘qS)r*rÃrÅrrrr ÓrÈz.ArgsTestCase.parse_methods..)r·r¿r¹rËrÁrrrÚ parse_methodsÑszArgsTestCase.parse_methodsc Cs°t d¡}gd¢}|j|d}tj}| tj|¡dd|g}t|dƒ&}|D]}t||dqNWdƒn1st0Y|  dd ||¡}|  |¡} d d g}|  | |¡dS) NáV 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)rRrerg) r«r¬r¶rrUrSrTrVrWrrbr) r r´r^r]r]Úsubsetr\r³r¼ÚmethodsrrrÚtest_ignorefileÕs  ü , zArgsTestCase.test_ignorefilec CsÒt d¡}gd¢}|j|d}| d|¡}| |¡}| ||¡tj}| tj |¡dd|g}t |dƒ&}|D]} t | |dqpWdƒn1s–0Y| dd ||¡}| |¡}dd g}| ||¡dS) Nrcrdr=r)r\rhrKrMrarf) r«r¬r¶rrbrrrUrSrTrVrW) r r´r^r]r¼rjr]rir\r³rrrÚtest_matchfileùs$     ü , zArgsTestCase.test_matchfilecCsZt d¡}|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+rKT©rârçr?©r r´r]r¼rrrÚtest_env_changed"s    ÿzArgsTestCase.test_env_changedcCs>t d¡}|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/rzrK)rárär?rorrrÚtest_rerun_fail5s    ÿzArgsTestCase.test_rerun_failcCs<t d¡}|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/rrK)rär?rorrrÚtest_rerun_successEs   ÿzArgsTestCase.test_rerun_successcCs>t d¡}|j|d}|j|dddd}|j||g|ddS©Nú import unittest class Tests(unittest.TestCase): def test_bug(self): pass r=rPÚ nosuchtestrrK©rår?rorrrÚtest_no_tests_ranYs  zArgsTestCase.test_no_tests_rancCs6t d¡}|j|d}|j|dd}| ||g¡dS)Nz§ import unittest class Tests(unittest.TestCase): def test_skipped(self): self.skipTest("because") r=rrKr?rorrrÚtest_no_tests_ran_skipfs  z#ArgsTestCase.test_no_tests_ran_skipcCsRt d¡}|j|d}|j|d}|j||dddd}|j|||g||gddSrsr?)r r´r]Ú testname2r¼rrrÚ,test_no_tests_ran_multiple_tests_nonexistentss    ÿz9ArgsTestCase.test_no_tests_ran_multiple_tests_nonexistentc Cs^t d¡}|j|d}t d¡}|j|d}|j||dddddd}|j|||g|gd dS) Nrtr=z• import unittest class Tests(unittest.TestCase): def test_other_bug(self): pass rPruZtest_other_bugrrKrvr?)r r´r]Z other_coderyr¼rrrÚ)test_no_test_ran_some_test_exist_some_not‚s     ÿ ÿz6ArgsTestCase.test_no_test_ran_some_test_exist_some_notcCsft d¡}|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=rmr+rKTrnz --findleaksr?rorrrÚtest_findleaks™s   þ þzArgsTestCase.test_findleakscCsXt d¡}|j|d}|jdd|dd}|j||g|d| |t d|tj¡¡dS) 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=rQz --timeout=1.0rzrKr>z %s timed out) r«r¬r¶rrérÀr·r¿r¹rorrrÚtest_multiprocessing_timeout¹s   ÿÿz)ArgsTestCase.test_multiprocessing_timeoutcCsZt d¡}|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=rmr)r+rKTrnzWarning -- Unraisable exceptionzException: weakref callback bug)r«r¬r¶rrér rorrrÚtest_unraisable_excÔs   þ z ArgsTestCase.test_unraisable_exccCs~tj |jd¡}t |¡tj |jd¡}t|dƒ ¡||g}ddd|jdg}| |¡|D]}| tj  |¡|¡q`dS)NZtest_python_123Ztest_python_456ÚwbrPrz --tempdir=%sz --cleanup) rXrYrlr¥ÚmkdirrVÚcloserüZ assertFalseÚexists)r r¡r]rÕr;r³rrrÚ test_cleanupõs þ zArgsTestCase.test_cleanupN)(r›rœrržrr@rDrFrErOr8rRrr#rrUr7r8r3rxrXr[r_rZ cpython_onlyr`rbrkrlrprqrrrwrxrzr{r|r}r~rƒrrrrr:±sH0      $)   !r:c@seZdZdd„ZdS)Ú TestUtilscCs¸| t d¡d¡| t d¡d¡| t d¡d¡| t d¡d¡| t d ¡d ¡| t d ¡d ¡| t d ¡d¡| t d¡d¡| t d¡d¡| t d¡d¡dS)Nrz0 msg•Ö&è .>z1 msg{®Gáz„?z10 msgø?z1.5 secr*z1.0 secéxz2 minéyz 2 min 1 seci0*z3 houri©*z 3 hour 2 mini1*z 3 hour 1 sec)rrZformat_durationrrrrÚtest_format_durations< ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿzTestUtils.test_format_durationN)r›rœrr‡rrrrr„sr„Ú__main__)(ržr…rr‡Zos.pathrXrr·rðrúr°r£r«r7rrrZtest.libregrtestrÚhasattrr3rYrlr¡r¢r(rZÚnormpathrÉr¬rMZTestCaserrŸrýr r:r„r›ÚmainrrrrÚsF     @BrX