Ë
    òT•j¼f  ã                   óX  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
 ddlmZmZ ddlmZmZmZ ddlmZ ddlmZ ddlmZ dd	lmZmZ dd
lmZmZ ddlmZmZ ddl m!Z!m"Z" ddl#m$Z$ ddl%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9  G d„ d«      Z:dd„Z;y)é    N)Ú	os_helperÚ
MS_WINDOWSÚflush_std_streamsé   )Ú_parse_argsÚ	Namespace)Ú	findtestsÚsplit_test_packagesÚ
list_cases)ÚLogger)Úsetup_pgo_tests)ÚState)ÚTestResultsÚEXITCODE_INTERRUPTED)ÚRunTestsÚHuntRefleak)Úsetup_processÚsetup_test_dir)Úrun_single_testÚPROGRESS_MIN_TIME)Úsetup_tsan_tests)ÚStrPathÚStrJSONÚTestNameÚTestListÚ	TestTupleÚ
TestFilterÚstrip_py_suffixÚcountÚformat_durationÚ	printlistÚget_temp_dirÚget_work_dirÚexit_timeoutÚdisplay_headerÚcleanup_temp_dirÚprint_warningÚis_cross_compiledÚget_host_runnerÚprocess_cpu_countÚEXIT_TIMEOUTc                   ó\  — e Zd ZdZd%dedefd„Zd&d„Zd'dedz  de	e
edz  f   fd	„Zede
fd
„«       Zdefd„Zdefd„Zdedededefd„Zdeddfd„Zd„ Zdedefd„Zd„ Zd„ Zdededdfd„Zd„ Zd„ Zde
fd„Zde
dedz  defd„Zde
dedz  defd„Zd„ Z d „ Z!d!„ Z"d"„ Z#d#„ Z$d'dedz  fd$„Z%y)(ÚRegrtestaa  Execute a test suite.

    This also parses command-line options and modifies its behavior
    accordingly.

    tests -- a list of strings containing test names (optional)
    testdir -- the directory in which to look for tests (optional)

    Users other than the Python test suite will certainly want to
    specify testdir; if it's omitted, the directory containing the
    Python test suite is searched for.

    If the tests argument is omitted, the tests listed on the
    command-line will be used.  If that's empty, too, then all *.py
    files beginning with test_ will be used.

    The other default arguments (verbose, quiet, exclude,
    single, randomize, use_resources, trace, coverdir,
    print_slow, and random_seed) allow programmers calling main()
    directly to set the values that would normally be set by flags
    on the command line.
    ÚnsÚ_add_python_optsc                 ó¨  — t        |j                  «      | _        |j                  | _        |j                  | _        |j                  | _        |j
                  | _        t        «       | _        d | _        t        | j                  | j                  | j                  «      | _
        |j                  | _        |j                  | _        |j                  | _        |j"                  | _        |j&                  | _        |j*                  | _        |j.                  | _        |j2                  | _        |j6                  xs |j8                  | _        |xr |j<                  | _        |j@                  | _         |jB                  | _!        |jD                  | _"        |jF                  | _$        |jJ                  | _&        |jN                  €d}n|jN                  dk  rd}n|jN                  }|| _(        |jR                  | _)        |jT                  | _+        |jX                  | _,        |jZ                  | _-        |j\                  | _.        |j^                  | _0        |jb                  | _1        |jd                  rB|jd                  \  }}}tf        jh                  jk                  |«      }tm        |||«      | _7        nd | _7        |jp                  | _9        |jt                  | _;        |jx                  | _=        |j|                  | _?        t�        |j‚                  «      | _A        |j„                  rt�        |j„                  «      | _C        nd | _C        |jˆ                  | _E        |jŒ                  | _G        |j�                  | _I        |j”                  | _J        dtf        j–                  v r3tf        j–                  d   r d| _J        tf        j–                  d   | _L        n8|j˜                  €t›        jœ                  d«      | _L        n|j˜                  | _L        d | _O        |j                   | _Q        t¥        j¦                  «       | _T        |jª                  | _V        d | _W        d | _X        y )Nr   éÿÿÿÿÚSOURCE_DATE_EPOCHFé    )YÚintÚverboseÚquietÚpgoÚpgo_extendedÚtsanr   ÚresultsÚfirst_stater   ÚloggerÚheaderÚwant_headerÚ
