ÿØÿà JFIF    ÿÛ „ !.%+&8&+/1555$;@;4?.451 4,$,44444444444414444444444444444444444444444444444444ÿÀ  á á" ÿÄ     ÿÄ ?    !1AQaq"2‘¡±ÁðBRbrÑá#‚’¢²3S CñÿÄ   ÿÄ !    !1QAa‘2ÿÚ   ? 5˜Z¯V¦cø)›t/? z¨±>Õ5€¶‹Á¤·¼z¼Ü¬+ñ®v¤¨_ˆR­BFn©—˜ý®ç̝P8gýt·ÉSTŦˆìät?þé¼íìN/Þa)ì–í6ô… Ï¿øÃj´¿KÇü]ÿ ªô¹-eKànëÕHTx}ýSÜ›ÿ ”7Ø×&µ<¦  ¥ÑO¶[Ù¯ä¨ÞÃÿ PZ-¬;#õ|•oaÿ ©CìÞz3˜öː/¤­ñTûIØ}š^ mÓ%ªxˆ¥ÉŸu=Z+ISe¿45™¼u;ú&WØ÷€æßQ™®{|íx*TC“#ZŠìZ§²‹ 6pv…³¿¡äª*áZÐ%ÒOáˆo"x«OHk w±æ+¬V(kMúŸ5Vö«$ ÁrÏbàb57/luR ¸ÑÛj Òµì`Мq­û žICÀÊ•©4€Âcà¨Ï€O´<èÐ:›ù(Ë^L8þ‘ÍÌ#¸Ð_Ì©ÙK(Öz 4¬û+¸;ü’V’84‘¬ÃŽ:[â‡ÔÌáõp¢~§ªlæ£ö{®G>J¼"°‡7¯ÆÉèßû ‹É‹§ÁòÃýâßî ^ƾÙõ‹×óH#«LP½ïX=xÑÍ$|W?•~• îëÔ©ª‹ {ÝT…Kÿ ”hûâá)J*ö˜–ÔU;iÇ€/ ÆþjóZ\ýwØ=Ìm ºèËL9 ýèÆð/¨’¥öo=nË.%Îì ŽÕ¯È|{Oj²ƒE6e/ßdÄõ²Ìâ1O®ò×TsəԸhOMýíMˆ¿¼H˜l²,7Â¥#MF/Úf°Ö½± ¸–dr‹NýÊ íjqx{œÉ ä-È ¦ øÄër¨q°ð †nцýÑÄÆ’mä…n<0È™;ÁÝá¯ÁZƒ7FÀmì­ É&9ˆîéi¶ùN§Y• ÃZãAâ?•‡©‰ , ó¾IŸŠc1 4â&y­&pŠ­6;M À 0¹qç»p.á …ŸÅáK@%6·y6ƒ‰3?”úºŽ‰éX5ªPT §µ!=Mž«Ú½‹ÅgÂSâÉaþÓoö–¯ÁÔìR>5éÿ üs¶ÆUcÌ kÇR ]ÿ ù¬¼«VŽ;Â|‡~¢¦”ÏŰæ {L™Õ°Óv¹ò¸írޡעCÃ!íVÕ {¶»sŒNPg/ "uÕbkm²“$ďå¿é¹§°½æz¯6 †s¿!s–wÚÝ“™Œ °.ûj>·+™Òa…©Œ&rÝÎtÛë긪Ît’LAVp%c Úý[ÄzJ¾ÇàXXç@˜ó<êL]·T˜¾¥1Ó©V‡g´æ½¦Ý@¹óø!_@´ÞâSÁ —S3™•& ]@JHÚý©ZŽ €×æÔr»Áf!‡yÞ4Mv*èÓã_{‘åóUuљØ«Oïé*®EvÑ Œ÷‡U \"㪒ÍK+À 4“M¡ï:0¥5í!'<@î´”>Ç»&Z–ïCCV˜Ì5Šo&îhè.žû |ÓK©h$s6KìŒëã)¹hI¦GïOåóI;ììü#É$Š0…Ææ¥TØ.5­¾gn´ “ÂÖ\:hœ89G)J@„}œ:’Ò{/Š"¦_Æ×7Æ3VÇŠÊa]ÚŒÙ€Ä–=®uÁßâACZƒ§§£ Qnâ:«,×{tyø¬iÛcœÜÄ€H½ÄÍCk´÷šß .W'b¤Íåh]÷€=,Žv×cÚEÚHXJX¶îo¨FÒtèöŸ>ªª6[J®Fµ£sGÁeqõfe\íjÒÐïÄÐGˆe1Ø‹.Ø”‘Ëuø Y­ˆÜ ŽG|zùªüMpDnQWÄ”%JŠ™)â*p@Örš«ÕT2Ð%ˆG#ª„ ·¤!°ŸOTÂT¸aÚ%4&h™LµšØüÐ.F¿²ÐÞ_Ç‚¾ÅÃaÜ÷09Æ q€öy˜v‡85õN÷]¬äѼóS{°_MެúÔ#°Ç¸0åÞè2ëôPcvÆw9®ií1Ä8F™˜à‰´+‰Ik1òÝ7“Ñ×ÒsÝ\x‚h`ÞÑ`ó"|µEcý£n˜h`}GÞ !±ù²Ápü²ß6 0ïi󜵩SÈÇ7˜-ÕURO˜¦´f$ªž-Í6(œ}<„ éc øs]ŽŽ„*—¾ ìdŽ„)méª\¿êÎIg¾ØÞ~I#C/¼¼´EÁÈŽi8“©õådô·>euä ƒ'Ê×लR1ÉJE1ÐAát`t;ÇР%Ý<‡¥„ÍÆ`×Oyó)õiI€ñQaŸ4Ûù\áàaÃÔ¹HÃu¹*k€¦<„e S‡&õÏ B!ŽhüÞ`yj}mªf×\¿ Ç~æ­9‡û\՞Ǖg²1Žû5V7 !àöšm° c`ܬøÇìµÒ'P"?…´Ö,"§^•õލsÔ)6˜sæéÍR¼ ò|Sl”‹7 nPW Gòú÷½§O¯‡„l¡kSÞŒr½PÊ@æ¢pŽ-mÿ #Ÿ˜Àº¶Áä¦;ïÔæ$1££`“Õ>„—·ž)ßð³ñ#Ï Ô$¶œ‰ÊE‹À;÷º ¯«P:Ñ”8–IÊtpÞ3ª“>ê“þës4ò2OÏÕ­±zô†Õ§‰.÷ä¸;¿˜“'œ›žª}«Œ{ª±Ì 9ÔóÞÕ‡0 $íWV3Üì¬ —@kÝ4@¿r¼±½¬™›?øØæ´'Áé®CË3-g$˜ö‡×auÚi´Žp/êÛ æF›Ú2v‹ã¿¿,nB1̨ƃqÞa5͝@&Æû“él÷ \C²½UÍc ¯k×¢U ÖéQå™—-r wô ÞÏ<Ò=&=ÿ Ôê Òêˈt,i—;LîÜ á¸*ÚÃ1$êL•LÍ <É)ýÐà’ ;F™{ƒ™˜€&'}‚ãÄK`¡ÞT@I;®žZóè‚s’7®°›+§O­Åq©é»²9<Ô J ¼9O’HL»Ùïì¸rk¼Ž_ý‘TŸu[²ßÚŒ·ü÷B%¯E ŸÔX5êO´ Ç•€’I0 ÉJX` ñ¹õ%;µŸD‘«´€àwÒ™U ûئžÖö\×®×´8 ½‡ºÐÆÓ§?Àkmœ=;d5*@-ì0F Rªýš[Ü6âö̃ڸr*KA9· u*µæ£?U¸Âêí†8@¦X4 e-ò„0s{ HâUpU?¼mñRa°®a%Ð'tÉ×’\¾ÊÉ]t›h>·(Ë@R¼¡Ãt h}’O÷au<+nT…Ö…MӐ??Óe95 q>í/;&JSû °¯ÊéÞ øƒ*Ã2½Ài&:nôUl=¾¿5eˆ3”ñc|Ú2V”>„»&eE;«ÚäC p¢Û úy 9š[ŒÌx¼擼A&DåÒ¯ˆ¤ÀÌ;"˜ ÏQä¸åhÊ}Ûq«Û0WžÒ|»€ø®öCm5•\ÇÀ§Pe3£]0ÃàLDÉ‰1øªxjgwT‚÷¿LΨK‹›ùs—xˆÜ±µ kæ¸f‰‰ÜGk/LÛØ6d9ò¶ùA{ƒA3š/¬D¬khÓk‰`˜"㯒r¿±Óã jx‡°e}<Ñø\3y:'À•/h½Í€Ç4~g ?Û(¼]v‘ªlKÎâ~?O‚W%{Ì:“'©úNq¾›úo(X’¥¯ˆ nFê{Ç€ü?º'ë ø‹ì Þ09ŒÌç9Æ —ËC`j@ÓÄ(+a‹un¸#ÂꟋ{K`‘ÑÍÍ'à´»/Û,KW;Þ4²þð ï Nm|~fGÏ(…³Ã)«1ö­Õ ¥‡¨©ƒÃ™ü-s=à=U66Ï«Ýc蓦W¹íž®›nÔ%êÇìŒ<#Ü×84ån®Ð ÒåOC` ñânÑs‡¢ç 1õ%Îhì½Ã½® e:ݼUZo™`  ÅZŸŒÊ«ê1ÏÄo$q¹Þ€©ˆhÐÉä¯ñ[!…Ú˜àJ:x2$Íß&PåT£6ç— ‡Í*4Ýšçjÿ ‰É nófÐ ó(L5C•åÆ\rMÒ@ò }y-W}™üýVù—ú¢=Ù”c®‘< M ž ´Phr ¦©TD ‘ù.$´÷O‡‘V2Æò.=IUŒ=ž‡â¬i™aþÓåÙ?òUø'ØÖ•.~* šTŒ!•-×áºTâ®ä#õü'´ eýlYÅÓeÕKÂrT"CÚ@u!Óxƒ{š3€}1¿(r}%«nËamjÑ%ÑNEò v ˜à  σöK³,*º.àzù¨™Ó ÚçâU¦*¿ 9{%Ö¹ njûdaXöb) kÛÆ±ûÓ\°M7ˆÂ=û›ç¿Ã‚­V»Cg–8ÙêE- j)k$º`Ã-ùEýeBÆÇ]c¡°ñty&Òd0nõ'¡W+ƒ*|–øµFa\GQªEAÔp5\Ǽ·¼Ç8·õ -â§Ú[ ‡ uZeÖ 3}×d'+¹:ð+K†Û®s!Ï$úe€<Û”x)1»a­¡LC]¸µík…ÚàA»AYº{†ªS[¦5HÒ7ù --,ísòDØ€èk ÞÀîÜ ò@â( ËNˆë›4ô½•/¦o‡€Û7 ê•ÆêòðÜy'Án½µ á˜ݦ ndeo…[ì¶Ê,¥R³Ä=À±—–ß;£™´ñSâ*g§”ïaið‘Jå~™ÓÞ ß³Õ¢»8x埒²52>AÊb&-÷\7´éÄù€T˜,w;3{ï˜k…à¹ÄqÀ«œ{€\ ˆ¾[´¨јr &Úé„Ívˆ±8†¿]|¬ņ4I×pÞS1ÈÖz‰#Ìv‡G!YNògñ:màTz¢Ý1ô©^O=~ë|5Bã™ç•¼µõ•bÆ@úÕS¬ÈŒ#¬zünrŸ û” Z²•èðV"ÁHÚý©wÝ €7¼Ìu1hÑa3Éä û f$o¿É ™Ú›ÝçnpÒ3äÌ3†Í§,Äï]$‰/pê †«À¼¸e9­Æê_C]žƒ·ý·frÁN«, E=›Çq -‰öŒ:aÏ¿±í&£Í:-} 84‘ÿ eƒQÑeëSsuiA ³g㟥ú£?ÿ ʼn*”“÷aühe:ÊWa@ÒÞk±eØ] F Ô—r.åä˜ @ö¥ªZoÐýYL·¥S²G/‡ñ <~*ZÆ´è>JlòàÛÆ½ÿ 窘ìGN¢:I®KšJp/`íIÁÀõ#Ä-€ö­šµŒoF4|ÆQØÆ@Ì|£Ô…¢À{9˜è½Üó›€ôYÒÎYsið;ís¤€à²ˆ‚4qÉVŒI$ ‰"° æµ8cXGjœˏ¡Aâý•ËÜ¢ûï e·çLx']á"oÅÎê3¯Ç—¹”ó0nå‚âg{Œñ> S´˜îè°g238‚ãköÝfÚd´6Ò€;ò÷±¢™¼›º ¢Æ'¥Ðx'e¬ç ]bÈÆV¢ó‹kýBO ðÊâ$Ÿ!×T 3Mýמ žìٍàÌü‘8÷€àæØ8æ©6‰©L´«…oãpð„~Çk‰!ñ;‹”ÛžÍ àž±z Ÿôû øŸÝužÏ;ÿ #|u6™Þ¬ÚˆÐõA4¶â|ôl|Ê2ŽÇ¤ÝÅÇY.<#Aí.k§hóF‚”Y; M½Ö4hŸ4&›­¿tès´%FìL¥£Ãk‰ÇT¤haÁ¤ÚxfÉ`ÑìË›>i 3t‚:,–+^÷´–{Û–Nxi"x‘Ûg î¨>¥Õ܁ùZH,2Û“:8xÊ¢Çí9.É-Ìâã-=çjwµS˜dütžçwýGòú®®ûº_ˆýx$–¡ãøO EÚÛÏ÷R„×w+3£Á£öUMyR²¹âŒ°š›¸Ñãò9§Ó_Dl+Ùßc›úšGÅÌc†Ž!Ko=¶.‘Îÿ c²(2®V mª.ÿ ¹B›¹å ù„öŸSV>™ü¯$y:G¢Z×àøúdî¹û­·ýÇ´:•c LÍõi_‹ö+ÎæGÊè>OŠ•äž´§Þ{X}¨1ÚTc›»Qþ•êô°t¿OP?eæ~É{5]•ÙR£r5†nZ\ã@ &îJõ ¾àC°þV>fé¥/ü5ñÊIº_é5 ;e­h<@ Ä&æÃëE%;X,ÒãÆÞ`Oò¦kŸm#˜!ÀyÄ¢| óLšò¥Ä` ¶R=|ÈCâh5ò3DˆïF†ðÒ#ÅìÛœ?¸yhBãœí ZxßÎÄhºRK„`Þödvײ™ÀÈÑÒgŒuY w³%†ƒÓzõ ÖÏp‚dH®¦A´ù§»ÓÇMæ~)ˆð‡û:ù&Ä •vGD´À n ݇¼Ö8Fö óáà£~Ë¥x`oK|Ä?fxiØü%pìR>éò+Û±éÎ>núlFŤ'tq8LZÏvÃ?„¡ß±È⽆¯³íü@x|PöUäèØã¡ð‚ŒAìÏ"vÍwóŸÍ{ ý0.z È•Ö{,N¡£¡ŸKÕÙž>Ýœþ ÍÀ°<×EA!Å‚D™IúOÍ¡>ôG}Â` ÍßkÜL™Ž Þð™ {IøF²¹òQ3&!ÃÂÞz.d&Ï-sH¸,Ôõ˜ŽP€ 77ˆÝ¼ÊëÜw =cÕ Ú,ØÐ5ÎYÐ)ì´öœgŒ[¤ßv㙑8心>h]§µháYš£²ºÑ.{Ï7Sð•?´~×SÃKýJÛ˜ ™Íäiúu<µX¶1õ^kâçIÑ£sZ4h>j*ÔšD:4­¿_ ÷¸ Õxæÿ ¸?Mù _•­ÊÐ ä ÷ý ÑwL œ­ïnTkÛUÍN©ë:¦fV ¶ÜÔÜMªÅâA½–¿R×TXš-%iTÊT•‡Ù‚JôϐZxWÑè‰f‰òG º ×Õû2aZ7OU3[“×AT–ÞŒ…-‘¤”Ì ì&(ˆ¿­•ƒkï’:ðY¦W‘ Å)“†‘˜³Åtcø˜ñTÂwÚÇ4|üLÇªí–v- qˆèU qPE.†â‘˜µ Æ,ÐÅs]8¾„oúÑ i>ÜxxÈó)ƒ ´æÁâØ$À‰vžŸf$Ž |ãw;ÀÁIJ»b` {¦Ó¤Ú$©YÀ‘n@Óïž«9J¼êG m¤ ܯ¹ÌW4€ÐÒÅÛ‡#褕Ÿn-?í|с¥÷Ú¹¬'´ÞÜ9ÓK `hê£SÄSà?7—Wí_´…óB›»:=Ãïq`<8ñÓŒÑlú2d¬ê³£hÖ[l|$vÝro~'R®‰§°ñmY ͧäP |PUª¹·:3Œ[Û{Xÿ ºâ@‚W–Äé u‚ ¯´*=íή.pûÒdt @G‰¬ s¸ ëÉücr ÞæÑ¨Ê@>¤¢Ö±. Þ'¯°ÌME[YéïĵÂCå½ Ué©Áû'Ê9%eÔðNU”ë‘ÌsD3/®+UI˜9h.WC”빓$#:pz:YÓ ¿xž* ³$Í +$kñAŠ‹†¢ Uê>¸)_š¬÷©ßAÂÔb9ÇU ¯¾á•9¯ÏÏ÷O÷¼¼Fähal1‰3Ì[Ïr•´UCksNÐ] R‘¸¥H+§Šé†c©vÖÞ0iÓ76s†î!§=ß ¼~Ô'°Ãmäoäš³ªøi1úÉ)³yV8 CLÄØÁ‘WYïi€H6ÖÑiámø^ÈY´°Ñ7¥Û*—Ñ©L«Qƒï—Ùrÿ ›£Ð*š¸ˆL©ˆ$ˆ ÷¾D§9È®«qbqC)–ˆïv´çñsÑVT­Ø, <àïºÀO«Jý·õ àfPìð .wFšir´þ’2_Y *Æ€x\« ì€9š@ Ž|F⇥ˆkZ@hÖÄ0t¿-<“‹qµ¾*ZL¤Ú)&BJpÓF5=$„at*Zš$’ÑtdûÝRI1 2މ$€$I$#‰SÞ’Hë¬ï;Á$¡t$’`<(ñÇt)$‡Ð.Êf¢X’Kt=Éé$‚ˆªè¢oÝëòI%Rgcª÷ŠyI%¡‰ÿ !ñ)´õ $¤ Ô’IIGÿÙa 3gC@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)selfargsmsgerrr1/opt/python39/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\