list_testsÚwant_list_testsr   Úwant_list_casesÚwaitÚ	want_waitÚcleanupÚwant_cleanupÚrerunÚ
want_rerunÚrunleaksÚwant_run_leaksÚbisectÚwant_bisectÚfast_ciÚslow_ciÚci_moder/   Úwant_add_python_optsÚmatch_testsÚexcludeÚfromfileÚstartÚstarting_testÚargsÚcmdline_argsÚuse_mpÚnum_workersÚworker_jsonÚfailfastÚ	fail_fastÚfail_env_changedÚ
fail_rerunÚforeverÚverbose3Úoutput_on_failureÚtimeoutÚ
huntrleaksÚosÚpathÚabspathr   Úhunt_refleakÚtestdirÚtest_dirÚxmlpathÚjunit_filenameÚmemlimitÚmemory_limitÚ	thresholdÚgc_thresholdÚtupleÚuse_resourcesÚpythonÚ
python_cmdÚtraceÚcoverageÚcoverdirÚcoverage_dirÚtempdirÚtmp_dirÚ	randomizeÚenvironÚrandom_seedÚrandomÚgetrandbitsÚfirst_runtestsÚ
print_slowÚprint_slowestÚtimeÚperf_counterÚ
start_timeÚsingleÚsingle_test_runÚnext_single_testÚnext_single_filename)Úselfr.   r/   rX   ÚwarmupsÚrunsÚfilenames          ú,/usr/lib/python3.12/test/libregrtest/main.pyÚ__init__zRegrtest.__init__5   s5  € ä §
¡
›OˆŒØŸ8™8ˆŒ
ØŸ™ˆŒØ"$§/¡/ˆÔØŸ'™'ˆŒ	ô %0£MˆŒØ'+ˆÔô ˜TŸ\™\¨4¯:©:°t·x±xÓ@ˆŒð "$§¡ˆÔØ%'§]¡]ˆÔØ%'§]¡]ˆÔØ!Ÿw™wˆŒØ"$§*¡*ˆÔØ "§¡ˆŒØ$&§K¡KˆÔØ!#§¡ˆÔà Ÿj™jÒ6¨B¯J©JˆŒØ+;ò ,CØ/1×/BÑ/Bð 	Ô!ð (*§~¡~ˆÔØŸZ™ZˆŒØ(*¯©ˆŒØ.0¯h©hˆÔØ&(§g¡gˆÔð �9‰9ÐØ‰KØ�Y‰Y˜!Š^Ø‰KàŸ)™)ˆKØ +ˆÔØ+-¯>©>ˆÔð  "Ÿ{™{ˆŒØ&(×&9Ñ&9ˆÔØ "§¡ˆŒØŸZ™ZˆŒØ')§{¡{ˆÔØ%'§Z¡ZˆŒØ�=Š=Ø&(§m¡mÑ#ˆG�T˜8Ü—w‘w—‘ xÓ0ˆHÜ4?ÀÈÈxÓ4XˆDÕà $ˆDÔØ(*¯
©
ˆŒØ.0¯j©jˆÔØ(*¯©ˆÔØ(*¯©ˆÔÜ.3°B×4DÑ4DÓ.EˆÔØ�9Š9Ü6;¸B¿I¹IÓ6FˆD�Oà"ˆDŒOØ Ÿh™hˆŒØ,.¯K©KˆÔØ')§z¡zˆŒð  "Ÿ|™|ˆŒØ¤2§:¡:Ñ-ä—
‘
Ð.Ò/à"ˆDŒNô +-¯*©*Ð5HÑ*IˆDÕØ�^‰^Ð#Ü%×1Ñ1°"Ó5ˆDÕà!Ÿ~™~ˆDÔð 04ˆÔð $&§=¡=ˆÔô ×+Ñ+Ó-ˆŒð &(§Y¡YˆÔØ15ˆÔØ48ˆÕ!ó    c                 ó:   — | j                   j                  |«       y ©N)r<   Úlog)rˆ   Úlines     rŒ   r‘   zRegrtest.log›   s   € Ø�‰�‰˜ÕrŽ   NÚtestsÚreturnc                 óŽ  — | j                   rpt        j                  j                  | j                  d«      | _        	 t        | j
                  d«      5 }|j                  «       j                  «       }|g}d d d «       | j                  rÁg }t        j                  d«      }t        t        j                  j                  t        j                  | j                  «      «      5 }|D ]Z  }|j                  dd«      d   }|j                  «       }|j!                  |«      }|€Œ<|j#                  |j%                  «       «       Œ\ 	 d d d «       t'        |«       | j(                  r t+        | j,                  | j.                  «       | j0                  rt3        | j,                  «       t5        «       }| j6                  r)| j,                  D ]  }|j9                  |«       Œ g | _        t;        | j<                  |¬«      }	| j                  s!|xs | j,                  }
|
rt?        |
«      }
n|	}
n|}
| j                   r'|
d d }
	 |	jA                  |
d   «      }|	|dz      | _!        | jF                  r	 |
d |
jA                  | jF                  «      …= tQ        jR                  | jT                  «       | jV                  rtQ        jX                  |
«       t[        |
«      |fS # 1 sw Y   �Œ_xY w# t        $ r Y �Œnw xY w# 1 sw Y   �Œ¯xY w# tD        $ r Y Œ­w xY w# tH        $ r0 tK        d| jF                  › �«       tM        jN                  d«       Y Œ¾w xY w)	NÚ
pynexttestÚrz\btest_[a-zA-Z0-9_]+\bú#r   r   )rg   rQ   zCannot find starting test: ).r…   rc   rd   Újoinrx   r‡   ÚopenÚreadÚstripÚOSErrorrR   ÚreÚcompiler   ÚSAVEDCWDÚsplitÚsearchÚappendÚgroupr   r7   r   rV   r8   r9   r   ÚsetrQ   Úaddr	   rh   r
   Úindexr†   Ú
IndexErrorrT   Ú
ValueErrorÚprintÚsysÚexitr|   Úseedr{   ry   Úshufflero   )rˆ   r“   ÚfpÚ	next_testÚregexr’   ÚmatchÚexclude_testsÚargÚalltestsÚselectedÚposs               rŒ   Ú
find_testszRegrtest.find_testsž   sÈ  € Ø×ÒÜ(*¯©¯©°T·\±\À<Ó(PˆDÔ%ðÜ˜$×3Ñ3°SÓ9ð (¸RØ "§¡£	§¡Ó 1�IØ&˜K�E÷(ð �=Š=ØˆEô —J‘JÐ8Ó9ˆEÜ”b—g‘g—l‘l¤9×#5Ñ#5°t·}±}ÓEÓFð 4È"Øò 4�DØŸ:™: c¨1Ó-¨aÑ0�DØŸ:™:›<�DØ!ŸL™L¨Ó.�EØÑ(ØŸ™ U§[¡[£]Õ3ñ4÷4ô 	˜Ôà�8Š8ä˜D×-Ñ-¨t×/@Ñ/@ÔAà�9Š9Ü˜T×.Ñ.Ô/ä›ˆØ�<Š<Ø×(Ñ(ò '�Ø×!Ñ! #Õ&ð'à "ˆDÔä T§]¡]Ø%2ô4ˆð �}Š}ØÒ1 × 1Ñ 1ˆHÙÜ.¨xÓ8‘à#‘àˆHà×ÒØ  �|ˆHðØ—n‘n X¨a¡[Ó1�Ø(0°°q±Ñ(9�Ô%ð
 ×ÒðØÐ@˜hŸn™n¨T×-?Ñ-?Ó@Ð@ÐAô
 	�‰�D×$Ñ$Ô%Ø�>Š>Ü�N‰N˜8Ô$ä�h“ Ð'Ð'÷E(ñ (ûô ò Úðú÷4ñ 4ûôP ò Ùðûô ò ÜÐ3°D×4FÑ4FÐ3GÐHÔIÜ—‘˜–ðús_   ½K Á"KÁ5K Ã!>K/Ä !K/È9!K< É'L ËKËK Ë	K,Ë+K,Ë/K9Ë<	LÌLÌ6MÍMc                 ó(   — | D ]  }t        |«       Œ y r�   )rª   )r“   Únames     rŒ   r?   zRegrtest.list_testsæ   s   € àò 	ˆDÜ�$�Kñ	rŽ   Úruntestsc           	      óF  — | j                   dk(  rd| _         | j                  j                  «       \  }}| j                  dt	        |«      › d�«       |j                  |dddd|d¬«      }| j                  j                  |«       | j                  || j                   «       |S )Nr   r   zRe-running z- failed tests in verbose mode in subprocessesTF)r“   rF   r5   r^   r[   Úmatch_tests_dictr`   )	rX   r:   Úprepare_rerunr‘   ÚlenÚcopyr<   Ú	set_testsÚ_run_tests_mp)rˆ   r»   r“   r½   s       rŒ   Ú_rerun_failed_testszRegrtest._rerun_failed_testsë   s¥   € à×Ñ˜qÒ ð
  !ˆDÔà"&§,¡,×"<Ñ"<Ó">ÑˆÐð 	�‰�;œs 5›z˜lÐ*WÐXÔYØ—=‘=ØØØØØØ-Ø#ð !ó %ˆð 	�‰×Ñ˜hÔ'Ø×Ñ˜8 T×%5Ñ%5Ô6ØˆrŽ   c                 ó’  — | j                   r| j                  d«       y | j                  «       | _        t	        «        | j                  |«      }| j                  j                  rRt	        t        t        | j                  j                  «      d«      d«       t        | j                  j                  «       | j                  |«       y )NzJRe-running failed tests is not supported with --python host runner option.Útestzfailed again:)rr   r‘   Ú	get_stater;   rª   rÃ   r:   Úbadr   r¿   r!   Údisplay_result)rˆ   r»   Úrerun_runtestss      rŒ   Úrerun_failed_testszRegrtest.rerun_failed_tests  s�   € Ø�?Š?à�H‰Hð&ôð àŸ>™>Ó+ˆÔäŒØ×1Ñ1°(Ó;ˆà�<‰<×ÒÜ”%œ˜DŸL™L×,Ñ,Ó-¨vÓ6¸ÔHÜ�d—l‘l×&Ñ&Ô'à×Ñ˜NÕ+rŽ   rÅ   Úprogressc                 óp  — t        «        d|› �}|r|› d|› d�}t        |«       t        dt        |«      z  «       t        «        |j                  «       }|j                  g d¢«       |j                  |j	                  «       «       |j                  |«       t        dt        j                  |«      d¬«       t        «        d	d l	}|j                  ||j                  ¬
«      }|j                  }|› d|› �}t        |«       t        dt        |«      z  «       t        d¬«       |rt        d|› �«       yy)NzBisect z (ú)r˜   )ú-uz-mztest.bisect_cmdz
--max-iterÚ25z-vú+T©Úflushr   ©ra   z: exit code zBisect failed with exit code F)rª   r¿   Úcreate_python_cmdÚextendÚbisect_cmd_argsr£   Úshlexr™   r   Ú
subprocessÚrunra   Ú
returncode)	rˆ   r»   rÅ   rË   ÚtitleÚcmdrØ   ÚprocÚexitcodes	            rŒ   Ú_run_bisectzRegrtest._run_bisect  s  € ÜŒØ˜$˜Ð ˆÙØ�g˜R ˜z¨Ð+ˆEÜˆeŒÜˆc”C˜“JÑÔÜŒà×(Ñ(Ó*ˆØ�
‰
ò 
ô 	ð 	�
‰
�8×+Ñ+Ó-Ô.Ø�
‰
�4ÔÜˆc”5—:‘:˜c“?¨$Õ/äÔãØ�~‰~˜c¨8×+;Ñ+;ˆ~Ó<ˆØ—?‘?ˆà�'˜ h ZÐ0ˆÜˆeŒÜˆc”C˜“JÑÔÜ�DÕáÜÐ1°(°Ð<Ô=ØàrŽ   c                 óÖ   — | j                   j                  d¬«      \  }}t        |d«      D ];  \  }}t        |«      dkD  r|› dt        |«      › �}nd}| j	                  |||«      rŒ; y  y )NF)Úclearr   ú/Ú )r:   r¾   Ú	enumerater¿   rß   )rˆ   r»   r“   Ú_r§   rº   rË   s          rŒ   Ú
run_bisectzRegrtest.run_bisect>  sp   € Ø—<‘<×-Ñ-°EÐ-Ó:‰ˆˆqä$ U¨AÓ.ò 	‰KˆE�4Ü�5‹z˜AŠ~Ø#˜W A¤c¨%£j \Ð2‘à�Ø×#Ñ# H¨d°HÕ=Ùñ	rŽ   c                 óæ   — |j                   ry | j                  «       }t        «        t        d|› d�«       | j                  j	                  |j
                  | j                  | j                  «       y )Nz== Tests result: z ==)r7   rÆ   rª   r:   rÈ   r“   r6   r€   )rˆ   r»   Ústates      rŒ   rÈ   zRegrtest.display_resultI  sW   € à�<Š<Øà—‘Ó ˆÜŒÜÐ! % ¨Ð,Ô-à�‰×#Ñ# H§N¡NØ$(§J¡J°×0BÑ0Bõ	DrŽ   Ú	test_namec                 óÈ   — |�7d}t        t        «       «      }|j                  |t        «       |¬«       |d   }nt	        ||«      }| j
                  j                  ||«       |S )Nz-result = run_single_test(test_name, runtests))ÚglobalsÚlocalsÚresult)Údictrì   Úrunctxrë   r   r:   Úaccumulate_result)rˆ   ré   r»   ÚtracerrÜ   Ú	namespacerí   s          rŒ   Úrun_testzRegrtest.run_testU  s^   € ØÐð CˆCÜœV›X›ˆIØ�M‰M˜#¤w£y¸ˆMÔCØ˜xÑ(‰Fä$ Y°Ó9ˆFà�‰×&Ñ& v¨xÔ8àˆrŽ   c                 ó¢  — | j                   rdd l}|j                  dd¬«      }nd }t        t        j
                  «      }|j                  «       }|�t        |d«      }nd}d|› d�}|j                  r|d	t        |j                  «      z  z  }| j                  |«       d }|j                  «       }	t        |	d
«      D �]f  \  }
}t        j                  «       }|}|r|›d|›�}| j                  j!                  |
|«       | j#                  |||«      }t        j
                  D �cg c]  }||vr|j%                  d«      r|‘Œ }}|D ]U  }t        j
                  j'                  |d «       |j)                  d«      \  }}}	 t+        t        j
                  |   |«       ŒW |j1                  | j2                  | j4                  «      r nat7        |«      }t        j                  «       |z
  }|t8        k\  r|›dt        |«      ›�}�ŒF|j:                  t<        j>                  k(  s�Œed }�Œi |rtA        |«       |S c c}w # t,        t.        f$ r Y �Œw xY w)Nr   FT)rs   r   rÅ   r“   zRun z sequentiallyz (timeout: %s)r   z -- )ztest.Útest_ú.z in )!rt   rs   ÚTracer¥   r«   ÚmodulesÚget_jobsr   ra   r    r‘   Ú
iter_testsrä   r�   r‚   r<   Údisplay_progressró   Ú
startswithÚpopÚ
rpartitionÚdelattrÚKeyErrorÚAttributeErrorÚ	must_stopr[   r\   Ústrr   rè   r   ÚPASSEDrª   )rˆ   r»   rs   rñ   Úsave_modulesÚjobsr“   ÚmsgÚprevious_testÚ
tests_iterÚ
test_indexré   rƒ   Útextrí   ÚmoduleÚnew_modulesÚparentrå   rº   Ú	test_times                        rŒ   Úrun_tests_sequentiallyzRegrtest.run_tests_sequentiallyd  s/  € Ø�=Š=ÛØ—[‘[ u°D�[Ó9‰FàˆFäœ3Ÿ;™;Ó'ˆà× Ñ Ó"ˆØÐÜ˜$ Ó'‰EàˆEØ�U�G˜=Ð)ˆØ×ÒØÐ#¤o°h×6FÑ6FÓ&GÑGÑGˆCØ�‰�ŒàˆØ×(Ñ(Ó*ˆ
Ü%.¨z¸1Ó%=ó  	%Ñ!ˆJ˜	Ü×*Ñ*Ó,ˆJàˆDÙÚ%)©=Ð9�Ø�K‰K×(Ñ(¨°TÔ:à—]‘] 9¨h¸Ó?ˆFô 14·±ö G fØ$¨LÑ8Ø &× 1Ñ 1Ð2DÔ Eò "ð GˆKð Gð &ò �Ü—‘—‘ ¨Ô-à"(×"3Ñ"3°CÓ"8‘�˜˜4ðÜœCŸK™K¨Ñ/°Õ6ðð ×Ñ §¡°×0EÑ0EÔFÙä ›KˆMÜ×)Ñ)Ó+¨jÑ8ˆIØÔ-Ò-Ú.;¼_ÈYÔ=WÐ X’Ø—‘¤§¡Ô-à $’ðA 	%ñD Ü�-Ô àˆùò5Gøô !¤.Ð1ò Úðús   Ä$H6Å?H;È;IÉIc                 óŠ   — | j                   j                  | j                  «      }| j                  r| j                  › d|› �}|S )Nz then )r:   rÆ   r\   r;   )rˆ   rè   s     rŒ   rÆ   zRegrtest.get_state   sA   € Ø—‘×&Ñ& t×'<Ñ'<Ó=ˆØ×ÒØ×'Ñ'Ð(¨¨u¨gÐ6ˆEØˆrŽ   rX   c                 ój   — ddl m}  |||| j                  | j                  «      j	                  «        y )Nr   )Ú
RunWorkers)Úrun_workersr  r<   r:   rÙ   )rˆ   r»   rX   r  s       rŒ   rÂ   zRegrtest._run_tests_mp¦  s$   € Ý+Ù�; ¨$¯+©+°t·|±|ÓD×HÑHÕJrŽ   c                 ó6  — | j                   ri| j                  r>t        | j                   d«      5 }|j                  | j                  dz   «       d d d «       nt	        j
                  | j                   «       |�.|j                  «       }|j                  dd| j                  ¬«       | j                  r*t	        j                  dt	        j                  «       z  «       | j                  r&| j                  j                  | j                  «       y y # 1 sw Y   Œ¢xY w)NÚwú
T)Úshow_missingÚsummaryru   zleaks %d)r‡   r†   rš   Úwriterc   Úunlinkr:   Úwrite_resultsrv   rI   ÚsystemÚgetpidrj   Úwrite_junit)rˆ   rñ   r¯   r:   s       rŒ   Úfinalize_testszRegrtest.finalize_testsª  så   € Ø×$Ò$Ø×$Ò$Ü˜$×3Ñ3°SÓ9ð ;¸RØ—H‘H˜T×2Ñ2°TÑ9Ô:÷;ð ;ô —	‘	˜$×3Ñ3Ô4àÐØ—n‘nÓ&ˆGØ×!Ñ!¨t¸TØ+/×+<Ñ+<ð "ô >ð ×ÒÜ�I‰I�j¤2§9¡9£;Ñ.Ô/à×ÒØ�L‰L×$Ñ$ T×%8Ñ%8Õ9ð ÷;ð ;ús   ¯DÄDc                 óN  — t        j                  «       | j                  j                  z
  }t	        | j
                  «      }t        «        t        dt        |«      z  «       | j                  j                  | j                  |«       | j                  «       }t        d|› �«       y )NzTotal duration: %szResult: )r�   r‚   r<   rƒ   ÚboolrP   rª   r    r:   Údisplay_summaryr~   rÆ   )rˆ   ÚdurationÚfilteredrè   s       rŒ   r#  zRegrtest.display_summary½  s€   € Ü×$Ñ$Ó&¨¯©×)?Ñ)?Ñ?ˆÜ˜×(Ñ(Ó)ˆô 	ŒÜÐ"¤_°XÓ%>Ñ>Ô?à�‰×$Ñ$ T×%8Ñ%8¸(ÔCð —‘Ó ˆÜ�˜˜Ð Õ!rŽ   c                 ó  — t        |fi d| j                  “d| j                  “d| j                  “dd “dd“d| j                  “d| j
                  “d	| j                  “d
| j                  “d| j                  “d| j                  “d| j                  “d| j                  “d| j                  “d| j                  d u“d| j                  “d| j                  “d| j                   “d| j"                  “d| j$                  “d| j&                  “ŽS )Nr[   r\   rP   r½   rF   Fr^   r7   r8   r`   ra   r5   r6   rf   rh   Ú	use_junitrl   rn   rp   rr   ry   r{   )r   r[   r\   rP   r^   r7   r8   r`   ra   r5   r6   rf   rh   rj   rl   rn   rp   rr   ry   r{   )rˆ   r“   s     rŒ   Úcreate_run_testszRegrtest.create_run_testsË  sG  € ÜØò
à—n’nð
ð "×2Ò2ð
ð ×(Ò(ð	
ñ
 "ð
ñ ð
ð —L’Lð
ð —’ð
ð ×*Ò*ð
ð #×4Ò4ð
ð —L’Lð
ð —L’Lð
ð —*’*ð
ð ×*Ò*ð
ð —]’]ð
ð  ×*Ñ*°$Ñ6ð!
ð" ×*Ò*ð#
ð$ ×*Ò*ð%
ð& ×,Ò,ð'
ð( —’ð)
ð* —n’nð+
ð, ×(Ò(ð-
ð 	
rŽ   r¶   c                 óF  — | j                   r7| j                   j                  dk  rd}t        |t        j                  d¬«       | j
                  dk  rt        «       xs ddz   | _        | j                  s2| j                  sF| j                  s:| j                  s.|s,| j                  s t        | j                  | j                  «       t        d| j                  «       | j!                  |«      }|| _        | j$                  j'                  |«       t)        «        |j                   �| j
                  sd	}nt*        }|r| j$                  j-                  «        	 | j
                  r| j/                  || j
                  «       d }n| j1                  |«      }| j3                  |«       | j4                  r+| j6                  j9                  «       r| j;                  |«       | j<                  r+| j6                  j9                  «       r| j?                  |«       |r| j$                  jA                  «        	 | jC                  «        | jE                  |«       | j6                  jG                  | jH                  | jJ                  «      S # |r| j$                  jA                  «        w w xY w)
Né   zhWARNING: Running tests with --huntrleaks/-R and less than 3 warmup repetitions can give false positives!T)ÚfilerÒ   r   r   é   zUsing random seed:F)&rf   r‰   rª   r«   ÚstdoutrX   r*   r>   r7   r6   r…   rV   r%   rp   rr   r{   r(  r~   r<   rÁ   r   r   Ústart_load_trackerrÂ   r  rÈ   rG   r:   Ú
need_rerunrÊ   rK   ræ   Ústop_load_trackerr#  r   Úget_exitcoder\   r]   )rˆ   r¶   r“   r  r»   Úuse_load_trackerrñ   s          rŒ   Ú
_run_testszRegrtest._run_testså  s  € Ø×Ò ×!2Ñ!2×!:Ñ!:¸QÒ!>ðNˆCä�#œCŸJ™J¨dÕ3à×Ñ˜aÒô !2Ó 3Ò 8°q¸AÑ=ˆDÔð ×ÒØ—8’8˜tŸzšz¨T×-AÒ-AÙ˜t×0Ò0Ü˜4×-Ñ-¨t¯©Ô?äÐ" D×$4Ñ$4Ô5à×(Ñ(¨Ó2ˆØ&ˆÔØ�‰×Ñ˜hÔ'äŒà×!Ñ!Ð-¸×8HÒ8Hà$Ñô  *ÐáØ�K‰K×*Ñ*Ô,ð	0Ø×ÒØ×"Ñ" 8¨T×-=Ñ-=Ô>Ø‘à×4Ñ4°XÓ>�à×Ñ Ô)à�Š 4§<¡<×#:Ñ#:Ô#<Ø×'Ñ'¨Ô1à×Ò D§L¡L×$;Ñ$;Ô$=Ø—‘ Ô)áØ—‘×-Ñ-Õ/à×ÑÔØ×Ñ˜FÔ#à�|‰|×(Ñ(¨×)>Ñ)>Ø)-¯©ó:ð 	:øñ  Ø—‘×-Ñ-Õ/ð  ús   ÅB;J ÊJ c                 ó@  — t        j                  | j                  d¬«       t        | j                  «      }t	        «       5  t        j                  |d¬«      5  | j                  ||«      cd d d «       cd d d «       S # 1 sw Y   nxY w	 d d d «       y # 1 sw Y   y xY w)NT)Úexist_ok)r6   )rc   Úmakedirsrx   r#   r$   r   Útemp_cwdr3  )rˆ   r¶   r“   Úwork_dirs       rŒ   Ú	run_testszRegrtest.run_tests  s‰   € Ü
�‰�D—L‘L¨4Õ0Ü §¡Ó-ˆô ‹^ñ 
	8ô
 ×#Ñ# H°DÔ9ñ 8ð
 —‘ x°Ó7÷8ð 8÷
	8ñ 
	8÷
8ð 8úð 8÷
	8÷ 
	8ñ 
	8ús$   ÁBÁA>Á+	BÁ>B	ÂBÂBc                 óü  — t        | j                  «      }d }t        «       }t        «       }|rch d£}t        j
                  }t        j
                  j                  «       D ��	ci c]  \  }}	|j                  d«      r||v r||	“Œ }
}}	|
|k7  r|
}d}|ra|r_| j                  dk(  r|j                  ddg«       | j                  s1t        j                  d«      }|› d|› �}|j                  d	|g«       d}||fS c c}	}w )
N>   Ú
PYTHONPATHÚ_PYTHON_PROJECT_BASEÚ_PYTHON_HOST_PLATFORMÚ_PYTHON_SYSCONFIGDATA_NAME)ÚPYTHONÚ_PYTHONTr   z-jÚ2ÚBUILDPYTHONú z--python)r"  rr   r(   r)   rc   rz   Úitemsrü   rX   rÕ   Ú	sysconfigÚget_config_var)rˆ   Úregrtest_optsÚkeep_environrz   Úcross_compileÚ
hostrunnerÚkeepÚold_environrº   ÚvalueÚnew_environÚbuildpythonrr   s                rŒ   Ú_add_cross_compile_optsz Regrtest._add_cross_compile_opts0  s  € ô ˜DŸO™OÓ,ˆØˆô *Ó+ˆô %Ó&ˆ
áòˆDô Ÿ*™*ˆKä/1¯z©z×/?Ñ/?Ó/A÷Ù +  eØ—‘Ð'<Ô=ÀÈÁð �e‘ðˆKñ ð
 ˜kÒ)Ø%�ØˆLá™ZØ×Ñ 1Ò$ð ×$Ñ$ d¨C [Ô1ð —?’?Ü'×6Ñ6°}ÓE�Ø *˜|¨1¨[¨MÐ:�
Ø×$Ñ$ j°*Ð%=Ô>Ø#�à˜Ð&Ð&ùó/s   Á#"C8c                 óZ  — t         j                  j                  s|j                  d«       dt         j                  vr|j                  d«       t         j                  j                  dk  r|j                  d«       |s-t         j                  j                  s|j                  d«       y y y )NrÎ   Údefault)z-WrR  r,  z-bbz-E)	r«   r-  Úwrite_throughr£   ÚwarnoptionsrÕ   ÚflagsÚbytes_warningÚignore_environment)rˆ   Úpython_optsrH  s      rŒ   Ú_add_ci_python_optszRegrtest._add_ci_python_opts_  s†   € ô
 �z‰z×'Ò'Ø×Ñ˜tÔ$ð œCŸO™OÑ+Ø×ÑÐ0Ô1ô �9‰9×"Ñ" QÒ&Ø×Ñ˜uÔ%áä—9‘9×/Ò/Ø×"Ñ" 4Õ(ð 0ð rŽ   c                 ó  — t         j                  j                  «        t         j                  j                  «        t	        j
                  |«      }	 t        d|› �d¬«       t        t        d«      r t        st        j                  |d   |«       y dd l}|j                  ||¬«      5 }	 |j                  «        d d d «       t        j$                  j(                  «       y # t        $ ri 	 |j                  t        ¬«       nN# |j                   $ r< |j#                  «        |j                  «        t        j$                  t&        «       Y nw xY wY Œ™w xY w# 1 sw Y   ŒžxY w# t*        $ r}t-        d|›d	|› �«       Y d }~y d }~ww xY w)
Nz+ TrÑ   Úexecvr   )ÚenvrÓ   z!Failed to change Python options: z

Command: )r«   r-  rÒ   Ústderrr×   r™   rª   Úhasattrrc   r   r[  rØ   ÚPopenrB   ÚKeyboardInterruptr+   ÚTimeoutExpiredÚkillr¬   r   rÚ   Ú	Exceptionr'   )rˆ   rÜ   rz   Úcmd_textrØ   rÝ   Úexcs          rŒ   Ú_execute_pythonzRegrtest._execute_pythont  s>  € ä�
‰
×ÑÔÜ�
‰
×ÑÔä—:‘:˜c“?ˆð	2Ü�B�x�j�/¨Õ.ä”r˜7Ô#­JÜ—‘˜˜Q™ Õ%ó "Ø×%Ñ% c¨wÐ%Ó7ð ;¸4ð
;ØŸ	™	œ÷;ô —‘˜Ÿ™Õ)øô -ò ;ð;Ø ŸI™I¬l˜IÕ;øØ)×8Ñ8ò ;Ø ŸI™IœKØ ŸI™IœKÜŸH™HÔ%9Ö:ð;üð;ú÷;ð ;ûô ò 	2ÜÐ=¸c¸Wð E&Ø&. Zð1÷ 2ñ 2ûð	2úsy   Á?E% ÂE% Â*EÂ,C$Â<'E% Ã$	EÃ.DÄEÄAEÅEÅEÅEÅEÅEÅEÅE"ÅE% Å%	F	Å.FÆF	c                 ó*  — g }g }| j                  |«      \  }}| j                  r| j                  ||«       |s|s|€y t        t        j
                  «      }|r||dd |r|j                  |«       |j                  d«       | j                  ||«       y )Nr   z--dont-add-python-opts)	rP  rN   rY  Úlistr«   Ú	orig_argvrÕ   r£   rf  )rˆ   rX  rG  rz   rH  rÜ   s         rŒ   r/   zRegrtest._add_python_opts–  sŽ   € ØˆØˆà $× <Ñ <¸]Ó KÑˆ�Ø�<Š<Ø×$Ñ$ [°,Ô?á¡m¸'¸/àô ”3—=‘=Ó!ˆÙØ"ˆC��!ˆHÙØ�J‰J�}Ô%Ø�
‰
Ð+Ô,à×Ñ˜S 'Õ*rŽ   c                 óh  — t         j                  j                  d¬«       | j                  rWt        j
                  j                  | j                  «      s.t        j
                  j                  | j                  «      | _        t        | j                  «       t        | j                  «      | _        y )NÚbackslashreplace)Úerrors)r«   r-  Úreconfigurerj   rc   rd   Úisabsre   r   rV   r"   rx   )rˆ   s    rŒ   Ú_initzRegrtest._init¬  sq   € ô 	�
‰
×ÑÐ&8ÐÔ9à×Ò¤r§w¡w§}¡}°T×5HÑ5HÔ'IÜ"$§'¡'§/¡/°$×2EÑ2EÓ"FˆDÔä˜×)Ñ)Ô*ä# D§L¡LÓ1ˆ�rŽ   c                 ó4  — | j                   r| j                  «        | j                  «        | j                  r*t	        | j
                  «       t        j                  d«       | j                  rt        d«       t        | j                  «       | j                  |«      \  }}d}| j                  r| j                  |«       nA| j                  r#t!        || j"                  | j                  ¬«       n| j%                  ||«      }t        j                  |«       y )Nr   zPress any key to continue...)rP   rh   )rO   r/   ro  rE   r&   rx   r«   r¬   rC   Úinputr   rh   r¸   r@   r?   rA   r   rP   r9  )rˆ   r“   r¶   rÞ   s       rŒ   ÚmainzRegrtest.main¹  sÉ   € Ø×$Ò$Ø×!Ñ!Ô#à�
‰
Œà×ÒÜ˜TŸ\™\Ô*Ü�H‰H�QŒKà�>Š>ÜÐ0Ô1ä�t—}‘}Ô%ØŸ/™/¨%Ó0‰ˆ�%àˆØ×ÒØ�O‰O˜HÕ%Ø×!Ò!Ü�xØ#'×#3Ñ#3Ø $§¡ö/ð —~‘~ h°Ó6ˆHä�‰�ÕrŽ   )F)rã   r�   )&Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r"  r�   r‘   r   ro   r   r¸   Ústaticmethodr?   r   rÃ   rÊ   r  rß   ræ   rÈ   r   ró   r  rÆ   r4   rÂ   r   r#  r(  r3  r9  rP  rY  rf  r/   ro  rr  © rŽ   rŒ   r-   r-      su  „ ññ,d9˜9ð d9¸ó d9óLñF( ¨4¡ð F(¸5ÀÈHÐW[ÉOÐA[Ñ;\ó F(ðP ð˜)ò ó ðð¨Hó ð2,¨8ó ,ð($ Hð $°Cð $À3ð $È4ó $ðL	 8ð 	°ó 	ò
Dð (ð °hó ò:òxðK hð K¸Sð KÀTó Kò:ò&"ð
 ió 
ð48: 9ð 8:°XÀ±_ð 8:Èó 8:ðt8 )ð 8°H¸t±Oð 8Èó 8ò"-'ò^)ò*2òD+ò,2ñ˜( T™/ô rŽ   r-   c                 óx   — t        t        j                  dd fi |¤Ž}t        ||¬«      j	                  | ¬«       y)zRun the Python suite.r   N)r/   )r“   )r   r«   Úargvr-   rr  )r“   r/   Úkwargsr.   s       rŒ   rr  rr  Ö  s4   € ä	”S—X‘X˜a˜b�\Ñ	, VÑ	,€BÜˆRÐ"2Ô3×8Ñ8¸uÐ8ÕErŽ   )NF)<rc   r|   rž   r×   r«   rE  r�   Útest.supportr   r   r   Úcmdliner   r   r	   r
   r   r<   r   r7   r   rí   r   r:   r   r   r»   r   r   Úsetupr   r   r„   r   r   r9   r   Úutilsr   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r-   rr  rx  rŽ   rŒ   ú<module>r€     sr   ðÛ 	Û Û 	Û Û 
Û Û ç AÑ Aç +ß AÑ AÝ Ý  Ý ß 6ß +ß 0ß 6Ý "÷÷ ÷ ÷ ÷ ó ÷u
ñ u
ôpFrŽ   