§
    ‹ã÷crL ã                  óN  — U d dl mZ d dlmZ d dlmZ d dlmZ d dlm	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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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c 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* ddl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 ddl3m4Z4m5Z5 ddl6m7Z7 ddl8m9Z9m:Z: ej;        rej<        d         Z=dZ>dZ?dZ@d}d„ZAd}d„ZBdddddddœZCd~d„ZDdd„ZEd€d#„ZFd�d$„ZGd‚d'„ZHdƒd*„ZId„d,„ZJd-„ ZKd.eLd/<    eA¦   «         sejM        ZKd…d2„ZN G d3„ d4e,¦  «        ZOejP         G d5„ d6ejQ        ¦  «        ¦   «         ZRejP         G d7„ d8ejQ        ¦  «        ¦   «         ZS G d9„ d:¦  «        ZT G d;„ d<¦  «        ZU G d=„ d>eU¦  «        ZV G d?„ d@eU¦  «        ZW G dA„ dBeV¦  «        ZX G dC„ dDeV¦  «        ZY G dE„ dFeU¦  «        ZZ G dG„ dH¦  «        Z[ G dI„ dJe[¦  «        Z\e\e[j]        e9j^        <    G dK„ dLe\¦  «        Z_e_e[j]        e9j`        <    G dM„ dNe[¦  «        Zaeae[j]        e9jb        <    G dO„ dPe[¦  «        Zcece[j]        e9jd        <   d†dS„Zed‡dY„Zfdˆd[„Zgd‰d^„ZhdŠdb„Zid‹de„Zj	 dŒd�dj„Zk G dk„ dl¦  «        Zl G dm„ dn¦  «        Zm G do„ dp¦  «        ZndŽdr„Zod�dw„Zpd�dz„Zqd‘d|„ZrdS )’é    )Úannotations)ÚPath)Údeque)Úsuppress)ÚdeepcopyNé   )Úbuild)Úenvironment)Úmlog)Úmajor_versions_differÚMesonVersionMismatchException©Úversion)ÚMesonExceptionÚ
OrderedSetÚRealPathActionÚget_wine_shortpathÚ	join_argsÚ
split_argsÚsetup_vsenv)Úget_infodirÚload_info_file)ÚExternalProgram)ÚTestProtocolÚTestSerialisation)úTAPParser.TestúTAPParser.ErrorúTAPParser.VersionúTAPParser.PlanúTAPParser.UnknownLineúTAPParser.BailoutéM   éc   é   ÚreturnÚboolc                 óX   — t          j        ¦   «                              ¦   «         } | dk    S )NÚwindows)ÚplatformÚsystemÚlower)Úplatnames    ú2/usr/lib/python3/dist-packages/mesonbuild/mtest.pyÚ
is_windowsr.   J   s&   € ÝŒÑ Ô ×&Ò&Ñ(Ô(€HØ�yÒ Ð ó    c                 ó"   — t           j        dk    S )NÚcygwin)Úsysr)   © r/   r-   Ú	is_cygwinr4   N   s   € ÝŒ<˜8Ò#Ð#r/   é   )ÚFÚHÚWÚNaÚNÚAÚsÚstrÚintc                ó\   — d}| D ]&}t          j        |¦  «        }|t          |         z  }Œ'|S )Nr   )ÚunicodedataÚeast_asian_widthÚUNIWIDTH_MAPPING)r<   ÚresultÚcÚws       r-   ÚuniwidthrF   R   s=   € Ø€FØð &ð &ˆÝÔ(¨Ñ+Ô+ˆØÕ" 1Ô%Ñ%ˆˆØ€Mr/   c                 ó   — d} | t           j        v rF	 t          t           j        |          ¦  «        }nL# t          $ r t	          d| › d�¦  «         d}Y n+w xY w	 t          j        ¦   «         }n# t          $ r d}Y nw xY w|S )NÚMESON_TESTTHREADSzInvalid value in z, using 1 thread.r   )ÚosÚenvironr>   Ú
ValueErrorÚprintÚmultiprocessingÚ	cpu_countÚ	Exception)ÚvarnameÚnum_workerss     r-   Údetermine_worker_countrR   Y   s®   € Ø!€GØ•"”*ÐÐð	Ý�bœj¨Ô1Ñ2Ô2ˆKˆKøÝð 	ð 	ð 	ÝÐ@ gÐ@Ð@Ð@ÑAÔAÐAØˆKˆKˆKð	øøøð	õ *Ô3Ñ5Ô5ˆKˆKøÝð 	ð 	ð 	ØˆKˆKˆKð	øøøàÐs!   ’2 ²AÁAÁA, Á,A;Á:A;Úparserúargparse.ArgumentParserÚNonec                ó²  — |                       ddt          d¬¦  «         |                       dddt          d¬	¦  «         |                       d
ddd¬¦  «         |                       ddddd¬¦  «         |                       dddd¬¦  «         |                       ddddd¬¦  «         |                       dd dt          d¬	¦  «         |                       ddt          t          j        j        d¬ ¦  «         |                       d!g d"d#d$d%¬&¦  «         |                       d'g d(d#d$d)¬&¦  «         |                       d*d+d,d-d.¬¦  «         |                       d/ddd0¬¦  «         |                       d1ddd2¬¦  «         |                       d3d4d5¬6¦  «         |                       d7t          ¦   «         t          d8¬¦  «         |                       d9d:ddd;¬¦  «         |                       d<d=ddd>¬¦  «         |                       d?d@t          d dA¬B¦  «         |                       dCd dDdE¬¦  «         |                       dFg t          dG¬¦  «         |                       dHdIdJ¬K¦  «         d S )LNz	--maxfailr   zbNumber of failing tests before aborting the test run. (default: 0, to disable aborting on failure))ÚdefaultÚtypeÚhelpz--repeatr   Úrepeatz!Number of times to run the tests.)rW   ÚdestrX   rY   z--no-rebuildFÚ
store_truez$Do not rebuild before running tests.)rW   ÚactionrY   z--gdbÚgdbzRun test under gdb.)rW   r[   r]   rY   z
--gdb-pathÚgdb_pathz&Path to the gdb binary (default: gdb).)rW   r[   rY   z--listÚlistzList available tests.z	--wrapperÚwrapperz)wrapper to run tests with (e.g. Valgrind)ú-CÚwdz#directory to cd into before running)r[   r]   rX   rY   z--suiteÚinclude_suitesÚappendÚSUITEz,Only run tests belonging to the given suite.)rW   r[   r]   ÚmetavarrY   z
--no-suiteÚexclude_suitesz.Do not run tests belonging to the given suite.z--no-stdsplitTÚsplitÚstore_falsez,Do not split stderr and stdout in test logs.z--print-errorlogsz%Whether to print failing tests' logs.z--benchmarkz Run benchmarks instead of tests.z	--logbaseÚtestlogzBase name for log file.)rW   rY   z--num-processesz#How many parallel processes to use.z-vz	--verbosez!Do not redirect stdout and stderrz-qú--quietz$Produce less output to the terminal.z-tz--timeout-multiplierzžDefine a multiplier for test timeout, for example  when running tests in particular conditions they might take more time to execute. (<= 0 to disable timeout))rX   rW   rY   z--setupÚsetupzWhich test setup to use.z--test-argsz7Arguments to pass to the specified test(s) or all testsÚargsÚ*zÓOptional list of test names to run. "testname" to run all tests with that name, "subprojname:testname" to specifically run "testname" from "subprojname", "subprojname:" to run all tests defined by "subprojname".)ÚnargsrY   )	Úadd_argumentr>   r   r   rI   ÚpathÚabspathrR   Úfloat)rS   s    r-   Úadd_argumentsru   j   s›  € Ø
×Ò˜¨QµSðQð ñ Rô Rð Rð ×Ò˜
¨A°HÅ3Ø@ð ñ Bô Bð Bà
×Ò˜°¸lØCð ñ Eô Eð Eà
×Ò˜¨°UÀ<Ø2ð ñ 4ô 4ð 4à
×Ò˜¨e¸*ØEð ñ Gô Gð Gà
×Ò˜¨%°fÀ\Ø4ð ñ 6ô 6ð 6à
×Ò˜¨T¸	Í
ØHð ñ Jô Jð Jà
×Ò˜ 4µõ  œWœ_ØBð	 ñ Dô Dð Dð
 ×Ò˜	¨2Ð4DÈXÐ_fØKð ñ Mô Mð Mà
×Ò˜¨bÐ7GÐPXÐbiØMð ñ Oô Oð Oà
×Ò˜°¸GÈMØKð ñ Mô Mð Mà
×ÒÐ+°UÀ<ØDð ñ Fô Fð Fà
×Ò˜¨u¸\Ø?ð ñ Aô Að Aà
×Ò˜¨YØ6ð ñ 8ô 8ð 8à
×ÒÐ)Õ3IÑ3KÔ3KÕRUØBð ñ Dô Dð Dà
×Ò˜˜k°5ÀØ@ð ñ Bô Bð Bà
×Ò˜˜i°¸|ØCð ñ Eô Eð Eà
×Ò˜Ð4½5È$ðKð ñ Lô Lð Lð ×Ò˜	¨4°gØ7ð ñ 9ô 9ð 9à
×Ò˜¨r½
ØVð ñ Xô Xð Xà
×Ò˜ cðTð ñ Uô Uð Uð Uð Ur/   c                óâ   — | d         dk    rdnd}	 t          | |¬¦  «         d S # t          $ r? |                      dd¬¦  «                             d¦  «        } t          | |¬¦  «         Y d S w xY w)Néÿÿÿÿú
Ú ©ÚendÚasciiÚbackslashreplace©Úerrors)rL   ÚUnicodeEncodeErrorÚencodeÚdecode)r<   r{   s     r-   Ú
print_saferƒ   Ÿ   s�   € Ø�"”˜’�ˆ"ˆ" 4€CðÝˆa�SÐÑÔÐÐÐøÝð ð ð Ø�HŠH�WÐ%7ˆHÑ8Ô8×?Ò?ÀÑHÔHˆÝˆa�SÐÑÔÐÐÐÐðøøøs   ’% ¥AA.Á-A.ÚaÚbc                ó"   — | s|S |s| S | dz   |z   S ©Nrx   r3   )r„   r…   s     r-   Ú
join_linesrˆ   §   s*   € Øð ØˆØð ØˆØˆt‰8�a‰<Ðr/   ÚdashÚcolsc                óz   — | s||z  S d| z   dz   } t          | ¦  «        }||z
  dz  }||z  | z   } | |||z
  |z
  z  z   S )Nú r5   )rF   )r<   r‰   rŠ   ÚwidthÚfirsts        r-   Údashesr�   ®   sa   € Øð Ø�d‰{ÐØˆa‰�#‰€AÝ�Q‰KŒK€EØ�E‰\˜aÑ€EØˆu‰�qÑ€AØˆt�t˜e‘| eÑ+Ñ,Ñ,Ð,r/   Úretcodec                ó  — | dk     r8|  }	 t          j        |¦  «        j        }n# t          $ r d}Y nw xY wd|› d|› �S | dk    rd| › �S | dz
  }	 t          j        |¦  «        j        }n# t          $ r d}Y nw xY wd| › d|› d|› d	�S )
Nr   Ú
SIGinvalidzkilled by signal rŒ   é€   zexit status z(exit status z or signal ú))ÚsignalÚSignalsÚnamerK   )r�   ÚsignumÚsignames      r-   Úreturncode_to_statusrš   ·   så   € ð �‚{€{Ø�ˆð	#Ý”n VÑ,Ô,Ô1ˆGˆGøÝð 	#ð 	#ð 	#Ø"ˆGˆGˆGð	#øøøà5 6Ð5Ð5¨GÐ5Ð5Ð5à�#‚~€~Ø'˜gÐ'Ð'Ð'à�s‰]€FðÝ”. Ñ(Ô(Ô-ˆˆøÝð ð ð ØˆˆˆðøøøàB˜7ÐBÐB¨vÐBÐB¸ÐBÐBÐBÐBs   ‹% ¥4³4ÁA* Á*A9Á8A9c                ó   — | S ©Nr3   )Úxs    r-   ú<lambda>rž   Ñ   s   € ¨Q€ r/   zT.Callable[[str], str]Úsh_quoteÚenvúT.Iterable[T.Tuple[str, str]]c                ó@   — d                      d„ | D ¦   «         ¦  «        S )Nry   c                óZ   — g | ](\  }}d                       |t          |¦  «        ¦  «        ‘Œ)S )z{}={} )ÚformatrŸ   )Ú.0ÚkÚvs      r-   ú
<listcomp>z$env_tuple_to_str.<locals>.<listcomp>Ö   s0   € ÐDÐDÐD¹¸¸1�H—O’O A¥x°¡{¤{Ñ3Ô3ÐDÐDÐDr/   )Újoin)r    s    r-   Úenv_tuple_to_strrª   Õ   s#   € Ø�7Š7ÐDÐDÀÐDÑDÔDÑEÔEÐEr/   c                  ó   — e Zd ZdS )ÚTestExceptionN)Ú__name__Ú
__module__Ú__qualname__r3   r/   r-   r¬   r¬   Ù   s   € € € € € Ø€Dr/   r¬   c                  ó   — e Zd ZdZdZdZdS )ÚConsoleUserr   r   r5   N)r­   r®   r¯   ÚLOGGERÚGDBÚSTDOUTr3   r/   r-   r±   r±   Ý   s#   € € € € € ð €Fð €Cð €F€F€Fr/   r±   c                  ó†   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
Zedd„¦   «         Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„ZdS ) Ú
TestResultÚPENDINGÚRUNNINGÚOKÚTIMEOUTÚ	INTERRUPTÚSKIPÚFAILÚEXPECTEDFAILÚUNEXPECTEDPASSÚERRORr%   r>   c                 ó   — dS )Né   r3   r3   r/   r-   ÚmaxlenzTestResult.maxlenø   s   € àˆrr/   r&   c                ó6   — | t           j        t           j        hv S rœ   )r¶   r¹   r¾   ©Úselfs    r-   Úis_okzTestResult.is_okü   s   € Ø�
œ¥zÔ'>Ð?Ð?Ð?r/   c                óx   — | t           j        t           j        t           j        t           j        t           j        hv S rœ   )r¶   r½   rº   r»   r¿   rÀ   rÅ   s    r-   Úis_badzTestResult.is_badÿ   s0   € Ø�
œ­Ô);½ZÔ=QÝ"Ô1µ:Ô3CðEð Eð 	Er/   c                ó6   — | t           j        t           j        hvS rœ   )r¶   r·   r¸   rÅ   s    r-   Úis_finishedzTestResult.is_finished  s   € Ø�JÔ.µ
Ô0BÐCÐCÐCr/   c                ó6   — | t           j        t           j        fv S rœ   )r¶   rº   r»   rÅ   s    r-   Ú
was_killedzTestResult.was_killed  s   € Ø�
Ô*­JÔ,@ÐAÐAÐAr/   r<   r=   úmlog.AnsiDecoratorc                ó  — |                       ¦   «         rt          j        }nT| t          j        t          j        fv rt          j        }n-|                      ¦   «         rt          j        }nt          j	        } ||¦  «        S rœ   )
rÉ   r   Úredr¶   r¼   r¾   ÚyellowrË   ÚgreenÚblue)rÆ   r<   Ú	decorators      r-   ÚcolorizezTestResult.colorize	  sk   € Ø�;Š;‰=Œ=ð 	"ÝœˆIˆIØ•j”o¥zÔ'>Ð?Ð?Ð?ÝœˆIˆIØ×ÒÑÔð 	"Ýœ
ˆIˆIåœ	ˆIØˆy˜‰|Œ|Ðr/   rÕ   c                ó®   — d                      | j        |                      ¦   «         ¬¦  «        }|                      |¦  «                             |¦  «        S )Nz{res:{reslen}})ÚresÚreslen)r¤   ÚvaluerÃ   rÕ   Úget_text)rÆ   rÕ   Ú
result_strs      r-   rÚ   zTestResult.get_text  sD   € Ø%×,Ò,°´ÀDÇKÂKÁMÄMÐ,ÑRÔRˆ
Ø�}Š}˜ZÑ(Ô(×1Ò1°(Ñ;Ô;Ð;r/   c                óF   — t          |                      d¦  «        ¦  «        S )Nz>>> )r=   rÕ   rÅ   s    r-   Úget_command_markerzTestResult.get_command_marker  s   € Ý�4—=’= Ñ(Ô(Ñ)Ô)Ð)r/   N©r%   r>   ©r%   r&   )r<   r=   r%   rÎ   )rÕ   r&   r%   r=   ©r%   r=   )r­   r®   r¯   r·   r¸   r¹   rº   r»   r¼   r½   r¾   r¿   rÀ   ÚstaticmethodrÃ   rÇ   rÉ   rË   rÍ   rÕ   rÚ   rÝ   r3   r/   r-   r¶   r¶   ê   s  € € € € € ð €GØ€GØ	€BØ€GØ€IØ€DØ€DØ!€LØ%€NØ€Eàðð ð ñ „\ðð@ð @ð @ð @ðEð Eð Eð EðDð Dð Dð DðBð Bð Bð Bð	ð 	ð 	ð 	ð<ð <ð <ð <ð*ð *ð *ð *ð *ð *r/   r¶   c                  óX  — e Zd ZU  G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d	„ d
ej        ¦  «        Z	 G d„ dej        ¦  «        Z
dZdZdZ ej        d¦  «        Z ej        d¦  «        Z ej        dej        z   ¦  «        Z ej        dej        z   ¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        ZdZdZdZded<   dZdZdZded<   dZeZ dZ!d6d+„Z"d7d/„Z#d8d3„Z$d9d5„Z%dS ):Ú	TAPParserc                  ó8   — e Zd ZU ded<   ded<   ded<   ded<   dS )	r   r>   Ú	num_testsr&   ÚlateÚskippedúT.Optional[str]ÚexplanationN©r­   r®   r¯   Ú__annotations__r3   r/   r-   ÚPlanzTAPParser.Plan  s9   € € € € € € Øˆˆ‰Øˆ
ˆ
‰
Øˆˆ‰Ø$Ð$Ð$Ñ$Ð$Ð$r/   rì   c                  ó   — e Zd ZU ded<   dS )r!   r=   ÚmessageNrê   r3   r/   r-   ÚBailoutzTAPParser.Bailout#  ó   € € € € € € Øˆˆ‰ˆˆr/   rï   c                  ó@   — e Zd ZU ded<   ded<   ded<   ded<   dd
„ZdS )r   r>   Únumberr=   r—   r¶   rC   rè   ré   r%   c                óH   — | j         › d| j        › �                     ¦   «         S )NrŒ   )rò   r—   ÚstriprÅ   s    r-   Ú__str__zTAPParser.Test.__str__,  s&   € Ø”kÐ/Ð/ D¤IÐ/Ð/×5Ò5Ñ7Ô7Ð7r/   Nrà   )r­   r®   r¯   rë   rõ   r3   r/   r-   ÚTestzTAPParser.Test&  sT   € € € € € € Øˆˆ‰Øˆ	ˆ	‰	ØÐÐÑØ$Ð$Ð$Ñ$ð	8ð 	8ð 	8ð 	8ð 	8ð 	8r/   rö   c                  ó   — e Zd ZU ded<   dS )r   r=   rî   Nrê   r3   r/   r-   ÚErrorzTAPParser.Error/  rð   r/   rø   c                  ó$   — e Zd ZU ded<   ded<   dS )r    r=   rî   r>   ÚlinenoNrê   r3   r/   r-   ÚUnknownLinezTAPParser.UnknownLine2  s"   € € € € € € Øˆˆ‰Øˆˆ‰ˆˆr/   rû   c                  ó   — e Zd ZU ded<   dS )r   r>   r   Nrê   r3   r/   r-   ÚVersionzTAPParser.Version6  rð   r/   rý   r   r5   r$   zBail out!\s*(.*)z<(?:\s*\#\s*([Ss][Kk][Ii][Pp]\S*|[Tt][Oo][Dd][Oo])\b\s*(.*))?z1\.\.([0-9]+)z'((?:not )?ok)\s*(?:([0-9]+)\s*)?([^#]*)zTAP version ([0-9]+)z
(\s+)---.*z\s+\.\.\.\s*FNzT.Optional[Plan]Úplanr   úT.Optional[int]Úyaml_linenory   é   Úokr&   Únumr>   r—   r=   Ú	directiverè   ré   r%   úET.Generator[T.Union['TAPParser.Test', 'TAPParser.Error'], None, None]c              #  ó  K  — |                      ¦   «         }|r|                      ¦   «         nd }|�§|                     ¦   «         }|                     d¦  «        r)|r&|                      ||t          j        |¦  «        V — d S nU|dk    r4|                      |||rt          j        nt          j        |¦  «        V — d S |                      d|› d�¦  «        V — |                      |||rt          j	        nt          j
        |¦  «        V — d S )Nr¼   ÚTODOzinvalid directive "ú")rô   ÚupperÚ
startswithrö   r¶   r¼   r¿   r¾   rø   r¹   r½   )rÆ   r  r  r—   r  ré   s         r-   Ú
parse_testzTAPParser.parse_testO  s#  è è € à�zŠz‰|Œ|ˆØ-8ÐB�k×'Ò'Ñ)Ô)Ð)¸dˆØÐ Ø!ŸšÑ)Ô)ˆIØ×#Ò# FÑ+Ô+ð EØð ØŸ)š) C¨­z¬ÀÑLÔLÐLÐLÐLØ�Fðð ˜fÒ$Ð$Ø—i’i  TÈÐ+g­:Ô+DÐ+DÕPZÔPgÐitÑuÔuÐuÐuÐuØ�à—j’jÐ!C°yÐ!CÐ!CÐ!CÑDÔDÐDÐDÐDà�iŠi˜˜T°BÐ#K¥:¤= =½J¼OÈ[ÑYÔYÐYÐYÐYÐYÐYr/   ÚlinesúT.AsyncIterator[str]úT.AsyncIterator[TYPE_TAPResult]c               ó”   K  — |2 3 d {V —†}|                       |¦  «        D ]}|W V — ŒŒ%6 |                       d ¦  «        D ]}|W V — Œd S rœ   ©Ú
parse_line)rÆ   r  ÚlineÚevents       r-   Úparse_asynczTAPParser.parse_asynca  s”   è è € Øð 	ð 	ð 	ð 	ð 	ð 	ð 	�$ØŸš¨Ñ.Ô.ð ð �Ø�����ðð  ð —_’_ TÑ*Ô*ð 	ð 	ˆEØˆKˆKˆKˆKˆKð	ð 	s   …*ÚioúT.Iterator[str]úT.Iterator[TYPE_TAPResult]c              #  ó€   K  — |D ]}|                       |¦  «        E d {V —† Œ|                       d ¦  «        E d {V —† d S rœ   r  )rÆ   r  r  s      r-   ÚparsezTAPParser.parseh  sf   è è € Øð 	-ð 	-ˆDØ—’ tÑ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ø—?’? 4Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(r/   r  c           	   #  óB  K  — |��Ï| xj         dz  c_         |                     ¦   «         }| j        | j        k    rh| j        dk    rP| j                             |¦  «        }|r4| j        | _        | j         | _        | 	                    d¦  «        | _
        d S | j        | _        n€| j        | j        k    rp| j                             |¦  «        r| j        | _        d S |                     | j
        ¦  «        rd S |                      d| j        › d�¦  «        V — | j        | _        | j        | j        k    sJ ‚|r|                     d¦  «        rd S | j                             |¦  «        }|�r%| j        r1| j        j        r%| j        s|                      d¦  «        V — d| _        | xj        dz  c_        | 	                    d¦  «        €| j        n!t)          | 	                    d¦  «        ¦  «        }|| j        k    r|                      d	¦  «        V — |                      | 	                    d¦  «        d
k    || 	                    d¦  «        | 	                    d¦  «        | 	                    d¦  «        ¦  «        E d {V —† | j        | _        d S | j                             |¦  «        }|�r| j        r|                      d¦  «        V — nñt)          | 	                    d¦  «        ¦  «        }|dk    }| 	                    d¦  «        rq| 	                    d¦  «                             ¦   «                              d¦  «        r |dk    r|                      d¦  «        V — d}n|                      d¦  «        V — |                      || j        dk    || 	                    d¦  «        ¬¦  «        | _        | j        V — d S | j                             |¦  «        }|r3|                      | 	                    d¦  «        ¦  «        V — d| _        d S | j                             |¦  «        }|r�| j         dk    r|                      d¦  «        V — d S t)          | 	                    d¦  «        ¦  «        | _        | j        dk     r|                      d¦  «        V — n|                      | j        ¬¦  «        V — d S |                      || j         ¦  «        V — d S | j        | j        k    r |                      d| j        › d�¦  «        V — | j        s�| j        rŠ| j        | j        j        k    rw| j        | j        j        k     r/|                      d| j        j        › d| j        › d�¦  «        V — d S |                      d| j        j        › d| j        › d�¦  «        V — d S d S d S d S )Nr   é   z+YAML block not terminated (started on line r”   ú#zunexpected test after late planTr5   zout of order test numbersr  r$   é   é   zmore than one plan foundr   r¼   zinvalid SKIP directive for planzinvalid directive for plan)rå   ræ   rç   ré   z(version number must be on the first linez$version number should be at least 13r   zToo few tests run (expected z, got zToo many tests run (expected )rú   ÚrstripÚstateÚ_AFTER_TESTr   Ú_RE_YAML_STARTÚmatchÚ_YAMLr   ÚgroupÚyaml_indentÚ_MAINÚ_RE_YAML_ENDr
  rø   Ú_RE_TESTrþ   ræ   Úfound_late_testrå   r>   r  Ú_RE_PLANr	  rì   Ú_RE_BAILOUTrï   Ú
bailed_outÚ_RE_VERSIONrý   rû   )rÆ   r  Úmr  rå   rç   s         r-   r  zTAPParser.parse_linem  sÝ  è è € ØÑØˆKŒK˜1ÑˆKŒKØ—;’;‘=”=ˆDð Œz˜TÔ-Ò-Ð-Ø”< 2Ò%Ð%ØÔ+×1Ò1°$Ñ7Ô7�AØð Ø%)¤Z˜œ
Ø+/¬;˜Ô(Ø+,¯7ª7°1©:¬:˜Ô(Ø˜Ø!œZ�”
�
à”˜tœzÒ)Ð)ØÔ$×*Ò*¨4Ñ0Ô0ð Ø!%¤�D”JØ�FØ—?’? 4Ô#3Ñ4Ô4ð Ø�FØ—j’jÐ!bÈtÔO_Ð!bÐ!bÐ!bÑcÔcÐcÐcÐcØ!œZ�”
à”: ¤Ò+Ð+Ð+Ð+Øð ˜4Ÿ?š?¨3Ñ/Ô/ð Ø�à”×#Ò# DÑ)Ô)ˆAØñ Ø”9ð 0 ¤¤ð 0¸Ô8Lð 0ØŸ*š*Ð%FÑGÔGÐGÐGÐGØ+/�DÔ(Ø�” !Ñ#�”Ø()¯ª°©
¬
Ð(:�d”n�nÅÀAÇGÂGÈAÁJÄJÁÄ�Ø˜$œ.Ò(Ð(ØŸ*š*Ð%@ÑAÔAÐAÐAÐAØŸ?š?¨1¯7ª7°1©:¬:¸Ò+=¸sØ+,¯7ª7°1©:¬:°q·w²w¸q±z´zÀ1Ç7Â7È1Á:Ä:ñOô Oð Oð Oð Oð Oð Oð Oð Oà!Ô-�”
Ø�à”×#Ò# DÑ)Ô)ˆAØñ Ø”9ð $ØŸ*š*Ð%?Ñ@Ô@Ð@Ð@Ð@Ð@å # A§G¢G¨A¡J¤J¡¤�IØ'¨1šn�GØ—w’w˜q‘z”zð KØŸ7š7 1™:œ:×+Ò+Ñ-Ô-×8Ò8¸Ñ@Ô@ð KØ(¨1š}˜}Ø&*§j¢jÐ1RÑ&SÔ&SÐ SÐ SÐ SØ&*˜G˜Gà"&§*¢*Ð-IÑ"JÔ"JÐJÐJÐJØ $§	¢	°IÀTÄ^ÐVWÒEWØ29ÀqÇwÂwÈqÁzÄzð !*ñ !Sô !S�D”Iàœ)�O�O�OØ�àÔ ×&Ò& tÑ,Ô,ˆAØð Ø—l’l 1§7¢7¨1¡:¤:Ñ.Ô.Ð.Ð.Ð.Ø"&�”Ø�àÔ ×&Ò& tÑ,Ô,ˆAØð 
à”; !Ò#Ð#ØŸ*š*Ð%OÑPÔPÐPÐPÐPØ�FÝ" 1§7¢7¨1¡:¤:™œ�”Ø”< "Ò$Ð$ØŸ*š*Ð%KÑLÔLÐLÐLÐLÐLàŸ,š,¨t¬|˜,Ñ<Ô<Ð<Ð<Ð<Ø�ð ×"Ò" 4¨¬Ñ5Ô5Ð5Ð5Ð5Ð5Ð5ð Œz˜TœZÒ'Ð'Ø—j’jÐ!bÈtÔO_Ð!bÐ!bÐ!bÑcÔcÐcÐcÐcà”?ð s t¤yð s°T´^ÀtÄyÔGZÒ5ZÐ5ZØ”> D¤IÔ$7Ò7Ð7ØŸ*š*Ð%pÀDÄIÔDWÐ%pÐ%pÐ_cÔ_mÐ%pÐ%pÐ%pÑqÔqÐqÐqÐqÐqÐqàŸ*š*Ð%qÀTÄYÔEXÐ%qÐ%qÐ`dÔ`nÐ%qÐ%qÐ%qÑrÔrÐrÐrÐrÐrÐrð	sð sð sð sÐ5ZÐ5Zr/   )r  r&   r  r>   r—   r=   r  rè   ré   rè   r%   r  )r  r  r%   r  )r  r  r%   r  )r  rè   r%   r  )&r­   r®   r¯   ÚTÚ
NamedTuplerì   rï   rö   rø   rû   rý   r'  r!  r$  ÚreÚcompiler,  Ú_RE_DIRECTIVEÚpatternr+  r)  r.  r"  r(  r*  r-  rþ   rë   rú   rå   r   r&  r   r   r  r  r  r  r3   r/   r-   rã   rã     s`  € € € € € € ð%ð %ð %ð %ð %ˆqŒ|ñ %ô %ð %ðð ð ð ð �!”,ñ ô ð ð8ð 8ð 8ð 8ð 8ˆqŒ|ñ 8ô 8ð 8ðð ð ð ð �”ñ ô ð ðð ð ð ð �a”lñ ô ð ðð ð ð ð �!”,ñ ô ð ð €EØ€KØ€Eà�"”*Ð0Ñ1Ô1€KØ�B”JÐ^Ñ_Ô_€MØˆrŒzÐ*¨]Ô-BÑBÑCÔC€HØˆrŒzÐDÀ}ÔG\Ñ\Ñ]Ô]€HØ�"”*Ð4Ñ5Ô5€KØ�R”Z Ñ.Ô.€NØ�2”:˜oÑ.Ô.€Là€OØ€JØ!€DÐ!Ð!Ð!Ñ!Ø€FØ€IØ#'€KÐ'Ð'Ð'Ñ'Ø€KØ€EØ€GðZð Zð Zð Zð$ð ð ð ð)ð )ð )ð )ð
\sð \sð \sð \sð \sð \sr/   rã   c                  óF   — e Zd Zdd„Zdd„Zdd	„Zdd„Zdd„Zdd„Zdd„Z	dS )Ú
TestLoggerr%   rU   c                ó   — d S rœ   r3   rÅ   s    r-   ÚflushzTestLogger.flushÌ  ó   € Øˆr/   Úharnessú'TestHarness'c                ó   — d S rœ   r3   ©rÆ   r;  s     r-   ÚstartzTestLogger.startÏ  r:  r/   Útestú	'TestRun'c                ó   — d S rœ   r3   ©rÆ   r;  r@  s      r-   Ú
start_testzTestLogger.start_testÒ  r:  r/   r<   r=   r×   r¶   c                ó   — d S rœ   r3   )rÆ   r;  r@  r<   r×   s        r-   Úlog_subtestzTestLogger.log_subtestÕ  r:  r/   rC   c                ó   — d S rœ   r3   )rÆ   r;  rC   s      r-   ÚlogzTestLogger.logØ  r:  r/   c              ƒ  ó
   K  — d S rœ   r3   r>  s     r-   ÚfinishzTestLogger.finishÛ  s   è è € Øˆr/   c                ó   — d S rœ   r3   rÅ   s    r-   ÚclosezTestLogger.closeÞ  r:  r/   N©r%   rU   ©r;  r<  r%   rU   ©r;  r<  r@  rA  r%   rU   )
r;  r<  r@  rA  r<   r=   r×   r¶   r%   rU   ©r;  r<  rC   rA  r%   rU   )
r­   r®   r¯   r9  r?  rD  rF  rH  rJ  rL  r3   r/   r-   r7  r7  Ë  s    € € € € € ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ð ð r/   r7  c                  ó    — e Zd Zd
dd„Zdd„Zd	S )ÚTestFileLoggerÚreplaceÚfilenamer=   r   r%   rU   c                óD   — || _         t          |dd|¬¦  «        | _        d S )NrE   úutf-8)Úencodingr   )rT  ÚopenÚfile)rÆ   rT  r   s      r-   Ú__init__zTestFileLogger.__init__ã  s%   € Ø ˆŒÝ˜ 3°ÀÐHÑHÔHˆŒ	ˆ	ˆ	r/   c                óX   — | j         r"| j                              ¦   «          d | _         d S d S rœ   )rY  rL  rÅ   s    r-   rL  zTestFileLogger.closeç  s3   € ØŒ9ð 	ØŒI�OŠOÑÔÐØˆDŒIˆIˆIð	ð 	r/   N)rS  )rT  r=   r   r=   r%   rU   rM  )r­   r®   r¯   rZ  rL  r3   r/   r-   rR  rR  â  sF   € € € € € ðIð Ið Ið Ið Iðð ð ð ð ð r/   rR  c                  óŠ   — e Zd Zg d¢Zg d¢ZdZdZdZdd„Zdd	„Z	dd„Z
dd„Zd d„Zd d„Zd!d„Zd"d„Zd#d„Zd$d„Zd#d„Zd d„ZdS )%ÚConsoleLogger)z..z:.z.:)u   ðŸŒ‘u   ðŸŒ’u   ðŸŒ“u   ðŸŒ”u   ðŸŒ•u   ðŸŒ–u   ðŸŒ—u   ðŸŒ˜u   âœ€ u   â€•u   â–¶ r%   rU   c                ó0  — t          ¦   «         | _        d | _        d | _        d| _        d| _        t          j        ¦   «         | _        d| _	        d| _
        d| _        d| _        	 t          j        d¦  «        \  | _        }d| _        n# t"          $ r d| _        d| _        Y nw xY wt%          | j        | j        | j        dz
  ¦  «        | _        t%          d| j        | j        dz
  ¦  «        | _        | j        | _        | j        | _        	 | j                             t8          j        j        pd¦  «         d S # t>          $ rS t%          d	d
| j        dz
  ¦  «        | _        t%          dd
| j        dz
  ¦  «        | _        d| _        | j         | _        Y d S w xY w)Nr   Fry   r   TéP   r5   r|   z8<ú-z| )!r   Úrunning_testsÚprogress_testÚprogress_taskÚmax_left_widthÚstopÚasyncioÚEventÚupdateÚshould_erase_lineÚ
test_countÚstarted_testsÚspinner_indexrI   Úget_terminal_sizerŠ   Úis_ttyÚOSErrorr�   ÚSCISSORSÚHLINEÚoutput_startÚ
output_endÚRTRIÚsubÚSPINNERÚspinnerr�   r2   ÚstdoutrW  r€   ÚASCII_SPINNER)rÆ   Ú_s     r-   rZ  zConsoleLogger.__init__ö  sˆ  € Ý'™\œ\ˆÔØ!ˆÔØ!ˆÔØˆÔØˆŒ	Ý”m‘o”oˆŒØ!#ˆÔØˆŒØˆÔØˆÔð	 ÝÔ/°Ñ2Ô2‰LˆDŒI�qØˆDŒKˆKøÝð 	 ð 	 ð 	 ØˆDŒIØˆDŒKˆKˆKð	 øøøõ # 4¤=°$´*¸d¼iÈ!¹mÑLÔLˆÔÝ   T¤Z°´¸Q±Ñ?Ô?ˆŒØ”9ˆŒØ”|ˆŒð	.ØÔ×$Ò$¥S¤ZÔ%8Ð%C¸GÑDÔDÐDÐDÐDøÝ!ð 	.ð 	.ð 	.Ý & t¨S°$´)¸a±-Ñ @Ô @ˆDÔÝ$ R¨¨d¬i¸!©mÑ<Ô<ˆDŒOØˆDŒHØÔ-ˆDŒLˆLˆLˆLð		.øøøs%   Á%#B	 Â	B$Â#B$Ä+D8 Ä8AFÆFc                óR   — | j         rt          | j         d¬¦  «         d| _         d S d S )Nry   rz   )ri  rL   rÅ   s    r-   r9  zConsoleLogger.flush  s;   € ØÔ!ð 	(Ý�$Ô(¨bÐ1Ñ1Ô1Ð1Ø%'ˆDÔ"Ð"Ð"ð	(ð 	(r/   r  r=   c                óD   — t          | j        |dd¬¦  «         d| _        d S )Nry   ú)Úsepr{   z[K)rL   ri  )rÆ   r  s     r-   Úprint_progresszConsoleLogger.print_progress  s*   € ÝˆdÔ$ d°¸Ð=Ñ=Ô=Ð=Ø!)ˆÔÐÐr/   c                ó8   — | j                              ¦   «          d S rœ   )rh  ÚsetrÅ   s    r-   Úrequest_updatezConsoleLogger.request_update  s   € ØŒ�ŠÑÔÐÐÐr/   r;  r<  c                ó”  — | j         €|                      ¦   «          d S t          | j        ¦  «        dk    r| j        › d| j        › �}n>d                     | j        t          | j        ¦  «        z
  dz   | j        | j        ¦  «        }d                     || j        | j                 ¦  «        }| j        dz   t          | j        ¦  «        z  | _        d                     dt           
                    ¦   «         z  t          t          j        ¦   «         | j         j        z
  ¦  «        |j        ¬¦  «        }| j         j        r)|d                     | j         j        |j        ¬	¦  «        z  }|d
z  }| j                              ¦   «         }|r|d|z   z  }|                     | j         d| j        ||¬¦  «        }|                      |¦  «         d S )Nr   ú/z{}-{}/{}z[{}] {} z{spaces} {dur:{durlen}}rŒ   )ÚspacesÚdurÚdurlenz/{timeout:{durlen}})Útimeoutr‡  r<   ú   T)rÕ   rd  ÚleftÚright)rb  r9  Úlenra  rk  rj  r¤   rw  rl  r¶   rÃ   r>   ÚtimeÚ	starttimeÚduration_max_lenrˆ  Úget_detailsrd  r  )rÆ   r;  ÚcountrŠ  r‹  Údetailsr  s          r-   Úemit_progresszConsoleLogger.emit_progress   sÕ  € ØÔÐ%Ø�JŠJ‰LŒLˆLØˆFåˆtÔ!Ñ"Ô" aÒ'Ð'ØÔ)Ð=Ð=¨D¬OÐ=Ð=ˆEˆEà×%Ò% dÔ&8½3¸tÔ?QÑ;RÔ;RÑ&RÐUVÑ&VØ&*Ô&8¸$¼/ñKô KˆEð × Ò  ¨¬°TÔ5GÔ(HÑIÔIˆØ"Ô0°1Ñ4½¸D¼LÑ8IÔ8IÑIˆÔà)×0Ò0Ø�×*Ò*Ñ,Ô,Ñ,Ý•D”I‘K”K $Ô"4Ô">Ñ>Ñ?Ô?ØÔ+ð 1ñ -ô -ˆð ÔÔ%ð 	1ØÐ*×1Ò1ØÔ*Ô2ØÔ/ð 2ñ 1ô 1ñ 1ˆEð 	�‰ˆØÔ$×0Ò0Ñ2Ô2ˆØð 	%Ø�U˜W‘_Ñ$ˆEà�~Š~˜dÔ0¸4Ø-1Ô-@Ø#'¨uð ñ 6ô 6ˆð 	×Ò˜DÑ!Ô!Ð!Ð!Ð!r/   c                ó2  ‡ ‡— dˆˆ fd„}‰j         ‰ _         t          ‰ j        ‰j        dz   ¦  «        ‰ _        ‰ j        rV‰j        sQdt          t          ‰ j         ¦  «        ¦  «        z  dz   ‰ _        t          j	         |¦   «         ¦  «        ‰ _
        d S d S d S )Nr%   rU   c               “  óÊ  •K  — t          j        ¦   «         } d}‰                     ¦   «          ‰j        �s‰j                             ¦   «         ƒ d {V —† ‰j                             ¦   «          |                      ¦   «         |k    r9d ‰_        |                      ¦   «         dz   }|  	                    |‰j        ¦  «         ‰j        r‰j        j
        t          j        urd ‰_        ‰j        sG‰j        sŒÆ‰j                             d¬¦  «        ‰_        ‰j                             ‰j        ¦  «         ‰                     ‰¦  «         ‰j        �¯‰                     ¦   «          d S )Ng        r   F©Úlast)rf  Úget_event_loopr‚  re  rh  ÚwaitÚclearr�  rb  Úcall_atr×   r¶   r¸   ra  ÚpopÚaddr“  r9  )ÚloopÚnext_updater;  rÆ   s     €€r-   Úreport_progressz,ConsoleLogger.start.<locals>.report_progressA  s^  øè è € ÝÔ)Ñ+Ô+ˆDØˆKØ×ÒÑ!Ô!Ð!Ø”iñ ,Ø”k×&Ò&Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ø”×!Ò!Ñ#Ô#Ð#ð —9’9‘;”; +Ò-Ð-Ø)-�DÔ&Ø"&§)¢)¡+¤+°¡/�KØ—L’L ¨dÔ.AÑBÔBÐBàÔ&ð .ØÔ*Ô.µjÔ6HÐHÐHØ)-�DÔ&àÔ)ð ?ØÔ-ð !Ø à)-Ô);×)?Ò)?ÀUÐ)?Ñ)KÔ)K�DÔ&ØÔ&×*Ò*¨4Ô+=Ñ>Ô>Ð>à×"Ò" 7Ñ+Ô+Ð+ð- ”iñ ,ð. �JŠJ‰LŒLˆLˆLˆLr/   é   r$   é   rM  )rj  ÚmaxrŠ   rd  rn  Úneed_consolerŒ  r=   rf  Úensure_futurerc  )rÆ   r;  r   s   `` r-   r?  zConsoleLogger.start@  sÁ   øø€ ð	ð 	ð 	ð 	ð 	ð 	ð 	ð: "Ô,ˆŒÝ˜œ	 7Ô#9¸BÑ#>Ñ?Ô?ˆŒ	àŒ;ð 	J˜wÔ3ð 	Jà"#¥c­#¨d¬oÑ*>Ô*>Ñ&?Ô&?Ñ"?À!Ñ"CˆDÔÝ!(Ô!6°°Ñ7HÔ7HÑ!IÔ!IˆDÔÐÐð	Jð 	Jð 	Jð 	Jr/   r@  rA  c                óŽ  — |j         rã|j        rÜ|                      ¦   «          t          |                     |t          j        ¦   «         | j        |j         	                    t          j        ¦   «         ¦  «        ¬¦  «        ¦  «         t          |j         
                    ¦   «         |j        z   ¦  «         |j        rt          | j        d¬¦  «         n|j        st          d¬¦  «         | xj        dz  c_        | j                             |¦  «         | j                             |d¬¦  «         |                      ¦   «          d S )N)rd  r‹  T©r9  r   Fr–  )ÚverboseÚcmdliner9  rL   r¤   r   Úcolorize_consolerd  r×   rÚ   rÝ   Údirect_stdoutrr  Úneeds_parsingrk  ra  r�  Úmove_to_endr‚  rC  s      r-   rD  zConsoleLogger.start_testf  sA  € ØŒ<ð 		"˜DœLð 		"Ø�JŠJ‰LŒLˆLÝ�'—.’. ¥tÔ'<Ñ'>Ô'>Ø04Ô0CØ'+¤x×'8Ò'8½Ô9NÑ9PÔ9PÑ'QÔ'Qð !ñ Sô Sñ Tô Tð Tõ �$”(×-Ò-Ñ/Ô/°$´,Ñ>Ñ?Ô?Ð?ØÔ!ð "Ý�dÔ'¨tÐ4Ñ4Ô4Ð4Ð4ØÔ'ð "Ý˜DÐ!Ñ!Ô!Ð!àÐÔ˜aÑÐÔØÔ×Ò˜tÑ$Ô$Ð$ØÔ×&Ò& t°%Ð&Ñ8Ô8Ð8Ø×ÒÑÔÐÐÐr/   rC   c                óh  — |j         s|j        j        sdS |                     t	          j        ¦   «         |j        ¬¦  «        }|j         r|S |                     ¦   «         }t          |¦  «        dk     r|S t          t	          j
        d¦  «        ¦  «        d                     |dd …         ¦  «        z   S )Nry   )Ústderr_onlyéd   z1Listing only the last 100 lines from a long log.
rx   iœÿÿÿ)r¨  ÚoptionsÚprint_errorlogsÚget_logr   rª  r¬  Ú
splitlinesrŒ  r=   Úboldr©   )rÆ   r;  rC   rH  r  s        r-   Úshorten_logzConsoleLogger.shorten_logw  s´   € ØŒ~ð 	 g¤oÔ&Eð 	Ø�2à�nŠn�TÔ2Ñ4Ô4Ø)/Ô)=ð ñ ?ô ?ˆàŒ>ð 	ØˆJà—’Ñ Ô ˆÝˆu‰:Œ:˜ÒÐØˆJå•t”yÐ!UÑVÔVÑWÔWÐZ^×ZcÒZcÐdiÐjnÐjoÐjoÔdpÑZqÔZqÑqÐqr/   c                óz  — |j         sb|j        }|s0t          |j                             ¦   «         |j        z   ¦  «         d S t          |j                             ¦   «         |z   ¦  «         |                      ||¦  «        }|r9t          | j        ¦  «         t          |¦  «         t          | j	        ¦  «         d S d S rœ   )
r¨  r©  rL   r×   rÝ   Ústdor¶  rr  rƒ   rs  )rÆ   r;  rC   r©  rH  s        r-   Ú	print_logzConsoleLogger.print_log†  s½   € ØŒ~ð 	=Ø”nˆGØð Ý�f”j×3Ò3Ñ5Ô5¸¼ÑCÑDÔDÐDØ�Ý�&”*×/Ò/Ñ1Ô1°GÑ;Ñ<Ô<Ð<à×Ò˜w¨Ñ/Ô/ˆØð 	#Ý�$Ô#Ñ$Ô$Ð$Ý�s‰OŒOˆOÝ�$”/Ñ"Ô"Ð"Ð"Ð"ð	#ð 	#r/   r<   r¶   c                ó~  — |j         s |j        j        r§|                     ¦   «         r•|                      ¦   «          t          |                     |t          j        ¦   «         | j	        | j
        ||                     t          j        ¦   «         ¦  «        ¬¦  «        d¬¦  «         |                      ¦   «          d S d S d S )N)rd  ÚprefixÚmiddler‹  Tr§  )r¨  r±  r²  rÉ   r9  rL   r¤   r   rª  rd  ru  rÚ   r‚  )rÆ   r;  r@  r<   rC   s        r-   rF  zConsoleLogger.log_subtest”  sÍ   € ØŒ<ð 	"˜GœOÔ;ð 	"ÀÇÂÁÄð 	"Ø�JŠJ‰LŒLˆLÝ�'—.’. ¥tÔ'<Ñ'>Ô'>ÈtÔObØ(,¬Ø()Ø'-§¢µtÔ7LÑ7NÔ7NÑ'OÔ'Oð !ñ Qô Qð Y]ð^ñ ^ô ^ð ^ð
 ×ÒÑ!Ô!Ð!Ð!Ð!ð	"ð 	"ð 	"ð 	"r/   c                ó  — | j                              |¦  «         |j        t          j        u rF|j        s|j        j        r3|                      ¦   «          t          |j
        › d|j        › d�¦  «         |j        j        r|j                             ¦   «         �sW|                      ¦   «          |j        rW|j        rPt          | j        ¦  «         t          |                     |t%          j        ¦   «         | j        ¬¦  «        ¦  «         nst          |                     |t%          j        ¦   «         | j        ¬¦  «        d¬¦  «         |j        s|j                             ¦   «         r|                      ||¦  «         |j        r;t          d¬¦  «         |j        D ]}t          |d¬¦  «         Œt          d¬¦  «         |j        s|j                             ¦   «         rt          d¬¦  «         |                      ¦   «          d S )Nz time out (After z	 seconds))rd  Tr§  )ra  Úremover×   r¶   rº   r¨  r±  r²  r9  rL   r—   rˆ  ÚquietrÇ   r©  r«  rs  r¤   r   rª  rd  rÉ   r¹  Úwarningsr‚  )rÆ   r;  rC   rE   s       r-   rH  zConsoleLogger.logž  sù  € ØÔ×!Ò! &Ñ)Ô)Ð)ØŒ:�Ô+Ð+Ð+°´Ð+Ø18´Ô1Pð ,à�JŠJ‰LŒLˆLÝ�V”[ÐLÐL°6´>ÐLÐLÐLÑMÔMÐMàŒÔ$ð 	"¨F¬J×,<Ò,<Ñ,>Ô,>ñ 	"Ø�JŠJ‰LŒLˆLØŒ~ð 4 &Ô"6ð 4Ý�d”oÑ&Ô&Ð&Ý�g—n’n V­TÔ-BÑ-DÔ-DÐUYÔUh�nÑiÔiÑjÔjÐjÐjå�g—n’n V­TÔ-BÑ-DÔ-DÐUYÔUh�nÑiÔiØ ð"ñ "ô "ð "à”>ð 4 V¤Z×%6Ò%6Ñ%8Ô%8ð 4Ø—N’N 7¨FÑ3Ô3Ð3ØŒð "Ý˜DÐ!Ñ!Ô!Ð!Øœð )ð )�AÝ˜! 4Ð(Ñ(Ô(Ð(Ð(Ý˜DÐ!Ñ!Ô!Ð!ØŒ~ð " ¤×!2Ò!2Ñ!4Ô!4ð "Ý˜DÐ!Ñ!Ô!Ð!à×ÒÑÔÐÐÐr/   c              ƒ  ó¤  K  — d| _         |                      ¦   «          | j        r| j        ƒ d {V —† |j        rv|j        j        s|j        j        r^t          d¦  «         t          |j        d¦  «        D ]9\  }}t          | 	                    |t          j        ¦   «         ¦  «        ¦  «         Œ:t          |                     ¦   «         ¦  «         d S )NTz
Summary of Failures:
r   )re  r‚  rc  Úcollected_failuresr±  r²  r¨  rL   Ú	enumerater¤   r   rª  Úsummary©rÆ   r;  ÚirC   s       r-   rJ  zConsoleLogger.finish¹  sä   è è € ØˆŒ	Ø×ÒÑÔÐØÔð 	%ØÔ$Ð$Ð$Ð$Ð$Ð$Ð$Ð$àÔ%ð 	GØ”Ô0ð	GØ4;´OÔ4Kð	GåÐ,Ñ-Ô-Ð-Ý& wÔ'AÀ1ÑEÔEð Gð G‘	��6Ý�g—n’n V­TÔ-BÑ-DÔ-DÑEÔEÑFÔFÐFÐFåˆg�oŠoÑÔÑ Ô Ð Ð Ð r/   NrM  )r  r=   r%   rU   rN  rO  )r;  r<  rC   rA  r%   r=   rP  )
r;  r<  r@  rA  r<   r=   rC   r¶   r%   rU   )r­   r®   r¯   ry  rv  rp  rq  rt  rZ  r9  r  r‚  r“  r?  rD  r¶  r¹  rF  rH  rJ  r3   r/   r-   r]  r]  í  s>  € € € € € Ø&Ð&Ð&€MðGð Gð G€Gð €HØ€EØ€Dð.ð .ð .ð .ð<(ð (ð (ð (ð
*ð *ð *ð *ðð ð ð ð"ð "ð "ð "ð@$Jð $Jð $Jð $JðLð ð ð ð"rð rð rð rð#ð #ð #ð #ð"ð "ð "ð "ðð ð ð ð6!ð !ð !ð !ð !ð !r/   r]  c                  ó&   — e Zd Zdd„Zdd„Zdd	„Zd
S )ÚTextLogfileBuilderr;  r<  r%   rU   c                ó0  — | j                              dt          j                             ¦   «                              ¦   «         › d�¦  «         t          t          j                             ¦   «         ¦  «        }| j                              d|› d�¦  «         d S )NzLog of Meson test suite run on ú

zInherited environment: )	rY  ÚwriteÚdatetimeÚnowÚ	isoformatrª   rI   rJ   Úitems)rÆ   r;  Úinherit_envs      r-   r?  zTextLogfileBuilder.startÉ  s~   € ØŒ	�ŠÐc½(Ô:K×:OÒ:OÑ:QÔ:Q×:[Ò:[Ñ:]Ô:]ÐcÐcÐcÑdÔdÐdÝ&¥r¤z×'7Ò'7Ñ'9Ô'9Ñ:Ô:ˆØŒ	�ŠÐC°+ÐCÐCÐCÑDÔDÐDÐDÐDr/   rC   rA  c                ó.  — |j         › d|j        › �}| j                             t	          |dd¦  «        dz   ¦  «         | j                             d|j        z   dz   ¦  «         t          j        dt          j        |j	        ¦  «        ¦  «        }| j                             d|z   dz   ¦  «         | j                             dd	|j
        z  z   dz   ¦  «         | j                             d
|                     ¦   «         z   dz   ¦  «         |j        r%| j                             d|j        z   dz   ¦  «         |j        r[|j        j        rdnd}| j                             t	          |dd¦  «        dz   ¦  «         | j                             |j        ¦  «         |j        rK| j                             t	          ddd¦  «        dz   ¦  «         | j                             |j        ¦  «         | j                             t	          ddd¦  «        dz   ¦  «         d S )Nr„  ú=éN   rx   ztest:         z%H:%M:%Szstart time:   zduration:     z%.2fszresult:       zcommand:      rx  Úoutputr`  Ústderrry   rÊ  )r  rj  rY  rË  r�   r—   r�  ÚstrftimeÚgmtimerŽ  ÚdurationÚget_exit_statusr©  r¸  r±  ri   Ústde)rÆ   r;  rC   ÚtitleÚstarttime_strr—   s         r-   rH  zTextLogfileBuilder.logÎ  sâ  € Ø”:Ð4Ð4 Ô 2Ð4Ð4ˆØŒ	�Š�˜u c¨2Ñ.Ô.°Ñ5Ñ6Ô6Ð6ØŒ	�ŠÐ(¨6¬;Ñ6¸Ñ=Ñ>Ô>Ð>Ýœ jµ$´+¸fÔ>NÑ2OÔ2OÑPÔPˆØŒ	�ŠÐ(¨=Ñ8¸4Ñ?Ñ@Ô@Ð@ØŒ	�ŠÐ(¨7°V´_Ñ+DÑDÀtÑKÑLÔLÐLØŒ	�ŠÐ(¨6×+AÒ+AÑ+CÔ+CÑCÀdÑJÑKÔKÐKØŒ>ð 	FØŒI�OŠOÐ,¨v¬~Ñ=ÀÑDÑEÔEÐEØŒ;ð 	)Ø&œÔ4ÐB�8�8¸(ˆDØŒI�OŠO�F 4¨¨bÑ1Ô1°DÑ8Ñ9Ô9Ð9ØŒI�OŠO˜FœKÑ(Ô(Ð(ØŒ;ð 	)ØŒI�OŠO�F 8¨S°"Ñ5Ô5¸Ñ<Ñ=Ô=Ð=ØŒI�OŠO˜FœKÑ(Ô(Ð(ØŒ	�Š�˜r 3¨Ñ+Ô+¨fÑ4Ñ5Ô5Ð5Ð5Ð5r/   c              ƒ  ój  K  — |j         rf| j                             d¦  «         t          |j         d¦  «        D ]6\  }}| j                             |                     |d¦  «        dz   ¦  «         Œ7| j                             |                     ¦   «         ¦  «         t          d| j        › �¦  «         d S )Nz
Summary of Failures:

r   Frx   zFull log written to )rÂ  rY  rË  rÃ  r¤   rÄ  rL   rT  rÅ  s       r-   rJ  zTextLogfileBuilder.finishá  s°   è è € ØÔ%ð 	FØŒI�OŠOÐ8Ñ9Ô9Ð9Ý& wÔ'AÀ1ÑEÔEð Fð F‘	��6Ø”	—’ §¢¨v°uÑ =Ô =ÀÑ DÑEÔEÐEÐEØŒ	�Š˜ŸšÑ)Ô)Ñ*Ô*Ð*åÐ4 T¤]Ð4Ð4Ñ5Ô5Ð5Ð5Ð5r/   NrN  rP  )r­   r®   r¯   r?  rH  rJ  r3   r/   r-   rÈ  rÈ  È  sT   € € € € € ðEð Eð Eð Eð
6ð 6ð 6ð 6ð&6ð 6ð 6ð 6ð 6ð 6r/   rÈ  c                  ó   — e Zd Zd	d„ZdS )
ÚJsonLogfileBuilderr;  r<  rC   rA  r%   rU   c           	     óö   — |j         |j        |j        j        |j        |j        |j        |j        |j        dœ}|j	        r
|j	        |d<   | j
                             t          j        |¦  «        dz   ¦  «         d S )N)r—   rx  rC   rŽ  rØ  Ú
returncoder    ÚcommandrÕ  rx   )r—   r¸  r×   rÙ   rŽ  rØ  rá  r    ÚcmdrÚ  rY  rË  ÚjsonÚdumps)rÆ   r;  rC   Újresults       r-   rH  zJsonLogfileBuilder.logì  s|   € Ø!œ;Ø#œ[Ø#œZÔ-Ø &Ô 0Ø%œØ!'Ô!2Ø œ*Ø$œjð*ð *ˆð Œ;ð 	,Ø &¤ˆG�HÑØŒ	�Š�œ
 7Ñ+Ô+¨dÑ2Ñ3Ô3Ð3Ð3Ð3r/   NrP  )r­   r®   r¯   rH  r3   r/   r-   rß  rß  ë  s(   € € € € € ð4ð 4ð 4ð 4ð 4ð 4r/   rß  c                  ó*   — e Zd ZdZdd„Zdd„Zdd„ZdS )ÚJunitBuilderaÜ  Builder for Junit test results.

    Junit is impossible to stream out, it requires attributes counting the
    total number of tests, failures, skips, and errors in the root element
    and in each test suite. As such, we use a builder class to track each
    test case, and calculate all metadata before writing it out.

    For tests with multiple results (like from a TAP test), we record the
    test as a suite with the project_name.test_name. This allows us to track
    each result separately. For tests with only one result (such as exit-code
    tests) we record each one into a suite with the name project_name. The use
    of the project_name allows us to sort subproject tests separately from
    the root project.
    rT  r=   r%   rU   c                ó\   — || _         t          j        dddd¬¦  «        | _        i | _        d S )NÚ
testsuitesÚ0©Útestsr   Úfailures)rT  ÚetÚElementÚrootÚsuites)rÆ   rT  s     r-   rZ  zJunitBuilder.__init__  s5   € Ø ˆŒÝ”JØ ¨C¸#ð?ñ ?ô ?ˆŒ	àˆŒˆˆr/   r;  r<  r@  rA  c                óX  — |j         �í|j                              d¦  «        D ]Ð}d                     |j        |j        |j        d         ¦  «        |j        d<   |                     d¦  «        D ]
}|j        d= Œ|                     d¦  «        D ]
}|j        d= Œ|                     d	¦  «        D ]
}|j        d
= Œ|                     d¦  «        D ]
}|j        d= Œ| j                             |¦  «         ŒÑdS |j        �rÞ|j        › d|j        › �}|| j	        vs|j
        j        dk    s
J d¦   «         ‚t          j        d|t          t          |j        ¦  «        ¦  «        t          t!          d„ |j        D ¦   «         ¦  «        ¦  «        t          t!          d„ |j        D ¦   «         ¦  «        ¦  «        t          t!          d„ |j        D ¦   «         ¦  «        ¦  «        t          |j        ¦  «        ¬¦  «        x}| j	        |<   |j        D �]X}t          j        |dt          |¦  «        |¬¦  «        }|j        t(          j        u rt          j        |d¦  «         ná|j        t(          j        u rt          j        |d¦  «         n¸|j        t(          j        u rt          j        |d¦  «         n�|j        t(          j        u rt          j        |d¦  «        }d|_        n_|j        t(          j        u rt          j        |d¦  «        }d|_        n/|j        t(          j        u rt          j        |d¦  «        }d|_        |j        r|j        t          j        |d¦  «        _        �ŒZ|j        r3t          j        |d¦  «        }	|j                             ¦   «         |	_        |j        r5t          j        |d¦  «        }
|j                             ¦   «         |
_        dS dS |j        | j	        vrBt          j        d|j        dd d d t          |j        ¦  «        ¬¦  «        x}| j	        |j        <   nD| j	        |j                 }t          tA          |j        d!         ¦  «        dz   ¦  «        |j        d!<   t          j        |d|j        |j        t          |j        ¦  «        ¬"¦  «        }|j!        t(          j        u rHt          j        |d¦  «         t          tA          |j        d         ¦  «        dz   ¦  «        |j        d<   nµ|j!        t(          j        u rHt          j        |d¦  «         t          tA          |j        d#         ¦  «        dz   ¦  «        |j        d#<   nZ|j!        t(          j        u rGt          j        |d¦  «         t          tA          |j        d$         ¦  «        dz   ¦  «        |j        d$<   |j        r3t          j        |d¦  «        }	|j                             ¦   «         |	_        |j        r5t          j        |d¦  «        }
|j                             ¦   «         |
_        dS dS )%zLog a single test case.Nz.//testsuitez{}.{}.{}r—   z.//testcase[@result]rC   z.//testcase[@timestamp]Ú	timestampz.//testcase[@file]rY  z.//testcase[@line]r  ú.r   zduplicate suiteÚ	testsuitec              3  óX   K  — | ]%}|j         t          j        t          j        hv ¯!d V — Œ&dS ©r   N)rC   r¶   r»   rÀ   ©r¥   Úrs     r-   ú	<genexpr>z#JunitBuilder.log.<locals>.<genexpr>/  sX   è è € ð Ið I Q¸!¼(Ý *Ô 4µjÔ6FÐGð;Hð ;H˜qð ;Hð ;Hð ;Hð ;Hð Ið Ir/   c              3  ón   K  — | ]0}|j         t          j        t          j        t          j        hv ¯,d V — Œ1dS rø  )rC   r¶   r½   r¿   rº   rù  s     r-   rû  z#JunitBuilder.log.<locals>.<genexpr>1  s\   è è € ð !cð !c q¸A¼HÝ",¤/µ:Ô3LÍjÔN`Ð!að=bð =b ð =bð =bð =bð =bð !cð !cr/   c              3  ó@   K  — | ]}|j         t          j        u ¯d V — ŒdS rø  ©rC   r¶   r¼   rù  s     r-   rû  z#JunitBuilder.log.<locals>.<genexpr>3  s0   è è € ÐWÐW a¸1¼8ÅzÄÐ;VÐ;V Ð;VÐ;VÐ;VÐ;VÐWÐWr/   )r—   rí  r   rî  rç   r�  Útestcase)r—   Ú	classnamerç   ÚerrorÚfailurezTest unexpected passed.zTest was interrupted by user.z.Test did not finish before configured timeout.z
system-outz
system-errÚ1rë  rí  )r—   r   r�  r   rî  )"ÚjunitÚfindallr¤   Úprojectr—   Úattribrñ  re   Úresultsrò  r±  rZ   rï  rð  r=   rŒ  ÚsumrØ  Ú
SubElementrC   r¶   r¼   rÀ   r½   r¿   Útextr»   rº   ré   r¸  r  rÚ  r>   r×   )rÆ   r;  r@  ÚsuiteÚcaseÚ	suitenameÚsubtestrÿ  ÚfailÚoutÚerrs              r-   rH  zJunitBuilder.log  s  € àŒ:Ð!Øœ×+Ò+¨NÑ;Ô;ð (ð (�à'1×'8Ò'8¸¼ÀtÄyÐRWÔR^Ð_eÔRfÑ'gÔ'g�”˜VÑ$ð "ŸMšMÐ*@ÑAÔAð .ð .�DØœ HÐ-Ð-Ø!ŸMšMÐ*CÑDÔDð 1ð 1�DØœ KÐ0Ð0Ø!ŸMšMÐ*>Ñ?Ô?ð ,ð ,�DØœ FÐ+Ð+Ø!ŸMšMÐ*>Ñ?Ô?ð ,ð ,�DØœ FÐ+Ð+Ø”	× Ò  Ñ'Ô'Ð'Ð'ØˆFð
 Œ<ñ D	.Øœ<Ð5Ð5¨$¬)Ð5Ð5ˆIØ D¤KÐ/Ð/°7´?Ô3IÈAÒ3MÐ3MÐ3MÐO`Ñ3MÔ3MÐ3Må-/¬ZØØÝ�#˜dœlÑ+Ô+Ñ,Ô,Ý�3ð Ið I¨$¬,ð Iñ Iô Iñ Iô Iñ Jô Jå�Sð !cð !c¨D¬Lð !cñ !cô !cñ cô cñ dô då�CÐWÐW¨4¬<ÐWÑWÔWÑWÔWÑXÔXÝ˜œÑ'Ô'ð
.ñ 
.ô 
.ð 
ˆE�D”K 	Ñ*ð  œ<ð Uñ U�õ œ=¨°
ÅÀWÁÄÐYbÐcÑcÔc�Ø”>¥Z¤_Ð4Ð4Ý”M (¨IÑ6Ô6Ð6Ð6Ø”^¥zÔ'7Ð7Ð7Ý”M (¨GÑ4Ô4Ð4Ð4Ø”^¥z¤Ð6Ð6Ý”M (¨IÑ6Ô6Ð6Ð6Ø”^¥zÔ'@Ð@Ð@Ýœ=¨°9Ñ=Ô=�DØ 9�D”I�IØ”^¥zÔ';Ð;Ð;Ýœ=¨°7Ñ;Ô;�DØ ?�D”I�IØ”^¥zÔ'9Ð9Ð9Ýœ=¨°7Ñ;Ô;�DØ P�D”IØÔ&ð UØAHÔAT•B”M (¨LÑ9Ô9Ô>ùØŒyð .Ý”m E¨<Ñ8Ô8�Øœ9×+Ò+Ñ-Ô-�”ØŒyð .Ý”m E¨<Ñ8Ô8�Øœ9×+Ò+Ñ-Ô-�”��ð.ð .ð Œ| 4¤;Ð.Ð.Ý46´JØ d¤l¸#ÀcØ ¨#µC¸¼Ñ4FÔ4Fð5Hñ 5Hô 5Hð H�˜œ D¤LÑ1Ð1ð œ D¤LÔ1�Ý(+­C°´¸WÔ0EÑ,FÔ,FÈÑ,JÑ(KÔ(K�”˜WÑ%å”} U¨J¸T¼YØ/3¬|Å#ÀdÄmÑBTÔBTðVñ Vô VˆHàŒx�:œ?Ð*Ð*Ý”˜h¨	Ñ2Ô2Ð2Ý*-­c°%´,¸yÔ2IÑ.JÔ.JÈQÑ.NÑ*OÔ*O�”˜YÑ'Ð'Ø”�ZÔ-Ð-Ð-Ý”˜h¨Ñ0Ô0Ð0Ý),­S°´¸hÔ1GÑ-HÔ-HÈ1Ñ-LÑ)MÔ)M�”˜XÑ&Ð&Ø”�Zœ_Ð,Ð,Ý”˜h¨	Ñ2Ô2Ð2Ý+.­s°5´<À
Ô3KÑ/LÔ/LÈqÑ/PÑ+QÔ+Q�”˜ZÑ(ØŒyð .Ý”m H¨lÑ;Ô;�Øœ9×+Ò+Ñ-Ô-�”ØŒyð .Ý”m H¨lÑ;Ô;�Øœ9×+Ò+Ñ-Ô-�”��ð.ð .r/   c           	   ƒ  óæ  K  — | j                              ¦   «         D ]u}| j                             |¦  «         dD ]V}t	          t          | j        j        |         ¦  «        t          |j        |         ¦  «        z   ¦  «        | j        j        |<   ŒWŒvt          j        | j        ¦  «        }t          | j
        d¦  «        5 }|                     |dd¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z9Calculate total test counts and write out the xml result.rì  ÚwbrV  T)rW  Úxml_declarationN)rò  Úvaluesrñ  re   r=   r>   r  rï  ÚElementTreerX  rT  rË  )rÆ   r;  r  ÚattrÚtreeÚfs         r-   rJ  zJunitBuilder.finishm  sD  è è € à”[×'Ò'Ñ)Ô)ð 	dð 	dˆEØŒI×Ò˜UÑ#Ô#Ð#à7ð dð d�Ý),­S°´Ô1AÀ$Ô1GÑ-HÔ-HÍ3ÈuÌ|Ð\`ÔOaÑKbÔKbÑ-bÑ)cÔ)c�”	Ô  Ñ&Ð&ðdõ Œ~˜dœiÑ(Ô(ˆÝ�$”- Ñ&Ô&ð 	B¨!Ø�JŠJ�q 7¸DˆJÑAÔAÐAð	Bð 	Bð 	Bñ 	Bô 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bøøøð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bs   Ã C&Ã&C*Ã-C*N)rT  r=   r%   rU   rO  rN  )r­   r®   r¯   Ú__doc__rZ  rH  rJ  r3   r/   r-   rè  rè  ú  se   € € € € € ðð ðð ð ð ðZ.ð Z.ð Z.ð Z.ðx
Bð 
Bð 
Bð 
Bð 
Bð 
Br/   rè  c                  óæ   ‡ — e Zd ZU dZi Zded<   d.ˆ fd
„Zd/d„Zd0d„Ze	d1d„¦   «         Z
e	d2d„¦   «         Zd3d„Zd3d„Zd3d„Zd4d„Ze	d5d!„¦   «         Zd4d"„Zd4d#„Zd6d7d'„Ze	d2d(„¦   «         Zd8d-„Zˆ xZS )9ÚTestRunr   z'T.Dict[TestProtocol, T.Type['TestRun']]ÚPROTOCOL_TO_CLASSr@  r   rn   úT.AnyÚkwargsr%   c                óp   •— t          ¦   «                              t          j        |j                 ¦  «        S rœ   )ÚsuperÚ__new__r  r  Úprotocol)Úclsr@  rn   r   Ú	__class__s       €r-   r#  zTestRun.__new__~  s#   ø€ Ý‰wŒw�Š�wÔ8¸¼ÔGÑHÔHÐHr/   Útest_envúT.Dict[str, str]r—   r=   rˆ  rÿ   Úis_parallelr&   r¨  c                óF  — t           j        | _        || _        d | _        || _        || _        g | _        d | _        d | _	        d | _
        d| _        d| _        d| _        d | _        || _        |j        | _        |j        | _        d | _        || _        || _        g | _        d S ©Nry   )r¶   r·   r×   r@  Ú_numr—   rˆ  r  rá  rŽ  rØ  r¸  rÚ  Úadditional_errorrã  r    Úshould_failÚproject_namer  r  r)  r¨  rÀ  )rÆ   r@  r'  r—   rˆ  r)  r¨  s          r-   rZ  zTestRun.__init__�  sž   € åÔ%ˆŒØˆŒ	ØˆŒ	ØˆŒ	ØˆŒØˆŒØˆŒØˆŒØˆŒØˆŒ	ØˆŒ	Ø "ˆÔØˆŒØˆŒØÔ+ˆÔØÔ(ˆŒØˆŒ
Ø&ˆÔØˆŒØˆŒˆˆr/   rã  úT.List[str]rU   c                óf   — t           j        | _        t          j        ¦   «         | _        || _        d S rœ   )r¶   r¸   r×   r�  rŽ  rã  )rÆ   rã  s     r-   r?  zTestRun.start˜  s$   € ÝÔ%ˆŒÝœ™œˆŒØˆŒˆˆr/   r>   c                ój   — | j         €&t          xj        dz  c_        t          j        | _         | j         S ©Nr   )r,  r  ÚTEST_NUMrÅ   s    r-   r  zTestRun.num�  s0   € àŒ9ÐÝÐÔ Ñ!ÐÔÝÔ(ˆDŒIØŒyÐr/   c                ó0   — | j         o| j         o| j         S rœ   )r¨  r)  r¬  rÅ   s    r-   r«  zTestRun.direct_stdout¤  s    € àŒ|ÐO DÔ$4Ð 4ÐO¸TÔ=OÐ9OÐOr/   c                ó²   — | j         rOt          d„ | j         D ¦   «         ¦  «        }t          d„ | j         D ¦   «         ¦  «        }||k    r|› d�S |› d|› d�S dS )Nc              3  óH   K  — | ]}|j                              ¦   «         V — Œd S rœ   )rC   rÇ   ©r¥   r�   s     r-   rû  z&TestRun.get_results.<locals>.<genexpr>«  s.   è è € Ð@Ð@¨a˜œŸšÑ)Ô)Ð@Ð@Ð@Ð@Ð@Ð@r/   c              3  ó<   K  — | ]}|j         t          j        uV — Œd S rœ   rþ  r8  s     r-   rû  z&TestRun.get_results.<locals>.<genexpr>¬  s+   è è € ÐLÐL¸!�a”h¥j¤oÐ5ÐLÐLÐLÐLÐLÐLr/   z subtests passedr„  ry   )r  r	  )rÆ   ÚpassedÚrans      r-   Úget_resultszTestRun.get_results¨  s|   € ØŒ<ð 	9åÐ@Ð@°4´<Ð@Ñ@Ô@Ñ@Ô@ˆFÝÐLÐL¸t¼|ÐLÑLÔLÑLÔLˆCØ˜Š}ˆ}Ø Ð2Ð2Ð2Ð2à Ð8Ð8 3Ð8Ð8Ð8Ð8Øˆrr/   c                ó*   — t          | j        ¦  «        S rœ   )rš   rá  rÅ   s    r-   rÙ  zTestRun.get_exit_status³  s   € Ý# D¤OÑ4Ô4Ð4r/   c                óŠ   — | j         t          j        u rdS | j        r|                      ¦   «         S |                      ¦   «         S r+  )r×   r¶   r·   rá  rÙ  r<  rÅ   s    r-   r�  zTestRun.get_details¶  sE   € ØŒ8•zÔ)Ð)Ð)Ø�2ØŒ?ð 	*Ø×'Ò'Ñ)Ô)Ð)Ø×ÒÑ!Ô!Ð!r/   c                ó:  — | j         t          j        k    rt          j        | _         t	          | j         t          ¦  «        sJ ‚| j        rO| j         t          j        t          j        fv r0| j         t          j        u rt          j        nt          j        | _         | j	        r*| j	         
                    d¦  «        s| xj	        dz  c_	        | j        r*| j         
                    d¦  «        s| xj        dz  c_        t          j        ¦   «         | j        z
  | _        d S r‡   )r×   r¶   r¸   r¹   Ú
isinstancer.  r½   r¿   r¾   r¸  ÚendswithrÚ  r�  rŽ  rØ  rÅ   s    r-   Ú	_completezTestRun._complete½  sï   € ØŒ8•zÔ)Ò)Ð)Ý!”}ˆDŒHÝ˜$œ(¥JÑ/Ô/Ð/Ð/Ð/ØÔð 	k ¤­Z¬]½J¼OÐ,LÐ LÐ LØ48´HÅ
ÄÐ4MÐ4M•zÔ0Ð0ÕS]ÔSjˆDŒHØŒ9ð 	˜TœY×/Ò/°Ñ5Ô5ð 	ØˆIŒI˜ÑˆIŒIØŒ9ð 	˜TœY×/Ò/°Ñ5Ô5ð 	ØˆIŒI˜ÑˆIŒIÝœ	™œ d¤nÑ4ˆŒˆˆr/   rè   c                ó   — | j         sd S t          | j                             ¦   «         ¦  «        t          t          j                             ¦   «         ¦  «        z
  }t          |¦  «        d                     d„ | j         D ¦   «         ¦  «        z   S )NrŒ   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S rœ   )rŸ   r8  s     r-   rû  z"TestRun.cmdline.<locals>.<genexpr>Ï  s(   è è € Ð3Ð3 Q•X˜a‘[”[Ð3Ð3Ð3Ð3Ð3Ð3r/   )rã  r�  r    rÏ  rI   rJ   rª   r©   )rÆ   Útest_only_envs     r-   r©  zTestRun.cmdlineÉ  sz   € àŒxð 	Ø�4Ý˜DœHŸNšNÑ,Ô,Ñ-Ô-µµB´J×4DÒ4DÑ4FÔ4FÑ0GÔ0GÑGˆÝ Ñ.Ô.Ø�HŠHÐ3Ð3¨$¬(Ð3Ñ3Ô3Ñ3Ô3ñ4ð 	4r/   c                ó˜   — t          j         ¦   «         | _        t          | _        t          j        | _        |                      ¦   «          d S rœ   )r�  rŽ  ÚGNU_SKIP_RETURNCODErá  r¶   r¼   r×   rB  rÅ   s    r-   Úcomplete_skipzTestRun.complete_skipÑ  s5   € Ýœ™œˆŒÝ-ˆŒÝ”?ˆŒØ�ŠÑÔÐÐÐr/   c                ó.   — |                       ¦   «          d S rœ   )rB  rÅ   s    r-   ÚcompletezTestRun.complete×  s   € Ø�ŠÑÔÐÐÐr/   FrÕ   r¯  c                óŽ  — |rdn| j         }| j        s| j        r”d}|rE|t          j        d¦  «                             |¦  «        dz   z  }||z  }|dd …         dk    r|dz  }|t          j        d¦  «                             |¦  «        dz   z  }|t          | j        | j        ¦  «        z  }n|}|r|dd …         dk    r|dz  }|S )Nry   zstdout:rx   rw   zstderr:)r¸  rÚ  r-  r   ÚcyanrÚ   rˆ   )rÆ   rÕ   r¯  r¸  r×   s        r-   r³  zTestRun.get_logÚ  sî   € Ø Ð/ˆrˆr d¤iˆØŒ9ð 
	˜Ô-ð 
	ØˆCØð  Ø•t”y Ñ+Ô+×4Ò4°XÑ>Ô>ÀÑEÑE�Ø�t‘�Ø�r�s�s”8˜tÒ#Ð#Ø˜4‘K�CØ•4”9˜YÑ'Ô'×0Ò0°Ñ:Ô:¸TÑAÑAˆCØ•:˜dœi¨Ô)>Ñ?Ô?Ñ?ˆCˆCàˆCØð 	�3�r�s�s”8˜tÒ#Ð#Ø�4‰KˆCØˆ
r/   c                ó   — dS )NFr3   rÅ   s    r-   r¬  zTestRun.needs_parsingë  s   € àˆur/   r;  r<  r  r  c              ƒ  ó    K  — |2 3 d {V —†}Œ6 d S rœ   r3   )rÆ   r;  r  Úls       r-   r  zTestRun.parseï  s:   è è € Øð 	ð 	ð 	ð 	ð 	ð 	ð 	�!Øð �u�us   …)r@  r   rn   r  r   r  r%   r  )r@  r   r'  r(  r—   r=   rˆ  rÿ   r)  r&   r¨  r&   )rã  r0  r%   rU   rÞ   rß   rà   rM  ©r%   rè   )FF)rÕ   r&   r¯  r&   r%   r=   ©r;  r<  r  r  r%   rU   )r­   r®   r¯   r4  r  rë   r#  rZ  r?  Úpropertyr  r«  r<  rÙ  r�  rB  r©  rH  rJ  r³  r¬  r  Ú__classcell__©r&  s   @r-   r  r  z  s­  ø€ € € € € € Ø€HØACÐÐCÐCÐCÑCðIð Ið Ið Ið Ið Iðð ð ð ð.ð ð ð ð
 ðð ð ñ „Xðð ðPð Pð Pñ „XðPð	ð 	ð 	ð 	ð5ð 5ð 5ð 5ð"ð "ð "ð "ð
5ð 
5ð 
5ð 
5ð ð4ð 4ð 4ñ „Xð4ðð ð ð ðð ð ð ðð ð ð ð ð" ðð ð ñ „Xððð ð ð ð ð ð ð r/   r  c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )ÚTestRunExitCoder%   rU   c                ó^  •— | j         t          j        k    rnu| j        t          k    rt          j        | _         nS| j        t          k    rt          j        | _         n1t          | j        ¦  «        rt          j	        nt          j
        | _         t          ¦   «                              ¦   «          d S rœ   )r×   r¶   r¸   rá  rG  r¼   ÚGNU_ERROR_RETURNCODErÀ   r&   r½   r¹   r"  rJ  ©rÆ   r&  s    €r-   rJ  zTestRunExitCode.completeö  sƒ   ø€ ØŒ8•zÔ)Ò)Ð)ØØŒ_Õ 3Ò3Ð3Ý!”ˆDŒHˆHØŒ_Õ 4Ò4Ð4Ý!Ô'ˆDŒHˆHå*.¨t¬Ñ*?Ô*?ÐR•z”�ÅZÄ]ˆDŒHÝ‰Œ×ÒÑÔÐÐÐr/   rM  ©r­   r®   r¯   rJ  rS  rT  s   @r-   rV  rV  ô  s=   ø€ € € € € ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	r/   rV  c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )ÚTestRunGTestr%   rU   c                ó(  •— | j         j        › d�}| j         j        r*t          j                             | j         j        |¦  «        }	 t          j        |¦  «        | _        n# t          $ r Y nw xY wt          ¦   «                              ¦   «          d S )Nú.xml)r@  r—   ÚworkdirrI   rr   r©   rï  r  r  ÚFileNotFoundErrorr"  rJ  )rÆ   rT  r&  s     €r-   rJ  zTestRunGTest.complete  s•   ø€ Ø”i”nÐ*Ð*Ð*ˆØŒ9Ôð 	AÝ”w—|’| D¤IÔ$5°xÑ@Ô@ˆHð	Ýœ (Ñ+Ô+ˆDŒJˆJøÝ ð 	ð 	ð 	ð ˆDð		øøøõ 	‰Œ×ÒÑÔÐÐÐs   ÁA" Á"
A/Á.A/rM  rZ  rT  s   @r-   r\  r\    s=   ø€ € € € € ðð ð ð ð ð ð ð ð ð r/   r\  c                  ó@   ‡ — e Zd Zedd„¦   «         Zdˆ fd„Zdd
„Zˆ xZS )Ú
TestRunTAPr%   r&   c                ó   — dS ©NTr3   rÅ   s    r-   r¬  zTestRunTAP.needs_parsing  ó   € àˆtr/   rU   c                ó   •— | j         dk    rQ| j                             ¦   «         s8t          j        | _        | j        pd| _        | xj        d| j         › d�z  c_        t          ¦   «                              ¦   «          d S )Nr   ry   z'
(test program exited with status code r”   )rá  r×   rÍ   r¶   rÀ   rÚ  r"  rJ  rY  s    €r-   rJ  zTestRunTAP.complete  st   ø€ ØŒ?˜aÒÐ¨¬×(;Ò(;Ñ(=Ô(=ÐÝ!Ô'ˆDŒHØœ	˜ RˆDŒIØˆIŒIÐVÀDÄOÐVÐVÐVÑVˆIŒIÝ‰Œ×ÒÑÔÐÐÐr/   r;  r<  r  r  c           	   ƒ  ó„  K  — d }g }d}t          ¦   «                              |¦  «        2 3 d {V —†}t          |t           j        ¦  «        r|j        }Œ)t          |t           j        ¦  «        r)t          j        }|                     | |j	        |¦  «         Œlt          |t           j
        ¦  «        rk| j                             |¦  «         |j                             ¦   «         rt          j        }|                     | |j        p	d|j        › �|j        ¦  «         Œñt          |t           j        ¦  «        r|                     |¦  «         �Œ"t          |t           j        ¦  «        r$| xj        d|j	        z   z  c_        t          j        }�Œb6 |råt+          t-          j        d¦  «        ¦  «        }t1          t+          t3          d„ |D ¦   «         ¦  «        ¦  «        ¦  «        }|D ]1}	| j                             d|	j        |› ›d|› d|	j	        › �¦  «         Œ2|dk    r| j                             d	¦  «         n<| j                             t+          t-          j        d
¦  «        ¦  «        dz   ¦  «         t;          d„ | j        D ¦   «         ¦  «        rt          j        }|r| j        t          j         k    r|| _        d S d S d S )Nr  zsubtest zTAP parsing error: ÚUNKNOWNc              3  ó$   K  — | ]}|j         V — Œd S rœ   )rú   )r¥   rÆ  s     r-   rû  z#TestRunTAP.parse.<locals>.<genexpr>;  s$   è è € Ð;Ð;¨Q ¤Ð;Ð;Ð;Ð;Ð;Ð;r/   zstdout: z: r  z�Unknown TAP output lines have been ignored. Please open a feature request to
implement them, or prefix them with a # if they are not TAP syntax.rÀ   zŒ: Unknown TAP output lines for a supported TAP version.
This is probably a bug in the test; if they are not TAP syntax, prefix them with a #c              3  ó<   K  — | ]}|j         t          j        u V — Œd S rœ   rþ  ©r¥   Úts     r-   rû  z#TestRunTAP.parse.<locals>.<genexpr>D  ó+   è è € ÐAÐA¨qˆqŒx�:œ?Ð*ÐAÐAÐAÐAÐAÐAr/   )!rã   r  r@  rý   r   rï   r¶   rÀ   rF  rî   rö   r  re   rC   rÉ   r½   r—   rò   rû   rø   r-  r=   r   rÑ   rŒ  r£  rÀ  rú   rÐ   Úallr¼   r×   r¸   )
rÆ   r;  r  r×   rÀ  r   rÆ  Úunknownr�   rE   s
             r-   r  zTestRunTAP.parse#  sè  è è € ØˆØˆØˆå ‘{”{×.Ò.¨uÑ5Ô5ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'�!Ý˜!�YÔ.Ñ/Ô/ð 'Øœ)��Ý˜A�yÔ0Ñ1Ô1ð 'Ý Ô&�Ø×#Ò# D¨!¬)°SÑ9Ô9Ð9Ð9Ý˜A�yœ~Ñ.Ô.ð 	'Ø”×#Ò# AÑ&Ô&Ð&Ø”8—?’?Ñ$Ô$ð *Ý$œ/�CØ×#Ò# D¨!¬&Ð*IÐ4I¸q¼xÐ4IÐ4IÈ1Ì8ÑTÔTÐTÐTÝ˜A�yÔ4Ñ5Ô5ð 'Ø—’ Ñ"Ô"Ð"Ñ"Ý˜A�yœÑ/Ô/ð 'ØÐ%Ô%Ð)>ÀÄÑ)JÑJÐ%Ô%Ý Ô&�ùð 6ð" ð 
	}Ý�$œ+ iÑ0Ô0Ñ1Ô1ˆGÝ��CÐ;Ð;°(Ð;Ñ;Ô;Ñ;Ô;Ñ<Ô<Ñ=Ô=ˆEØð \ð \�Ø”×$Ò$Ð%Z°´¸%Ð%ZÐ%ZÐ%ZÀGÐ%ZÐ%ZÈqÌyÐ%ZÐ%ZÑ[Ô[Ð[Ð[Ø˜Š|ˆ|Ø”×$Ò$ð &kñ lô lð lð lð ”×$Ò$¥S­¬°'Ñ):Ô):Ñ%;Ô%;ð ?|ñ &|ñ }ô }ð }åÐAÐA°D´LÐAÑAÔAÑAÔAð 	"å”/ˆCàð 	�4”8�zÔ1Ò1Ð1ØˆDŒHˆHˆHð	ð 	Ð1Ð1s   ªFrß   rM  rQ  )r­   r®   r¯   rR  r¬  rJ  r  rS  rT  s   @r-   rb  rb    so   ø€ € € € € Øðð ð ñ „Xððð ð ð ð ð ð&ð &ð &ð &ð &ð &ð &ð &r/   rb  c                  ó.   — e Zd Zedd„¦   «         Zdd	„Zd
S )ÚTestRunRustr%   r&   c                ó   — dS rd  r3   rÅ   s    r-   r¬  zTestRunRust.needs_parsingO  re  r/   r;  r<  r  r  rU   c              ƒ  óÜ  K  — dd„}d	}|2 3 d {V —†}|                      d
¦  «        rŸ|                      d¦  «        sŠ|                     ¦   «                              d¦  «        \  }}}}|                     dd¦  «        } ||||¦  «        }	| j                             |	¦  «         |                     | ||	j        ¦  «         |d	z  }Œ¼6 d }
t          d„ | j        D ¦   «         ¦  «        rt          j
        }
nUt          d„ | j        D ¦   «         ¦  «        rt          j        }
n*t          d„ | j        D ¦   «         ¦  «        rt          j        }
|
r| j        t          j        k    r|
| _        d S d S d S )NÚnr>   r—   r=   rC   r%   r   c                ód  — |dk    r't                                | |t          j        d ¦  «        S |dk    r't                                | |t          j        d ¦  «        S |dk    r't                                | |t          j        d ¦  «        S t                                | |t          j        d|› �¦  «        S )Nr  ÚignoredÚFAILEDz#Unsupported output from rust test: )rã   rö   r¶   r¹   r¼   r½   rÀ   )rt  r—   rC   s      r-   Ú	parse_resz$TestRunRust.parse.<locals>.parse_resT  sœ   € Ø˜Š~ˆ~Ý —~’~ a¨­z¬}¸dÑCÔCÐCØ˜9Ò$Ð$Ý —~’~ a¨­z¬ÀÑEÔEÐEØ˜8Ò#Ð#Ý —~’~ a¨­z¬ÀÑEÔEÐEÝ—>’> ! T­:Ô+;Ø"PÈÐ"PÐ"PñRô Rð Rr/   r   ztest ztest resultrŒ   z::rõ  c              3  ó<   K  — | ]}|j         t          j        u V — Œd S rœ   rþ  rk  s     r-   rû  z$TestRunRust.parse.<locals>.<genexpr>j  rm  r/   c              3  ó<   K  — | ]}|j         t          j        u V — Œd S rœ   )rC   r¶   rÀ   rk  s     r-   rû  z$TestRunRust.parse.<locals>.<genexpr>m  s,   è è € ÐDÐD°!�”�ZÔ-Ð-ÐDÐDÐDÐDÐDÐDr/   c              3  ó<   K  — | ]}|j         t          j        u V — Œd S rœ   )rC   r¶   r½   rk  s     r-   rû  z$TestRunRust.parse.<locals>.<genexpr>o  s+   è è € ÐCÐC°�”�Zœ_Ð,ÐCÐCÐCÐCÐCÐCr/   )rt  r>   r—   r=   rC   r=   r%   r   )r
  r  ri   rS  r  re   rF  rC   rn  r¶   r¼   ÚanyrÀ   r½   r×   r¸   )rÆ   r;  r  rx  rt  r  rz  r—   rC   rl  r×   s              r-   r  zTestRunRust.parseS  s³  è è € ð	Rð 	Rð 	Rð 	Rð ˆØð 	ð 	ð 	ð 	ð 	ð 	ð 	�$Ø�Š˜wÑ'Ô'ð °·²ÀÑ0NÔ0Nð Ø%)§[¢[¡]¤]×%8Ò%8¸Ñ%=Ô%=Ñ"��4˜˜FØ—|’| D¨#Ñ.Ô.�Ø�I˜a  vÑ.Ô.�Ø”×#Ò# AÑ&Ô&Ð&Ø×#Ò# D¨$°´Ñ9Ô9Ð9Ø�Q‘�øð  ð ˆåÐAÐA°D´LÐAÑAÔAÑAÔAð 	"å”/ˆCˆCÝÐDÐD°t´|ÐDÑDÔDÑDÔDð 	"ÝÔ"ˆCˆCÝÐCÐC°d´lÐCÑCÔCÑCÔCð 	"Ý”/ˆCàð 	�4”8�zÔ1Ò1Ð1ØˆDŒHˆHˆHð	ð 	Ð1Ð1s   ‹CNrß   rQ  )r­   r®   r¯   rR  r¬  r  r3   r/   r-   rq  rq  N  sF   € € € € € Øðð ð ñ „Xðð ð  ð  ð  ð  ð  r/   rq  ÚstreamúT.Union[None, bytes]c                ó„   — | €dS 	 |                       d¦  «        S # t          $ r |                       dd¬¦  «        cY S w xY w)Nry   rV  z
iso-8859-1Úignorer~   )r‚   ÚUnicodeDecodeError)r}  s    r-   r‚   r‚   x  sZ   € Ø€~Øˆrð<Ø�}Š}˜WÑ%Ô%Ð%øÝð <ð <ð <Ø�}Š}˜\°(ˆ}Ñ;Ô;Ð;Ð;Ð;ð<øøøs   † ›!?¾?Úreaderúasyncio.StreamReaderÚqueueú,T.Optional['asyncio.Queue[T.Optional[str]]']Úconsole_modec              ƒ  óL  K  — g }	 |                       ¦   «         sî	 |                      d¦  «        ƒ d {V —†}nZ# t          j        $ r}|j        }Y d }~n?d }~wt          j        $ r*}|                      |j        ¦  «        ƒ d {V —†}Y d }~nd }~ww xY w|rat          |¦  «        }| 	                    |¦  «         |t          j        u rt          |dd¬¦  «         |r|                     |¦  «        ƒ d {V —† |                       ¦   «         ¯îd                     |¦  «        |r|                     d ¦  «        ƒ d {V —† S S # t          j        $ r6 d                     |¦  «        cY |r|                     d ¦  «        ƒ d {V —† S S w xY w# |r|                     d ¦  «        ƒ d {V —† w w xY w)Nó   
ry   T)r{   r9  )Úat_eofÚ	readuntilrf  ÚIncompleteReadErrorÚpartialÚLimitOverrunErrorÚreadexactlyÚconsumedr‚   re   r±   r´   rL   Úputr©   ÚCancelledError)r‚  r„  r†  Ú
stdo_linesÚ
line_bytesÚer  s          r-   Úread_decoder•  €  s<  è è € ð €Jð"Ø—-’-‘/”/ð 	*ðBØ#)×#3Ò#3°EÑ#:Ô#:Ð:Ð:Ð:Ð:Ð:Ð:�
�
øÝÔ.ð 'ð 'ð 'ØœY�
�
�
�
�
�
øøøøÝÔ,ð Bð Bð BØ#)×#5Ò#5°a´jÑ#AÔ#AÐAÐAÐAÐAÐAÐA�
�
�
�
�
�
øøøøðBøøøàð *Ý˜jÑ)Ô)�Ø×!Ò! $Ñ'Ô'Ð'Ø¥;Ô#5Ð5Ð5Ý˜$ B¨dÐ3Ñ3Ô3Ð3Øð *ØŸ)š) D™/œ/Ð)Ð)Ð)Ð)Ð)Ð)Ð)ð —-’-‘/”/ð 	*ð �wŠw�zÑ"Ô"ð ð 	"Ø—)’)˜D‘/”/Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!ð	"øõ Ô!ð #ð #ð #Ø�wŠw�zÑ"Ô"Ð"Ð"àð 	"Ø—)’)˜D‘/”/Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!ð	"ð#øøøøð ð 	"Ø—)’)˜D‘/”/Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!ð	"øøøs\   †D; ›7 ¶D; ·BÁAÁD; ÁBÁ$ B	ÂD; Â	BÂBD; Ä;$F ÅF Å?F Æ F Æ F#Úfnamec                óf   — |                       d¦  «        ot          ¦   «         pt          ¦   «          S )Nz.exe)rA  r.   r4   )r–  s    r-   Úrun_with_monor˜  ›  s)   € Ø�>Š>˜&Ñ!Ô!ÐG­:©<¬<Ð+F½9¹;¼;Ð&GÐGr/   ÚobjsúT.List[TestSerialisation]c                ój  — t          | t          ¦  «        st          dt          ¦  «        ‚| D ]…}t          |t          ¦  «        st          dt          ¦  «        ‚t          |d¦  «        st          dt          ¦  «        ‚t          |j        t          ¦  «        rt          |j        t          ¦  «        ‚Œ†| S )Nz	<unknown>r   )r@  r`   r   Úcoredata_versionr   Úhasattrr   r   )r™  Úobjs     r-   Úcheck_testdatarŸ  ž  s´   € Ý�d�DÑ!Ô!ð KÝ+¨KÕ9IÑJÔJÐJØð Oð OˆÝ˜#Õ0Ñ1Ô1ð 	OÝ/°Õ=MÑNÔNÐNÝ�s˜IÑ&Ô&ð 	OÝ/°Õ=MÑNÔNÐNÝ  ¤Õ.>Ñ?Ô?ð 	OÝ/°´Õ=MÑNÔNÐNð	Oà€Kr/   Úqú 'asyncio.Queue[T.Optional[str]]'r  c               óx   K  — 	 |                       ¦   «         ƒ d {V —†}|                      ¦   «          |€d S |W V — Œ8rœ   )ÚgetÚ	task_done)r   Úitems     r-   Ú
queue_iterr¦  ¬  sK   è è € ðØ—U’U‘W”Wˆ}ˆ}ˆ}ˆ}ˆ}ˆ}ˆØ	�Š‰ŒˆØˆ<ØˆEØˆ
ˆ
ˆ
ˆ
ðr/   Úfutureúasyncio.Futurec              ƒ  óH   K  — 	 | ƒ d{V —† dS # t           j        $ r Y dS w xY w)z?Wait for completion of the given future, ignoring cancellation.N)rf  r‘  )r§  s    r-   rJ  rJ  ´  sE   è è € ðØˆˆˆˆˆˆˆˆˆøÝÔ!ð ð ð Øˆˆðøøøs   „ Ž! !ÚfuturesúT.Iterable[asyncio.Future]rˆ  úT.Optional[T.Union[int, float]]c              ƒ  óf  K  — d	d„}|€dn't          j        ¦   «                              ¦   «         |z   }| rq|�|dk    rit          j        | |t           j        ¬¦  «        ƒ d{V —†\  }}  ||¦  «         |r(|t          j        ¦   «                              ¦   «         z
  }| r|®c|dk    °i || ¦  «         dS )
a9  Wait for completion of all the given futures, ignoring cancellation.
       If timeout is not None, raise an asyncio.TimeoutError after the given
       time has passed.  asyncio.TimeoutError is only raised if some futures
       have not completed and none have raised exceptions, even if timeout
       is zero.rª  r«  r%   rU   c                ó®   — d}| D ]A}|                      ¦   «         sd}Œ|                     ¦   «         s|                     ¦   «          ŒB|rt          j        ‚d S ©NFT)ÚdoneÚ	cancelledrC   rf  ÚTimeoutError)rª  rŠ  r  s      r-   Úcheck_futuresz#complete_all.<locals>.check_futuresÃ  sf   € àˆØð 	ð 	ˆAØ—6’6‘8”8ð Ø��Ø—[’[‘]”]ð Ø—’‘
”
�
øØð 	'ÝÔ&Ð&ð	'ð 	'r/   Nr   )rˆ  Úreturn_when)rª  r«  r%   rU   )rf  r˜  r�  r™  ÚFIRST_EXCEPTION)rª  rˆ  r³  Údeadliner°  s        r-   Úcomplete_allr·  »  s
  è è € ð	'ð 	'ð 	'ð 	'ð �ˆtˆt­GÔ,BÑ,DÔ,D×,IÒ,IÑ,KÔ,KÈgÑ,U€HØ
ð A�w�¨'°Aª+¨+Ý%œl¨7¸GÝ7>Ô7NðPñ Pô Pð Pð Pð Pð Pð Pð P‰ˆˆgàˆ�dÑÔÐØð 	AØ¥Ô!7Ñ!9Ô!9×!>Ò!>Ñ!@Ô!@Ñ@ˆGð ð A�w�¨'°Aª+¨+ð €M�'ÑÔÐÐÐr/   c                  ó:   — e Zd Z	 ddd	„Zdd„Zdd„Zdd„Zdd„ZdS )ÚTestSubprocessNÚpúasyncio.subprocess.Processrx  rÿ   rÕ  Úpostwait_fnúT.Callable[[], None]c                óv   — || _         || _        || _        d | _        d | _        || _        g | _        d | _        d S rœ   )Ú_processrx  rÕ  Ú	stdo_taskÚ	stde_taskr¼  Úall_futuresr„  )rÆ   rº  rx  rÕ  r¼  s        r-   rZ  zTestSubprocess.__init__Ü  sB   € ð ˆŒØˆŒØˆŒØ9=ˆŒØ9=ˆŒØ&ˆÔØˆÔØˆŒ
ˆ
ˆ
r/   r%   r  c                óZ   — t          j        ¦   «         | _        t          | j        ¦  «        S rœ   )rf  ÚQueuer„  r¦  rÅ   s    r-   Ústdout_lineszTestSubprocess.stdout_linesè  s   € Ý”]‘_”_ˆŒ
Ý˜$œ*Ñ%Ô%Ð%r/   r@  rA  r†  r±   úCT.Tuple[T.Optional[T.Awaitable[str]], T.Optional[T.Awaitable[str]]]c                óÎ  ‡ — dˆ fd	„}dd
„}‰ j         €V‰ j        �O ||‰ j        j        |¦  «        }t          j        |¦  «        ‰ _         ‰ j                             ‰ j         ¦  «         ‰ j        �i‰ j        t          j        j	        k    rO ||‰ j        j        |¦  «        }t          j        |¦  «        ‰ _
        ‰ j                             ‰ j
        ¦  «         ‰ j         ‰ j
        fS )Nr@  rA  r‚  rƒ  r†  r±   r%   rU   c              “  óN   •K  — t          |‰j        |¦  «        ƒ d {V —†| _        d S rœ   )r•  r„  r¸  )r@  r‚  r†  rÆ   s      €r-   Úcollect_stdoz0TestSubprocess.communicate.<locals>.collect_stdoð  s4   øè è € õ *¨&°$´*¸lÑKÔKÐKÐKÐKÐKÐKÐKˆDŒIˆIˆIr/   c              “  óB   K  — t          |d |¦  «        ƒ d {V —†| _        d S rœ   )r•  rÚ  )r@  r‚  r†  s      r-   Úcollect_stdez0TestSubprocess.communicate.<locals>.collect_stdeõ  s1   è è € õ *¨&°$¸ÑEÔEÐEÐEÐEÐEÐEÐEˆDŒIˆIˆIr/   )r@  rA  r‚  rƒ  r†  r±   r%   rU   )rÀ  rx  r¿  rf  r¥  rÂ  re   rÕ  Ú
subprocessr´   rÁ  )rÆ   r@  r†  rÉ  rË  Údecode_coros   `     r-   ÚcommunicatezTestSubprocess.communicateì  sÿ   ø€ ð	Lð 	Lð 	Lð 	Lð 	Lð 	Lð
	Fð 	Fð 	Fð 	Fð Œ>Ð! d¤kÐ&=Ø&˜, t¨T¬]Ô-AÀ<ÑPÔPˆKÝ$Ô2°;Ñ?Ô?ˆDŒNØÔ×#Ò# D¤NÑ3Ô3Ð3ØŒ;Ð" t¤{µgÔ6HÔ6OÒ'OÐ'OØ&˜, t¨T¬]Ô-AÀ<ÑPÔPˆKÝ$Ô2°;Ñ?Ô?ˆDŒNØÔ×#Ò# D¤NÑ3Ô3Ð3àŒ~˜tœ~Ð-Ð-r/   rè   c           	   ƒ  ó4  K  — | j         }	 t          ¦   «         r,t          j        ddddt	          |j        ¦  «        g¦  «         nót          j        |j        t          j	        ¦  «         t          t          j        ¦  «        5  t          j        |                     ¦   «         d¬¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   |j        �E	 | j        r| j                             ¦   «          | j        r| j                             ¦   «          d S d S t          j        |j        t          j        ¦  «         t          t          j        ¦  «        5  t          j        |                     ¦   «         d¬¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   |j        �E	 | j        r| j                             ¦   «          | j        r| j                             ¦   «          d S d S |                     ¦   «          t          t          j        ¦  «        5  t          j        |                     ¦   «         d¬¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   |j        �E	 | j        r| j                             ¦   «          | j        r| j                             ¦   «          d S d S 	 | j        r| j                             ¦   «          | j        r| j                             ¦   «          dS dS # t*          $ r` |                     ¦   «         ƒ d {V —† Y | j        r| j                             ¦   «          | j        r| j                             ¦   «          d S d S w xY w# | j        r| j                             ¦   «          | j        r| j                             ¦   «          w w xY w)	NÚtaskkillz/Fz/Tz/PIDg      à?©rˆ  r   z!Test process could not be killed.)r¿  r.   rÌ  Úrunr=   ÚpidrI   Úkillpgr•   ÚSIGTERMr   rf  r²  Úwait_forr™  rá  rÀ  ÚcancelrÁ  ÚSIGKILLÚkillÚProcessLookupError)rÆ   rº  s     r-   Ú_killzTestSubprocess._kill  s‰  è è € ð ŒMˆð)	(Ý‰|Œ|ð 1Ý” 
¨D°$¸ÅÀAÄEÁ
Ä
ÐKÑLÔLÐLÐLõ ”	˜!œ%¥¤Ñ0Ô0Ð0õ �gÔ2Ñ3Ô3ð Bð BÝ!Ô*¨1¯6ª6©8¬8¸SÐAÑAÔAÐAÐAÐAÐAÐAÐAÐAðBð Bð Bñ Bô Bð Bð Bð Bð Bð Bð Bøøøð Bð Bð Bð Bà”<Ð+Øð2 Œ~ð (Ø”×%Ò%Ñ'Ô'Ð'ØŒ~ð (Ø”×%Ò%Ñ'Ô'Ð'Ð'Ð'ð(ð (õ3 ”	˜!œ%¥¤Ñ0Ô0Ð0å�'Ô.Ñ/Ô/ð <ð <ÝÔ& q§v¢v¡x¤x¸Ð;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <àŒ|Ð'Øð$ Œ~ð (Ø”×%Ò%Ñ'Ô'Ð'ØŒ~ð (Ø”×%Ò%Ñ'Ô'Ð'Ð'Ð'ð(ð (ð �FŠF‰HŒHˆHÝ�'Ô.Ñ/Ô/ð <ð <ÝÔ& q§v¢v¡x¤x¸Ð;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <àŒ|Ð'Øð Œ~ð (Ø”×%Ò%Ñ'Ô'Ð'ØŒ~ð (Ø”×%Ò%Ñ'Ô'Ð'Ð'Ð'ð(ð (ð 7ð Œ~ð (Ø”×%Ò%Ñ'Ô'Ð'ØŒ~ð (Ø”×%Ò%Ñ'Ô'Ð'Ð'Ð'ð(ð (øõ "ð 	ð 	ð 	ð —&’&‘(”(ˆNˆNˆNˆNˆNˆNˆNØàŒ~ð (Ø”×%Ò%Ñ'Ô'Ð'ØŒ~ð (Ø”×%Ò%Ñ'Ô'Ð'Ð'Ð'ð(ð (ð	øøøøð Œ~ð (Ø”×%Ò%Ñ'Ô'Ð'ØŒ~ð (Ø”×%Ò%Ñ'Ô'Ð'Ð'ð(øøøs�   ‹A7K' Â/B=Â1K' Â=CÃK' ÃCÃ
K' Ä=K' Å/FÆ K' ÆFÆK' ÆFÆ
K' Ç#-K' È/IÈ?K' ÉIÉK' ÉIÉ
K' Ë'$MÌM ÍMÍM ÍANrU   c              ƒ  ó¦  K  — | j         }| j                             t          j        |                     ¦   «         ¦  «        ¦  «         	 t          | j        |j        ¬¦  «        ƒ d {V —† n›# t          j        $ r> |xj	        |  
                    ¦   «         ƒ d {V —†pdz  c_	        t          j        |_        Y nOt          j        $ r> |xj	        |  
                    ¦   «         ƒ d {V —†pdz  c_	        t          j        |_        Y nw xY w| j        r|                      ¦   «          n!# | j        r|                      ¦   «          w w xY w|j        pd|_        d S )NrÑ  ry   r   )r¿  rÂ  re   rf  r¥  r™  r·  rˆ  r²  r-  rÛ  r¶   rº   r×   r‘  r»   r¼  rá  )rÆ   r@  rº  s      r-   r™  zTestSubprocess.wait7  s}  è è € ØŒMˆàÔ×Ò¥Ô 5°a·f²f±h´hÑ ?Ô ?Ñ@Ô@Ð@ð	#Ý˜tÔ/¸¼ÐFÑFÔFÐFÐFÐFÐFÐFÐFÐFÐFøÝÔ#ð 	*ð 	*ð 	*ØÐ!Ô!¨4¯:ª:©<¬<Ð%7Ð%7Ð%7Ð%7Ð%7Ð%7Ð%=¸2Ñ=Ð!Ô!Ý!Ô)ˆDŒHˆHˆHÝÔ%ð 	,ð 	,ð 	,àÐ!Ô!¨4¯:ª:©<¬<Ð%7Ð%7Ð%7Ð%7Ð%7Ð%7Ð%=¸2Ñ=Ð!Ô!Ý!Ô+ˆDŒHˆHˆHð	,øøøð
 Ôð #Ø× Ò Ñ"Ô"Ð"øøð Ôð #Ø× Ò Ñ"Ô"Ð"Ð"ð#øøøð œ,Ð+¨!ˆŒˆˆs8   Á	!A+ Á*D" Á+A
DÂ5D" Â7A	DÄ D" ÄDÄD" Ä"E rœ   )rº  r»  rx  rÿ   rÕ  rÿ   r¼  r½  )r%   r  )r@  rA  r†  r±   r%   rÆ  rP  )r@  rA  r%   rU   )r­   r®   r¯   rZ  rÅ  rÎ  rÛ  r™  r3   r/   r-   r¹  r¹  Û  sƒ   € € € € € ð 6:ð
ð 
ð 
ð 
ð 
ð&ð &ð &ð &ð.ð .ð .ð .ð6.(ð .(ð .(ð .(ð`,ð ,ð ,ð ,ð ,ð ,r/   r¹  c                  ó†   — e Zd Zd#d	„Zd$d„Zd$d„Zed%d„¦   «         Zed&d„¦   «         Zed'd„¦   «         Z	d(d„Z
d)d„Zd*d!„Zd"S )+ÚSingleTestRunnerr@  r   r    r(  r—   r=   r±  úargparse.Namespacec           	     óö  — || _         || _        |                      ¦   «         | _        | j        rö| j         j        rêt
          j                             | j         j        dgz   ¦  «        |d         z   |d<   g }| j        D ]§}|                     |¦  «         t
          j	         
                    |¦  «                             d¦  «        r^t          |d„ | j         j        D ¦   «         |                     dd¦  «                             d¦  «        z   | j         j        ¦  «        |d<    nŒ¨d|vs|d         s,|j        s%t#          t%          j        dd	¦  «        ¦  «        |d<   | j        j        s| j         j        �| j         j        d
k    rd }nE| j        j        €| j         j        }n,| j        j        d
k    rd }n| j         j        | j        j        z  }|j        o| j        j        dk    o| j        j         }|j        s| j        j        o| j        j         }	t7          ||||||	¦  «        | _        | j        j        rt:          j        | _        d S | j        j         rt:          j!        | _        d S t:          j"        | _        d S )Nry   ÚPATHÚwinec                ó   — g | ]}d |z   ‘ŒS )zZ:r3   )r¥   rº  s     r-   r¨   z-SingleTestRunner.__init__.<locals>.<listcomp>Z  s   € ÐAÐAÐA a˜ ™ÐAÐAÐAr/   ÚWINEPATHú;ÚMALLOC_PERTURB_r   éÿ   r   )#r@  r±  Ú_get_cmdrã  Úextra_pathsrI   Úpathsepr©   re   rr   Úbasenamer
  r   r£  ri   r_  Ú	benchmarkr=   ÚrandomÚrandintr^   rˆ  Útimeout_multiplierr)  Únum_processesr¨  r¿  r  Úrunobjr±   r³   r†  r«  r´   r²   )
rÆ   r@  r    r—   r±  ÚwinecmdrD   rˆ  r)  r¨  s
             r-   rZ  zSingleTestRunner.__init__L  sl  € àˆŒ	ØˆŒØ—=’=‘?”?ˆŒàŒ8ð 	˜œ	Ô-ð 	Ýœ*Ÿ/š/¨$¬)Ô*?À2À$Ñ*FÑGÔGÈ#ÈfÌ+ÑUˆC�‰KØˆGØ”Xð ð �Ø—’˜qÑ!Ô!Ð!Ý”7×#Ò# AÑ&Ô&×1Ò1°&Ñ9Ô9ð Ý&8ØØAÐA¨4¬9Ô+@ÐAÑAÔAÀCÇGÂGÈJÐXZÑD[ÔD[×DaÒDaÐbeÑDfÔDfÑfØœ	Ô)ñ'ô '�C˜
‘Oð
 �Eðð  SÐ(Ð(°Ð4EÔ0FÐ(ÐPWÔPaÐ(Ý%(­¬¸¸3Ñ)?Ô)?Ñ%@Ô%@ˆCÐ!Ñ"àŒ<Ôð 	J˜tœyÔ0Ð8¸D¼IÔ<MÐQRÒ<RÐ<RØˆGˆGØŒ\Ô,Ð4Ø”iÔ'ˆGˆGØŒ\Ô,°Ò1Ð1ØˆGˆGà”iÔ'¨$¬,Ô*IÑIˆGàÔ&Ðb¨4¬<Ô+EÈÒ+IÐbÐRVÔR^ÔRbÐNbˆØ”<Ð7 4¤<Ô#7ÐSÀÄÔASÐ=SˆÝ˜d C¨¨w¸ÀWÑMÔMˆŒàŒ<Ôð 	3Ý +¤ˆDÔÐÐØŒ[Ô&ð 	3Ý +Ô 2ˆDÔÐÐå +Ô 2ˆDÔÐÐr/   r%   úT.Optional[T.List[str]]c                óè  — | j         j        d         }| j        j        r>| j         j        r2t
          j                             |¦  «        st          d|›d�¦  «        ‚| 	                    d¦  «        rddg| j         j        z   S | j         j
        st          |¦  «        rdg| j         j        z   S | j         j        r®| j         j
        r¢| j         j        r–| j         j        €d S | j         j        r|| j         j                             ¦   «         s3d}t          |                     | j         j        j        ¦  «        ¦  «        ‚| j         j                             ¦   «         | j         j        z   S | j         j        S )	Nr   zThe test program z7 does not exist. Cannot run tests before building them.z.jarÚjavaz-jarÚmonozmThe exe_wrapper defined in the cross file {!r} was not found. Please check the command and/or add it to PATH.)r@  r–  r±  Ú
no_rebuildÚcmd_is_builtrI   rr   Úisfiler¬   rA  Úis_cross_builtr˜  Ú
cmd_is_exeÚneeds_exe_wrapperÚexe_wrapperÚfoundr¤   r—   Úget_command)rÆ   Ú	testentryÚmsgs      r-   Ú_get_test_cmdzSingleTestRunner._get_test_cmd{  sn  € Ø”I”O AÔ&ˆ	ØŒ<Ô"ð 	z t¤yÔ'=ð 	zÅbÄgÇnÂnÐU^ÑF_ÔF_ð 	zÝÐ x°IÐ xÐ xÐ xÑyÔyÐyØ×Ò˜fÑ%Ô%ð 	MØ˜FÐ# d¤i¤oÑ5Ð5Ø”Ô)ð 	M­m¸IÑ.FÔ.Fð 	MØ�8˜dœiœoÑ-Ð-ØŒYÔ!ð 	M d¤iÔ&>ð 	MÀ4Ä9ÔC^ð 	MØŒyÔ$Ð,ð �tØ”Ô%ð Mð ”yÔ,×2Ò2Ñ4Ô4ð PðT�Cå'¨¯
ª
°4´9Ô3HÔ3MÑ(NÔ(NÑOÔOÐOØ”yÔ,×8Ò8Ñ:Ô:¸T¼Y¼_ÑLÐLØŒyŒÐr/   c                óv   — |                       ¦   «         }|sd S t                               | j        ¦  «        |z   S rœ   )r  ÚTestHarnessÚget_wrapperr±  )rÆ   Útest_cmds     r-   rè  zSingleTestRunner._get_cmd’  s;   € Ø×%Ò%Ñ'Ô'ˆØð 	Ø�4Ý×&Ò& t¤|Ñ4Ô4°xÑ?Ð?r/   r&   c                ó   — | j         j        S rœ   )rñ  r)  rÅ   s    r-   r)  zSingleTestRunner.is_parallel˜  s   € àŒ{Ô&Ð&r/   c                ó   — | j         j        S rœ   )rñ  r—   rÅ   s    r-   Úvisible_namezSingleTestRunner.visible_nameœ  s   € àŒ{ÔÐr/   rÿ   c                ó   — | j         j        S rœ   )rñ  rˆ  rÅ   s    r-   rˆ  zSingleTestRunner.timeout   s   € àŒ{Ô"Ð"r/   r;  r<  r  c              ƒ  óz  K  — | j         €;d| _        |                     | j        ¦  «         | j                             ¦   «          nq| j         | j        j        z   | j        j        z   }| j         	                    |¦  «         |                     | j        ¦  «         |  
                    ||¦  «        ƒ d {V —† | j        S )Nz8Not run because can not execute cross compiled binaries.)rã  r¸  Úlog_start_testrñ  rH  r@  Úcmd_argsr±  Ú	test_argsr?  Ú_run_cmd)rÆ   r;  rã  s      r-   rÒ  zSingleTestRunner.run¤  s·   è è € ØŒ8ÐØRˆDŒIØ×"Ò" 4¤;Ñ/Ô/Ð/ØŒK×%Ò%Ñ'Ô'Ð'Ð'à”(˜TœYÔ/Ñ/°$´,Ô2HÑHˆCØŒK×Ò˜cÑ"Ô"Ð"Ø×"Ò" 4¤;Ñ/Ô/Ð/Ø—-’- ¨Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ØŒ{Ðr/   rn   r0  rx  rÕ  Úcwdrè   r¹  c          	   ƒ  óf  ‡ ‡	K  — ‰ j         j        rGt          j        t          j        ¦  «        Š	t          j        t          j        t          j        ¦  «         dˆ fd„}dˆ	ˆ fd„}t          j        |||||t          ¦   «         s|nd dœŽƒ d {V —†}t          |||t          ¦   «         s|nd ¬¦  «        S )Nr%   rU   c                 óœ   •— ‰ j         j        r+t          j        t          j        t          j        ¦  «         d S t          j        ¦   «          d S rœ   )r±  r^   r•   ÚSIGINTÚSIG_DFLrI   ÚsetsidrÅ   s   €r-   Ú
preexec_fnz4SingleTestRunner._run_subprocess.<locals>.preexec_fn¹  s?   ø€ ØŒ|Ôð õ ”�fœm­V¬^Ñ<Ô<Ð<Ð<Ð<õ
 ”	‘”���r/   c                 ób   •— ‰j         j        r!t          j        t          j        ‰ ¦  «         d S d S rœ   )r±  r^   r•   r  )Úprevious_sigint_handlerrÆ   s   €€r-   r¼  z5SingleTestRunner._run_subprocess.<locals>.postwait_fnÄ  s8   ø€ ØŒ|Ôð Få”�fœmÐ-DÑEÔEÐEÐEÐEðFð Fr/   )rx  rÕ  r    r  r  )rx  rÕ  r¼  rM  )
r±  r^   r•   Ú	getsignalr  ÚSIG_IGNrf  Úcreate_subprocess_execr.   r¹  )
rÆ   rn   rx  rÕ  r    r  r  r¼  rº  r  s
   `        @r-   Ú_run_subprocessz SingleTestRunner._run_subprocess°  s  øøè è € ð Œ<Ôð 	9Ý&,Ô&6µv´}Ñ&EÔ&EÐ#åŒM�&œ-­¬Ñ8Ô8Ð8ð		ð 		ð 		ð 		ð 		ð 		ð	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fõ
 Ô0°$Ø8>Ø8>Ø58Ø58ÝNXÉlÌlÐ<d¸J¸JÐ`dðfð fð fð fð fð fð fð fð fˆõ ˜a¨°vÝ=G¹\¼\Ð*S¨+¨+ÈtðUñ Uô Uð 	Ur/   rã  rU   c              ƒ  óÐ  K  — | j         t          j        u rd }d }nKt          j        j        }| j        j        s| j        j	        st          j        j
        nt          j        j        }g }| j        j        t          j        u re| j        j        }| j        j        r4t"          j                             | j        j        | j        j        ¦  «        }|                     d|› d�¦  «         |                      ||z   ||| j        j        | j        j        ¬¦  «        ƒ d {V —†}| j        j	        rB| j                             ||                     ¦   «         ¦  «        }t          j        |¦  «        }	nd }	|                     | j        | j         ¦  «        \  }
}|                     | j        ¦  «        ƒ d {V —† |	r|	ƒ d {V —† |
r|
ƒ d {V —† |r|ƒ d {V —† | j                             ¦   «          d S )Nz--gtest_output=xml:r^  )rx  rÕ  r    r  )r†  r±   r³   rf  rÌ  ÚPIPEr±  ri   rñ  r¬  r´   r@  r$  r   ÚGTESTr—   r_  rI   rr   r©   re   r  r    r  rÅ  r¥  rÎ  r™  rJ  )rÆ   r;  rã  rx  rÕ  Ú	extra_cmdÚ	gtestnamerº  Ú
parse_coroÚ
parse_taskrÀ  rÁ  s               r-   r  zSingleTestRunner._run_cmdÒ  s  è è € ØÔ¥¤Ð/Ð/ØˆFØˆFˆFåÔ'Ô,ˆFà”|Ô)ð-Ø26´+Ô2Kð-•WÔ'Ô.Ð.åÔ'Ô,ð ð ˆ	ØŒ9Ô¥Ô!3Ð3Ð3Øœ	œˆIØŒyÔ ð LÝœGŸLšL¨¬Ô):¸D¼I¼NÑKÔK�	Ø×ÒÐB°9ÐBÐBÐBÑCÔCÐCà×&Ò& s¨Y¡Ø.4Ø.4Ø+/¬;¬?Ø+/¬9Ô+<ð	 'ñ >ô >ð >ð >ð >ð >ð >ð >ˆð Œ;Ô$ð 	Øœ×*Ò*¨7°A·N²NÑ4DÔ4DÑEÔEˆJÝ Ô.¨zÑ:Ô:ˆJˆJàˆJà Ÿ}š}¨T¬[¸$Ô:KÑLÔLÑˆ	�9Ø�fŠf�T”[Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!àð 	ØÐÐÐÐÐÐÐØð 	ØˆOˆOˆOˆOˆOˆOˆOØð 	ØˆOˆOˆOˆOˆOˆOˆOàŒ×ÒÑÔÐÐÐr/   N)r@  r   r    r(  r—   r=   r±  rß  )r%   ró  rß   rà   )r%   rÿ   )r;  r<  r%   r  )rn   r0  rx  rÿ   rÕ  rÿ   r    r(  r  rè   r%   r¹  )r;  r<  rã  r0  r%   rU   )r­   r®   r¯   rZ  r  rè  rR  r)  r	  rˆ  rÒ  r  r  r3   r/   r-   rÞ  rÞ  J  sö   € € € € € ð-3ð -3ð -3ð -3ð^ð ð ð ð.@ð @ð @ð @ð ð'ð 'ð 'ñ „Xð'ð ð ð  ð  ñ „Xð ð ð#ð #ð #ñ „Xð#ð
ð 
ð 
ð 
ð Uð  Uð  Uð  UðD'ð 'ð 'ð 'ð 'ð 'r/   rÞ  c                  ój  — e Zd ZdNd„ZdOd„ZdPd„ZdPd	„ZdQd„ZdRd„ZdSd„Z	dPd„Z
dTd„ZdUd„ZdVd„ZdWd!„ZedXd#„¦   «         ZedXd$„¦   «         ZdYd&„Z	 	 	 	 	 dZd[d2„Zd\d3„ZdXd4„ZdXd5„Zed]d8„¦   «         Zed^d;„¦   «         Zd_d<„Zd`d?„Zdad@„ZdPdA„ZdPdB„ZedbdC„¦   «         ZdcdD„Z dddG„Z!dedK„Z"dfdL„Z#dddM„Z$d)S )gr  r±  rß  c                ó  — || _         g | _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _	        d| _
        g | _        t          ¦   «         | _        | j                             | j        ¦  «         d| _        d | _        d | _        | j         j        rç| j         j        sÛd }t(          j                             | j         j        d| j         j        ¦  «        | _        | j         j        r>t(          j                             |                      | j         ¦  «        d         ¦  «        }n,| j         j        r | j         j                             dd¦  «        }|r'| xj        d|                     dd¦  «        z   z  c_        |                      ¦   «          |                      ¦   «          t?          ¦   «         }| j         D ]!}|j!        D ]}| "                    |¦  «         ŒŒ"tG          |¦  «        | _$        d S )Nr   Fz
meson-logsú:rz  r`  rŒ   )%r±  rÂ  Ú
fail_countÚexpectedfail_countÚunexpectedpass_countÚsuccess_countÚ
skip_countÚtimeout_countrj  Úname_max_lenÚis_runÚloggersr]  Úconsole_loggerre   r¤  ÚninjaÚlogfile_baseÚlogbaser^   rI   rr   r©   rc   ra   rë  r  rm   rS  Úprepare_buildÚload_metadatar�  rí  r  r�  r`   rò  )rÆ   r±  ÚnamebaseÚssrl  r<   s         r-   rZ  zTestHarness.__init__ý  så  € ØˆŒØ"$ˆÔØˆŒØ"#ˆÔØ$%ˆÔ!ØˆÔØˆŒØˆÔØˆŒØˆÔØˆŒØˆŒÝ+™oœoˆÔØŒ×Ò˜DÔ/Ñ0Ô0Ð0Ø!ˆÔØˆŒ
à ˆÔØŒ<Ôð 
	F¨¬Ô(8ð 
	FØˆHÝ "¤§¢¨T¬\¬_¸lÈDÌLÔL`Ñ aÔ aˆDÔàŒ|Ô#ð @Ýœ7×+Ò+¨D×,<Ò,<¸T¼\Ñ,JÔ,JÈ1Ô,MÑNÔN��Ø”Ô#ð @Øœ<Ô-×5Ò5°c¸3Ñ?Ô?�àð FØÐ!Ô! S¨8×+;Ò+;¸CÀÑ+EÔ+EÑ%EÑEÐ!Ô!à×ÒÑÔÐØ×ÒÑÔÐå‰UŒUˆØ”ð 	ð 	ˆAØ”Wð ð �Ø—’�q‘	”	�	�	ðå˜2‘h”hˆŒˆˆr/   r%   ú'ConsoleLogger'c                ó"   — | j         sJ ‚| j         S rœ   )r0  rÅ   s    r-   Úget_console_loggerzTestHarness.get_console_logger%  s   € ØÔ"Ð"Ð"Ð"ØÔ"Ð"r/   rU   c                ó@  — | j         j        rd S t          | j         j        ¦  «        dz                       ¦   «         st          d¦  «         d| j         _        d S t          j        ¦   «         | _        | j        s%t          d¦  «         t          j
        d¦  «         d S d S )Núbuild.ninjazEOnly ninja backend is supported to rebuild tests before running them.Tz%Can't find ninja, can't rebuild test.é   )r±  r÷  r   rc   Úis_filerL   r
   Údetect_ninjar1  r2   ÚexitrÅ   s    r-   r4  zTestHarness.prepare_build)  s�   € ØŒ<Ô"ð 	ØˆFå�T”\”_Ñ%Ô%¨Ñ5×>Ò>Ñ@Ô@ð 	ÝÐYÑZÔZÐZà&*ˆDŒLÔ#ØˆFå Ô-Ñ/Ô/ˆŒ
ØŒzð 	ÝÐ9Ñ:Ô:Ð:õ
 ŒH�S‰MŒMˆMˆMˆMð	ð 	r/   c                ó~  — t          j        ¦   «         }	 t          j        | j        j        ¦  «         | j        j        sDt          j        | j        dgz   ¦  «        j	        }|dk    rt          d| j        j        ›�¦  «        ‚t          j        t          j        ¦   «         ¦  «        | _        | j        j        s| j        j        | j        _        | j        j        r|                      d¦  «        | _        n|                      d¦  «        | _        t          j        |¦  «         d S # t          j        |¦  «         w xY w)Nr<  r   zCould not configure zmeson_benchmark_setup.datzmeson_test_setup.dat)rI   ÚgetcwdÚchdirr±  rc   r÷  rÌ  rÒ  r1  rá  r¬   r	   ÚloadÚ
build_datarm   Útest_setup_default_namerì  Ú
load_testsrí  )rÆ   ÚstartdirÚrets      r-   r5  zTestHarness.load_metadata<  s  € Ý”9‘;”;ˆð	ÝŒH�T”\”_Ñ%Ô%Ð%ð ”<Ô*ð TÝ ”n T¤Z°=°/Ñ%AÑBÔBÔM�Ø˜!’8�8Ý'Ð(R¸t¼|¼Ð(RÐ(RÑSÔSÐSå#œj­¬©¬Ñ5Ô5ˆDŒOØ”<Ô%ð MØ%)¤_Ô%L�”Ô"ØŒ|Ô%ð EØ!Ÿ_š_Ð-HÑIÔI�”
�
à!Ÿ_š_Ð-CÑDÔD�”
åŒH�XÑÔÐÐÐø�BŒH�XÑÔÐÐøøøs   •C;D& Ä&D<Ú	file_namer=   rš  c                ó(  — t          d¦  «        |z  }|                     ¦   «         st          d| j        j        ›d�¦  «        ‚|                     d¦  «        5 }t          t          j        |¦  «        ¦  «        }d d d ¦  «         n# 1 swxY w Y   |S )Nzmeson-privatez
Directory z- does not seem to be a Meson build directory.Úrb)	r   r>  r¬   r±  rc   rX  rŸ  ÚpicklerD  )rÆ   rJ  Údatafiler  r™  s        r-   rG  zTestHarness.load_testsT  sÅ   € Ý˜Ñ(Ô(¨9Ñ4ˆØ×ÒÑ!Ô!ð 	oÝÐ m¨T¬\¬_Ð mÐ mÐ mÑnÔnÐnØ�]Š]˜4Ñ Ô ð 	2 AÝ!¥&¤+¨a¡.¤.Ñ1Ô1ˆDð	2ð 	2ð 	2ñ 	2ô 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2øøøð 	2ð 	2ð 	2ð 	2àˆs   Á"BÂBÂBr<  c                ó   — | S rœ   r3   rÅ   s    r-   Ú	__enter__zTestHarness.__enter__\  s   € Øˆr/   Úexc_typer  Ú	exc_valueÚ	tracebackc                ó.   — |                       ¦   «          d S rœ   )Úclose_logfiles)rÆ   rQ  rR  rS  s       r-   Ú__exit__zTestHarness.__exit___  s   € Ø×ÒÑÔÐÐÐr/   c                óP   — | j         D ]}|                     ¦   «          Œd | _        d S rœ   )r/  rL  r0  ©rÆ   rO  s     r-   rU  zTestHarness.close_logfilesb  s0   € Ø”ð 	ð 	ˆAØ�GŠG‰IŒIˆIˆIØ"ˆÔÐÐr/   r@  úT.Optional[TestSerialisation]úbuild.TestSetupc                óŒ  — d| j         j        v rV| j         j        | j        j        vr"t	          j        d| j         j        › d�¦  «         | j        j        | j         j                 S |j        dz   | j         j        z   }|| j        j        vr*t	          j        d| j         j        › d|j        › d�¦  «         | j        j        |         S )Nr&  zUnknown test setup 'z'.zTest setup 'z' not found from project ')r±  rm   rE  Útest_setupsr2   r@  r/  )rÆ   r@  Ú	full_names      r-   Úget_test_setupzTestHarness.get_test_setupg  sÁ   € Ø�$”,Ô$Ð$Ð$ØŒ|Ô!¨¬Ô)DÐDÐDÝ”ÐF°´Ô0BÐFÐFÐFÑGÔGÐGØ”?Ô.¨t¬|Ô/AÔBÐBàÔ)¨CÑ/°$´,Ô2DÑDˆIØ ¤Ô ;Ð;Ð;Ý”Ðk¨¬Ô(:ÐkÐkÐVZÔVgÐkÐkÐkÑlÔlÐlØ”?Ô.¨yÔ9Ð9r/   r   r(  c                ó^  — |                       |¦  «        }|j        s|j        |_        |j        rd|_        |j        €|j        |_        |j        €|j        |_        n|j        rt          j        d¦  «         |j         	                    t          j                             ¦   «         ¦  «        S )NTzBConflict: both test setup and command line specify an exe wrapper.)r^  r^   r¨  rï  ra   rý  r2   r@  r    Úget_envrI   rJ   Úcopy)rÆ   r±  r@  Úcurrents       r-   Úmerge_setup_optionszTestHarness.merge_setup_optionsr  s¢   € Ø×%Ò% dÑ+Ô+ˆØŒ{ð 	&Ø!œ+ˆGŒKØŒ;ð 	#Ø"ˆGŒOØÔ%Ð-Ø)0Ô)CˆGÔ&ð Œ?Ð"Ø%Ô1ˆGŒOˆOØÔ ð 	[ÝŒHÐYÑZÔZÐZØŒ{×"Ò"¥2¤:§?¢?Ñ#4Ô#4Ñ5Ô5Ð5r/   rÞ  c                ó  — |                       |¦  «        }t          | j        ¦  «        }| j        j        r|                      ||¦  «        }nt
          j                             ¦   «         }|j         	                    |¦  «        }| 
                    |¦  «         |j        rP|j        rI|j        rB|j                             ¦   «         r)t          |j                             ¦   «         ¦  «        |d<   t#          ||||¦  «        S )NÚMESON_EXE_WRAPPER)Úget_pretty_suiter   r±  rm   rc  rI   rJ   ra  r    r`  rh  rú  rü  rý  rþ  r   rÿ  rÞ  )rÆ   r@  r—   r±  r    r'  s         r-   Úget_test_runnerzTestHarness.get_test_runner‚  sñ   € Ø×$Ò$ TÑ*Ô*ˆÝ˜4œ<Ñ(Ô(ˆØŒ<Ôð 	$Ø×*Ò*¨7°DÑ9Ô9ˆCˆCå”*—/’/Ñ#Ô#ˆCØ”8×#Ò# CÑ(Ô(ˆØ�
Š
�8ÑÔÐØÔð 	Q DÔ$:ð 	QØÔ ð	QØ%)Ô%5×%;Ò%;Ñ%=Ô%=ð	Qå'0°Ô1A×1MÒ1MÑ1OÔ1OÑ'PÔ'PˆCÐ#Ñ$Ý  c¨4°Ñ9Ô9Ð9r/   rC   r  c                óÂ  — |j         t          j        u r| xj        dz  c_        nç|j         t          j        u r| xj        dz  c_        nÃ|j         t          j        u r| xj        dz  c_        nŸ|j         t          j        t          j	        t          j
        hv r| xj        dz  c_        nd|j         t          j        u r| xj        dz  c_        n@|j         t          j        u r| xj        dz  c_        nt!          j        d|j         › �¦  «         |j                              ¦   «         r| j                             |¦  «         | j        D ]}|                     | |¦  «         Œd S )Nr   z!Unknown test result encountered: )r×   r¶   rº   r,  r¼   r+  r¹   r*  r½   rÀ   r»   r'  r¾   r(  r¿   r)  r2   r@  rÉ   rÂ  re   r/  rH  )rÆ   rC   rO  s      r-   Úprocess_test_resultzTestHarness.process_test_result�  sf  € ØŒ:�Ô+Ð+Ð+ØÐÔ !Ñ#ÐÔÐØŒZ�:œ?Ð*Ð*ØˆOŒO˜qÑ ˆOŒOˆOØŒZ�:œ=Ð(Ð(ØÐÔ !Ñ#ÐÔÐØŒZ�JœO­ZÔ-=½zÔ?SÐTÐTÐTØˆOŒO˜qÑ ˆOŒOˆOØŒZ�:Ô2Ð2Ð2ØÐ#Ô# qÑ(Ð#Ô#Ð#ØŒZ�:Ô4Ð4Ð4ØÐ%Ô%¨Ñ*Ð%Ô%Ð%åŒHÐE¸¼ÐEÐEÑFÔFÐFàŒ:×ÒÑÔð 	3ØÔ#×*Ò*¨6Ñ2Ô2Ð2Ø”ð 	 ð 	 ˆAØ�EŠE�$˜ÑÔÐÐð	 ð 	 r/   r>   c                óD   — t          t          | j        ¦  «        ¦  «        S rœ   )rŒ  r=   rj  rÅ   s    r-   ÚnumlenzTestHarness.numlen¥  s   € å•3�t”Ñ'Ô'Ñ(Ô(Ð(r/   c                ó   — d| j         z  dz   S )Nr5   )rk  rÅ   s    r-   rd  zTestHarness.max_left_width©  s   € à�4”;‰ Ñ"Ð"r/   r  c                óF   — d                      | j        || j        ¬¦  «        S )Nz{num:{numlen}}/{testcount} )rk  r  Ú	testcount)r¤   rk  rj  )rÆ   r  s     r-   Úget_test_num_prefixzTestHarness.get_test_num_prefix­  s.   € Ø,×3Ò3¸4¼;Ø8;Ø>B¼oð 4ñ Oô Oð 	Or/   r   ry   NrÕ   r&   rd  r»  rŠ  rè   r¼  r‹  c                óì  — |€|                       |j        ¦  «        }t          || j        ¦  «        }|€|j        }|| j        z   dz   t          |¦  «        z
  t          |¦  «        z
  t          |¦  «        z
  }|dt          d|¦  «        z  z  }|€[d                     |j         	                    |¦  «        |j
        | j        dz   ¬¦  «        }|                     ¦   «         }	|	r|d|	z   z  }||z   |z   |z   S )Nr   rŒ   z{res} {dur:{durlen}.2f}sr$   )r×   r†  r‡  r‰  )ro  r  r£  rd  r—   r-  rF   r¤   r×   rÚ   rØ  r�  r�  )
rÆ   rC   rÕ   rd  r»  rŠ  r¼  r‹  Úextra_mid_widthr’  s
             r-   r¤   zTestHarness.format²  s  € ð ˆ<Ø×+Ò+¨F¬JÑ7Ô7ˆDõ ˜^¨TÔ-@ÑAÔAˆàˆ>Ø”[ˆFØ(¨4Ô+<Ñ<¸qÑ@Å8ÈFÑCSÔCSÑSÕV^Ð_cÑVdÔVdÑdÕgoÐpvÑgwÔgwÑwˆØ�#�˜A˜Ñ/Ô/Ñ/Ñ/ˆàˆ=Ø.×5Ò5Ø”J×'Ò'¨Ñ1Ô1Ø”OØÔ,¨qÑ0ð 6ñ 2ô 2ˆEð ×(Ò(Ñ*Ô*ˆGØð )Ø˜ ™Ñ(�Ø˜‰}˜vÑ%¨Ñ-Ð-r/   c                ó–   — t          j        d¦  «                             | j        | j        | j        | j        | j        | j        ¦  «        S )Nzñ
            Ok:                 {:<4}
            Expected Fail:      {:<4}
            Fail:               {:<4}
            Unexpected Pass:    {:<4}
            Skipped:            {:<4}
            Timeout:            {:<4}
            )	ÚtextwrapÚdedentr¤   r*  r(  r'  r)  r+  r,  rÅ   s    r-   rÄ  zTestHarness.summaryÎ  sL   € ÝŒð  ñ ô ÷ ’˜Ô*¨DÔ,CÀTÄ_ØÔ1°4´?ÀDÔDVñXô Xð	Xr/   c                ó0   — | j         | j        z   | j        z   S rœ   )r'  r)  r,  rÅ   s    r-   Útotal_failure_countzTestHarness.total_failure_countÙ  s   € ØŒ Ô!:Ñ:¸TÔ=OÑOÐOr/   c                óæ  ‡ — ‰ j         rt          d¦  «        ‚d‰ _         ‰                      ¦   «         }|sdS ‰ j        j        s4t          ‰ j        ‰ j        j        |¦  «        st          j	        d¦  «         t          ˆ fd„|D ¦   «         ¦  «        ‰ _        t          ‰ j        j        t          |¦  «        ‰ j        j        z  ¦  «        ‰ j        _        t!          j        ¦   «         }	 t!          j        ‰ j        j        ¦  «         g }t'          ‰ j        j        ¦  «        D ]e}|                     ˆ fd„|D ¦   «         ¦  «         |dk    r<t          d„ |D ¦   «         ¦  «        ‰ _        t-          d„ |D ¦   «         ¦  «        ‰ _        Œft          |¦  «        ‰ _        ‰                      |¦  «         t!          j        |¦  «         n# t!          j        |¦  «         w xY w‰                      ¦   «         S )	Nz*Test harness object can only be used once.Tr   é}   c              3  ó\   •K  — | ]&}t          ‰                     |¦  «        ¦  «        V — Œ'd S rœ   )rF   rf  ©r¥   r@  rÆ   s     €r-   rû  z#TestHarness.doit.<locals>.<genexpr>ë  s9   øè è € ÐXÐXÈ$¥¨×)>Ò)>¸tÑ)DÔ)DÑ EÔ EÐXÐXÐXÐXÐXÐXr/   c              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S rœ   )rg  rz  s     €r-   rû  z#TestHarness.doit.<locals>.<genexpr>ó  s1   øè è € ÐLÐL¸d˜t×3Ò3°DÑ9Ô9ÐLÐLÐLÐLÐLÐLr/   c              3  óv   K  — | ]4}t          t          t          |j        pd ¦  «        ¦  «        ¦  «        V — Œ5dS )r#   N)rŒ  r=   r>   rˆ  ©r¥   Úrunners     r-   rû  z#TestHarness.doit.<locals>.<genexpr>õ  s]   è è € ð 0Gð 0GØ4:õ 14µC½¸F¼NÐ<PÈbÑ8QÔ8QÑ4RÔ4RÑ0SÔ0Sð 0Gð 0Gð 0Gð 0Gð 0Gð 0Gr/   c              3  ó<   K  — | ]}|j         t          j        uV — Œd S rœ   )r†  r±   r²   r}  s     r-   rû  z#TestHarness.doit.<locals>.<genexpr>ø  sI   è è € ð ,Cð ,CØ06ð -3Ô,?Å{ÔGYÐ,Yð ,Cð ,Cð ,Cð ,Cð ,Cð ,Cr/   )r.  ÚRuntimeErrorÚ	get_testsr±  r÷  Úrebuild_depsr1  rc   r2   r@  r£  r-  Úminrð  rŒ  rZ   rI   rB  rC  ÚrangeÚextendr�  r|  r¤  rj  Ú	run_testsrv  )rÆ   rí  rH  ÚrunnersrÆ  s   `    r-   ÚdoitzTestHarness.doitÜ  s  ø€ ØŒ;ð 	MÝÐKÑLÔLÐLØˆŒØ—’Ñ Ô ˆØð 	Ø�1ØŒ|Ô&ð 	­|¸D¼JÈÌÌÐY^Ñ/_Ô/_ð 	õ ŒH�S‰MŒMˆMåÐXÐXÐXÐXÐRWÐXÑXÔXÑXÔXˆÔÝ%(¨¬Ô)CÝ),¨U©¬°d´lÔ6IÑ)Iñ&Kô &KˆŒÔ"å”9‘;”;ˆð	ÝŒH�T”\”_Ñ%Ô%Ð%ØˆGÝ˜4œ<Ô.Ñ/Ô/ð Cð C�Ø—’ÐLÐLÐLÐLÀeÐLÑLÔLÑLÔLÐLØ˜’6�6Ý,/ð 0Gð 0GØ>Eð0Gñ 0Gô 0Gñ -Gô -G�DÔ)õ ),ð ,Cð ,CØ:Að,Cñ ,Cô ,Cñ )Cô )C�DÔ%øõ " '™lœlˆDŒOØ�NŠN˜7Ñ#Ô#Ð#åŒH�XÑÔÐÐø�BŒH�XÑÔÐÐøøøØ×'Ò'Ñ)Ô)Ð)s   Ã)CG ÇGr  úT.Tuple[str, str]c                óˆ   — d| v r;|                       dd¦  «        }t          |¦  «        dk    sJ ‚|d         |d         fS | dfS )Nr&  r   r5   r   ry   )ri   rŒ  )r  ri   s     r-   Úsplit_suite_stringzTestHarness.split_suite_string  sN   € à�%ˆ<ˆ<Ø—K’K  QÑ'Ô'ˆEÝ�u‘:”: ’?�?�?�?Ø˜”8˜U 1œXÐ%Ð%à˜"�9Ðr/   rò  r0  c                óÚ   — |D ]g}t                                |¦  «        \  }}| j        D ]@}t                                |¦  «        \  }}|s
||k    r  dS |r||k    rŒ4|r||k    rŒ=  dS ŒhdS ©NTF)r  r‹  r  )r@  rò  r  Ú	prj_matchÚst_matchÚprjstÚprjÚsts           r-   Útest_in_suiteszTestHarness.test_in_suites
  s«   € àð 	ð 	ˆEÝ$/×$BÒ$BÀ5Ñ$IÔ$IÑ!ˆY˜Øœð ð �Ý'×:Ò:¸5ÑAÔA‘	��bð  ð   B¨)¢O OØ˜4˜4˜4ð ð  ¨	Ò!1Ð!1ØØð   h¢ ØØ�t�t�tð3ð4 ˆur/   c                ó<  — t                                || j        j        ¦  «        rdS | j        j        r%t                                || j        j        ¦  «        S | j        j        r7|                      |¦  «        }t                                ||j        ¦  «        rdS dS r¯  )r  r“  r±  rh   rd   rm   r^  )rÆ   r@  rm   s      r-   Útest_suitablezTestHarness.test_suitable*  s”   € Ý×%Ò% d¨D¬LÔ,GÑHÔHð 	Ø�5àŒ<Ô&ð 	Qõ ×-Ò-¨d°D´LÔ4OÑPÔPÐPàŒ<Ôð 	Ø×'Ò'¨Ñ-Ô-ˆEÝ×)Ò)¨$°Ô0DÑEÔEð Ø�uàˆtr/   rí  ú*T.Generator[TestSerialisation, None, None]c              #  ó¸   K  — | j         j        D ]J}d|v r|                     dd¬¦  «        \  }}nd|}}|D ]"}|r|j        |k    rŒ|r|j        |k    rŒ|V — Œ#ŒKdS )aº  
        Allow specifying test names like "meson test foo1 foo2", where test('foo1', ...)

        Also support specifying the subproject to run tests from like
        "meson test subproj:" (all tests inside subproj) or "meson test subproj:foo1"
        to run foo1 inside subproj. Coincidentally also "meson test :foo1" to
        run all tests with that name across all subprojects, which is
        identical to "meson test foo1"
        r&  r   )Úmaxsplitry   N)r±  rn   ri   r/  r—   )rÆ   rí  ÚargÚsubprojr—   rl  s         r-   Útests_from_argszTestHarness.tests_from_args:  sž   è è € ð ”<Ô$ð 
	ð 
	ˆCØ�cˆzˆzØ #§	¢	¨#¸ 	Ñ :Ô :‘�˜˜à " C˜�Øð ð �Øð ˜qœ~°Ò8Ð8ØØð ˜AœF dšN˜NØØ����ðð
	ð 
	r/   c                óà   ‡ — ‰ j         st          d¦  «         g S ˆ fd„‰ j         D ¦   «         }‰ j        j        r"t	          ‰                      |¦  «        ¦  «        }|st          d¦  «         g S |S )NzNo tests defined.c                ó>   •— g | ]}‰                      |¦  «        ¯|‘ŒS r3   )r•  )r¥   rl  rÆ   s     €r-   r¨   z)TestHarness.get_tests.<locals>.<listcomp>U  s,   ø€ Ð@Ð@Ð@�q¨$×*<Ò*<¸QÑ*?Ô*?Ð@�Ð@Ð@Ð@r/   zNo suitable tests defined.)rí  rL   r±  rn   r`   r›  )rÆ   rí  s   ` r-   r�  zTestHarness.get_testsP  s…   ø€ ØŒzð 	ÝÐ%Ñ&Ô&Ð&ØˆIà@Ð@Ð@Ð@˜DœJÐ@Ñ@Ô@ˆØŒ<Ôð 	6Ý˜×-Ò-¨eÑ4Ô4Ñ5Ô5ˆEàð 	ÝÐ.Ñ/Ô/Ð/ØˆIàˆr/   c                óB   — | j         D ]}|                     ¦   «          Œd S rœ   )r/  r9  rX  s     r-   Úflush_logfileszTestHarness.flush_logfiles_  s,   € Ø”ð 	ð 	ˆAØ�GŠG‰IŒIˆIˆIð	ð 	r/   c                ó6  — | j         sd S | j                             t          | j         dz   ¦  «        ¦  «         | j                             t	          | j         dz   ¦  «        ¦  «         | j                             t          | j         dz   d¬¦  «        ¦  «         d S )Nz
.junit.xmlz.jsonz.txtÚsurrogateescaper~   )r2  r/  re   rè  rß  rÈ  rÅ   s    r-   Úopen_logfileszTestHarness.open_logfilesc  s’   € ØÔ ð 	ØˆFàŒ×Ò�L¨Ô):¸\Ñ)IÑJÔJÑKÔKÐKØŒ×ÒÕ.¨tÔ/@À7Ñ/JÑKÔKÑLÔLÐLØŒ×ÒÕ.¨tÔ/@À6Ñ/IÐRcÐdÑdÔdÑeÔeÐeÐeÐer/   c                ó|   — g }| j         r!| j        dg}| j        dk    r|g d¢z  }|dgz  }| j        r
|| j        z  }|S )Nrl   r   )ú-exrÒ  r¤  Úquitz--args)r^   r_   rZ   ra   )r±  Úwraps     r-   r  zTestHarness.get_wrapperk  sc   € àˆØŒ;ð 	ØÔ$ iÐ0ˆDØŒ~ Ò!Ð!ØÐ5Ð5Ð5Ñ5�à�X�JÑˆDØŒ?ð 	$Ø�G”OÑ#ˆDØˆr/   c                ó  — t          | j        ¦  «        dk    rm|j        rft                               |j        d         ¦  «        d         }d                     d„ |j        D ¦   «         ¦  «        }|r|dz  }||z   dz   |j        z   S |j        S )Nr   r   ú+c              3  óV   K  — | ]$}t                                |¦  «        d          V — Œ%dS rø  )r  r‹  )r¥   r<   s     r-   rû  z/TestHarness.get_pretty_suite.<locals>.<genexpr>{  s5   è è € ÐRÐRÀ!�×7Ò7¸Ñ:Ô:¸1Ô=ÐRÐRÐRÐRÐRÐRr/   r&  z / )rŒ  rò  r  r  r‹  r©   r—   )rÆ   r@  Úrvr<   s       r-   rf  zTestHarness.get_pretty_suitex  sŒ   € ÝˆtŒ{ÑÔ˜aÒÐ D¤JÐÝ×/Ò/°´
¸1´Ñ>Ô>¸qÔAˆBØ—’ÐRÐRÀtÄzÐRÑRÔRÑRÔRˆAØð Ø�c‘	�Ø˜‘6˜E‘> D¤IÑ-Ð-à”9Ðr/   r‡  úT.List[SingleTestRunner]c                ó   — 	 |                       ¦   «          t          j        ¦   «         }|                     |                      |¦  «        ¦  «         |                      ¦   «          d S # |                      ¦   «          w xY wrœ   )r¢  rf  r˜  Úrun_until_completeÚ
_run_testsrU  )rÆ   r‡  rž  s      r-   r†  zTestHarness.run_tests‚  sw   € ð	"Ø×ÒÑ Ô Ð åÔ)Ñ+Ô+ˆDØ×#Ò# D§O¢O°GÑ$<Ô$<Ñ=Ô=Ð=à×ÒÑ!Ô!Ð!Ð!Ð!øˆD×ÒÑ!Ô!Ð!Ð!øøøs   ‚AA' Á'A=r<   r×   r¶   c                óJ   — | j         D ]}|                     | |||¦  «         Œd S rœ   )r/  rF  )rÆ   r@  r<   r×   rO  s        r-   rF  zTestHarness.log_subtest‹  s8   € Ø”ð 	.ð 	.ˆAØ�MŠM˜$  a¨Ñ-Ô-Ð-Ð-ð	.ð 	.r/   c                óF   — | j         D ]}|                     | |¦  «         Œd S rœ   )r/  rD  )rÆ   r@  rO  s      r-   r  zTestHarness.log_start_test�  s4   € Ø”ð 	%ð 	%ˆAØ�LŠL˜˜tÑ$Ô$Ð$Ð$ð	%ð 	%r/   c              ƒ  óº  ‡ ‡	‡
‡‡‡‡‡K  — t          j        ‰ j        j        ¦  «        Št	          ¦   «         Ši ŠdŠt	          t
          ¬¦  «        Šdˆ	ˆˆ ˆfd„}dˆˆfd
„}dˆˆˆ fd„Š
dˆ
ˆˆfd„Š	dˆ	ˆˆ fd„}dˆ	ˆ
ˆˆˆˆ fd„}‰ j        D ]}|                     ‰ ¦  «         Œt          j	        dk    r½t          j        d¦  «        t          j        ¦   «         k    r2t          j        ¦   «                              t          j        |¦  «         n1t          j        ¦   «                              t          j        |¦  «         t          j        ¦   «                              t          j        |¦  «         	 |D ]¤}|j        st'          ‰¦  «        ƒ d {V —† t          j         ||¦  «        ¦  «        }‰                     |¦  «         |j        ‰|<   |                     |¦  «         |j        st1          |¦  «        ƒ d {V —† ‰ j        j        dk    r	‰ j        r nŒ¥t'          ‰¦  «        ƒ d {V —† t          j	        dk    r`t          j        ¦   «                              t          j        ¦  «         t          j        ¦   «                              t          j        ¦  «         ‰ j        D ]}|                     ‰ ¦  «        ƒ d {V —† Œd S # t          j	        dk    r`t          j        ¦   «                              t          j        ¦  «         t          j        ¦   «                              t          j        ¦  «         ‰ j        D ]}|                     ‰ ¦  «        ƒ d {V —† Œw xY w)NF)rÃ   r@  rÞ  r%   rU   c              “  ó˜  •K  — ‰4 ƒd {V —† ‰s‰j         j        dk    r‰j        r	 d d d ¦  «        ƒd {V —† d S |                      ‰¦  «        ƒ d {V —†}‰                     |¦  «         ‰j         j        }|r.‰j        |k    r#|j                             ¦   «         r
 ‰¦   «          d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S r3  )r±  rZ   r'  rÒ  ri  Úmaxfailr×   rÉ   )r@  r×   r³  Úcancel_all_testsÚinterruptedrÆ   Ú	semaphores      €€€€r-   Úrun_testz(TestHarness._run_tests.<locals>.run_testš  s§  øè è € Ø ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'Øð  4¤<Ô#6¸Ò#:Ð#:¸t¼Ð#:Øð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð !ŸHšH T™NœNÐ*Ð*Ð*Ð*Ð*Ð*�Ø×(Ò(¨Ñ-Ô-Ð-Øœ,Ô.�Øð '˜tœ°'Ò9Ð9¸c¼g¿nºnÑ>NÔ>NÐ9Ø$Ð$Ñ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð 'ð 's   ŒB9ºA,B9Â9
CÃCr  r¨  c                ó¬   •— |                       ¦   «         s|                      ¦   «          ‰                     | ¦  «         	 ‰| = d S # t          $ r Y d S w xY wrœ   )r±  rC   r¾  ÚKeyError)r  rª  ra  s    €€r-   Ú	test_donez)TestHarness._run_tests.<locals>.test_done¤  sg   ø€ Ø—;’;‘=”=ð Ø—’‘
”
�
Ø�NŠN˜1ÑÔÐðØ! !Ð$Ð$Ð$øÝð ð ð Ø��ðøøøs   Á A Á
AÁAÚwarnr&   c                ó  •— ‰                      ¦   «         }‰                     |¦  «         | rA‰                     ¦   «          t          j        d                     ‰|         ¦  «        ¦  «         ‰|= |                     ¦   «          d S )Nz CTRL-C detected, interrupting {})Úpopleftre   rŸ  r   Úwarningr¤   r×  )r»  r§  rª  ra  rÆ   s     €€€r-   Úcancel_one_testz/TestHarness._run_tests.<locals>.cancel_one_test­  s}   ø€ Ø—_’_Ñ&Ô&ˆFØ�NŠN˜6Ñ"Ô"Ð"Øð _Ø×#Ò#Ñ%Ô%Ð%Ý”Ð?×FÒFÀ}ÐU[ÔG\Ñ]Ô]Ñ^Ô^Ð^Ø˜fÐ%Ø�MŠM‰OŒOˆOˆOˆOr/   c                 ó.   •— dŠ‰r ‰ d¦  «         ‰°d S d S r�  r3   )r¿  rµ  ra  s   €€€r-   r´  z0TestHarness._run_tests.<locals>.cancel_all_tests¶  s>   ø€ àˆKØð 'Ø� Ñ&Ô&Ð&ð  ð 'ð 'ð 'ð 'ð 'r/   c                 ót   •— ‰rd S ‰                      ¦   «          t          j        d¦  «          ‰ ¦   «          d S )NzReceived SIGTERM, exiting)rŸ  r   r¾  )r´  rµ  rÆ   s   €€€r-   Úsigterm_handlerz/TestHarness._run_tests.<locals>.sigterm_handler¼  sH   ø€ Øð Ø�Ø×ÒÑ!Ô!Ð!ÝŒLÐ4Ñ5Ô5Ð5ØÐÑÔÐÐÐr/   c                 ó´  •— ‰rd S ‰                      t          j        ¦   «                              ¦   «         ¦  «         t	          ‰¦  «        t
          k    rI‰d         ‰d         z
  dk     r4‰                     ¦   «          t          j        d¦  «          ‰ ¦   «          d S ‰r ‰d¦  «         d S ‰                     ¦   «          t          j        d¦  «         dŠd S )Nrw   r   r   zCTRL-C detected, exitingT)	re   rf  r˜  r�  rŒ  Ú	MAX_CTRLCrŸ  r   r¾  )r´  r¿  Úctrlc_timesrµ  ra  rÆ   s   €€€€€€r-   Úsigint_handlerz.TestHarness._run_tests.<locals>.sigint_handlerÃ  sè   ø€ ð ð Ø�Ø×Ò�wÔ5Ñ7Ô7×<Ò<Ñ>Ô>Ñ?Ô?Ð?Ý�;ÑÔ¥9Ò,Ð,°¸R´À;ÈqÄ>Ñ1QÐTUÒ1UÐ1UØ×#Ò#Ñ%Ô%Ð%Ý”Ð7Ñ8Ô8Ð8Ø Ð Ñ"Ô"Ð"Ð"Ð"Øð #Ø� Ñ%Ô%Ð%Ð%Ð%à×#Ò#Ñ%Ô%Ð%Ý”Ð7Ñ8Ô8Ð8Ø"���r/   Úwin32r   r   )r@  rÞ  r%   rU   )r  r¨  r%   rU   )r»  r&   r%   rU   rM  )rf  Ú	Semaphorer±  rð  r   rÄ  r/  r?  r2   r)   rI   ÚgetpgidÚgetpidr˜  Úadd_signal_handlerr•   r  rÕ  r)  r·  r¥  re   r	  Úadd_done_callbackrJ  rZ   r'  Úremove_signal_handlerrJ  )rÆ   r‡  r·  rº  rÂ  rÆ  rO  r~  r§  r´  r¿  rÅ  rª  rµ  ra  r¶  s   `        @@@@@@@r-   r®  zTestHarness._run_tests“  s   øøøøøøøøè è € ÝÔ% d¤lÔ&@ÑAÔAˆ	Ý‘'”'ˆØˆØˆÝ¥9Ð-Ñ-Ô-ˆð	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð	ð 	ð 	ð 	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð$ ”ð 	ð 	ˆAØ�GŠG�D‰MŒMˆMˆMåŒ<˜7Ò"Ð"ÝŒz˜!‰}Œ}¥¤	¡¤Ò+Ð+ÝÔ&Ñ(Ô(×;Ò;½F¼MÈ>ÑZÔZÐZÐZåÔ&Ñ(Ô(×;Ò;½F¼MÈ?Ñ[Ô[Ð[ÝÔ"Ñ$Ô$×7Ò7½¼ÈÑXÔXÐXð	%Ø!ð 
ð 
�ØÔ)ð 0Ý& wÑ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ý Ô.¨x¨x¸Ñ/?Ô/?Ñ@Ô@�Ø—’˜vÑ&Ô&Ð&Ø(.Ô(;�˜fÑ%Ø×(Ò(¨Ñ3Ô3Ð3ØÔ)ð +Ý" 6Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ø”<Ô&¨Ò*Ð*¨t¬Ð*Ø�Eøå˜wÑ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'åŒ|˜wÒ&Ð&ÝÔ&Ñ(Ô(×>Ò>½v¼}ÑMÔMÐMÝÔ&Ñ(Ô(×>Ò>½v¼~ÑNÔNÐNØ”\ð %ð %�Ø—h’h˜t‘n”nÐ$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ð%ð %øõ Œ|˜wÒ&Ð&ÝÔ&Ñ(Ô(×>Ò>½v¼}ÑMÔMÐMÝÔ&Ñ(Ô(×>Ò>½v¼~ÑNÔNÐNØ”\ð %ð %�Ø—h’h˜t‘n”nÐ$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ð%øøøs   Å0B<K ËBM)r±  rß  )r%   r8  rM  )rJ  r=   r%   rš  )r%   r<  )rQ  r  rR  r  rS  r  r%   rU   )r@  rY  r%   rZ  )r±  rß  r@  r   r%   r(  )r@  r   r%   rÞ  )rC   r  r%   rU   rÞ   )r  r>   r%   r=   )r   ry   NNN)rC   r  rÕ   r&   rd  r>   r»  r=   rŠ  rè   r¼  rè   r‹  rè   r%   r=   rà   )r  r=   r%   r‰  )r@  r   rò  r0  r%   r&   )r@  r   r%   r&   )rí  rš  r%   r–  )r%   rš  )r±  rß  r%   r0  )r@  r   r%   r=   )r‡  r«  r%   rU   )r@  r  r<   r=   r×   r¶   r%   rU   )r@  r  r%   rU   )%r­   r®   r¯   rZ  r:  r4  r5  rG  rP  rV  rU  r^  rc  rg  ri  rR  rk  rd  ro  r¤   rÄ  rv  rˆ  rá   r‹  r“  r•  r›  r�  rŸ  r¢  r  rf  r†  rF  r  r®  r3   r/   r-   r  r  ü  sþ  € € € € € ð&ð &ð &ð &ðP#ð #ð #ð #ðð ð ð ð&ð ð ð ð0ð ð ð ðð ð ð ðð ð ð ð#ð #ð #ð #ð
	:ð 	:ð 	:ð 	:ð6ð 6ð 6ð 6ð :ð :ð :ð :ð ð  ð  ð  ð* ð)ð )ð )ñ „Xð)ð ð#ð #ð #ñ „Xð#ðOð Oð Oð Oð &'ØØ'+Ø)-Ø(,ð.ð .ð .ð .ð .ð8	Xð 	Xð 	Xð 	XðPð Pð Pð Pð#*ð #*ð #*ð #*ðJ ðð ð ñ „\ðð ðð ð ñ „\ðð>ð ð ð ð ð ð ð ð,ð ð ð ðð ð ð ðfð fð fð fð ð
ð 
ð 
ñ „\ð
ðð ð ð ð"ð "ð "ð "ð.ð .ð .ð .ð%ð %ð %ð %ð^%ð ^%ð ^%ð ^%ð ^%ð ^%r/   r  Úthc                ó~   — |                       ¦   «         }|D ]$}t          |                      |¦  «        ¦  «         Œ%| S rœ   )r�  rL   rf  )rÎ  rí  rl  s      r-   Ú
list_testsrÐ  ó  sE   € Ø�LŠL‰NŒN€EØð &ð &ˆÝˆb×!Ò! !Ñ$Ô$Ñ%Ô%Ð%Ð%Øˆ9Ðr/   r1  r0  rc   rí  c                ó  ‡‡
— dˆfd„Š
t          | ¦  «        dk    sJ ‚t          ¦   «         }t          ¦   «         }i }t          t          ‰¦  «        d¬¦  «        D ]}ˆ
fd„|d	         D ¦   «         ||d
         <   Œ |D ]A}|j        D ]7}||v rŒ|                     |¦  «         |                     ||         ¦  «         Œ8ŒBt          j        | d‰gz   t          |¦  «        z   ¦  «        j	        }	|	dk    rt          d‰› �¦  «         dS dS )Nrr   r=   r%   c                ó¨   •— t           j                             | ‰¦  «        } t           j        dk    r |                      t           j        d¦  «        } | S )Nr„  )rI   rr   Úrelpathr~  rS  )rr   rc   s    €r-   Úconvert_path_to_targetz,rebuild_deps.<locals>.convert_path_to_targetú  s=   ø€ ÝŒw�Š˜t RÑ(Ô(ˆÝŒ6�SŠ=ˆ=Ø—<’<¥¤¨Ñ,Ô,ˆDØˆr/   r   Útargets)Úkindc                ó&   •— g | ]} ‰|¦  «        ‘ŒS r3   r3   )r¥   r  rÔ  s     €r-   r¨   z rebuild_deps.<locals>.<listcomp>  s4   ø€ ð ')ð ')ð ')àð #Ð" 1Ñ%Ô%ð')ð ')ð ')r/   rT  Úidrb   zCould not rebuild FT)rr   r=   r%   r=   )rŒ  r�  r   r   Údependsrh  rÌ  rÒ  Úsortedrá  rL   )r1  rc   rí  rÙ  rÕ  Úintro_targetsÚtargetrl  ÚdrI  rÔ  s    `        @r-   r‚  r‚  ù  sZ  øø€ ðð ð ð ð ð õ ˆu‰:Œ:˜Š>ˆ>ˆ>ˆ>å‰eŒe€GÝ‰eŒe€GØ€MÝ ¥¨R¡¤°yÐAÑAÔAð )ð )ˆð')ð ')ð ')ð ')à˜JÔ'ð')ñ ')ô ')ˆ�f˜T”lÑ#Ð#ð ð -ð -ˆØ”ð 	-ð 	-ˆAØ�Gˆ|ˆ|ØØ�NŠN˜1ÑÔÐØ�NŠN˜=¨Ô+Ñ,Ô,Ð,Ð,ð		-õ Œ.˜ $¨ Ñ+­f°W©o¬oÑ=Ñ
>Ô
>Ô
I€CØ
ˆa‚x€xÝÐ' 2Ð'Ð'Ñ(Ô(Ð(Øˆuàˆ4r/   r±  rß  c                óš  — | j         rd| _        | j        r| j        rt	          d¦  «         dS d }| j        r!d| _        | j        rt	          d¦  «         dS d}| j        r| j        d         }t          j        dk    r't          j
        ¦   «         }t          j        |¦  «         |�9t          |d¬¦  «        }|                     ¦   «         st	          d	|›�¦  «         dS t          j        | j        ¦  «        }t#          |j        ¦  «         t'          | ¦  «        5 }	 | j        rt+          |¦  «        cd d d ¦  «         S |                     ¦   «         cd d d ¦  «         S # t.          $ rU}t	          d
¦  «         t0          j                             d¦  «        r|‚t	          |¦  «         Y d }~d d d ¦  «         dS d }~ww xY w# 1 swxY w Y   d S )Nr   z3Can not be both quiet and verbose at the same time.Tz9Must not specify both a wrapper and gdb at the same time.r^   r   rÇ  )Úsilentz"Could not find requested program: z!Meson test encountered an error:
ÚMESON_FORCE_BACKTRACE)rì  rð  r¨  r¿  rL   r^   ra   r2   r)   rf  ÚProactorEventLoopÚset_event_loopr   rþ  r	   rD  rc   r   Ú
need_vsenvr  r`   rÐ  rˆ  r¬   rI   rJ   r£  )r±  Ú	check_binrž  Úexer…   rÎ  r”  s          r-   rÒ  rÒ    s`  € ØÔð "Ø !ˆÔà„ð ˜7œ=ð ÝÐCÑDÔDÐDØˆqà€IØ„{ð ØˆŒØŒ?ð 	ÝÐMÑNÔNÐNØ�1Øˆ	à„ð 'Ø”O AÔ&ˆ	å
„|�wÒÐÝÔ(Ñ*Ô*ˆÝÔ˜tÑ$Ô$Ð$àÐÝ˜i°Ð5Ñ5Ô5ˆØ�yŠy‰{Œ{ð 	ÝÐD°yÐDÐDÑEÔEÐEØ�1åŒ
�7”:ÑÔ€AÝ�”ÑÔÐå	�WÑ	Ô	ð  ð
	ØŒ|ð &Ý! "‘~”~ðð ð ð ñ ô ð ð ð —7’7‘9”9ð	ð ð ð ñ ô ð ð øõ
 ð 	ð 	ð 	ÝÐ6Ñ7Ô7Ð7ÝŒz�~Š~Ð5Ñ6Ô6ð Ø�å�a‘”�Ø�1�1�1ðð ð ñ ô ð ð ð øøøøð
	øøøðð ð ð øøøð ð ð ð ð ð s<   ÄG ÄEÄ>EÅ
F=Å(?F8Æ'G Æ8F=Æ=G Ç GÇGrn   c                ó’   — t          j        d¬¦  «        }t          |¦  «         |                     | ¦  «        }t	          |¦  «        S )Nz
meson test)Úprog)ÚargparseÚArgumentParserru   Ú
parse_argsrÒ  )rn   rS   r±  s      r-   Úrun_with_argsrë  D  sB   € ÝÔ$¨,Ð7Ñ7Ô7€FÝ�&ÑÔÐØ×Ò Ñ%Ô%€GÝˆw‰<Œ<Ðr/   rß   )r<   r=   r%   r>   rÞ   )rS   rT   r%   rU   )r<   r=   r%   rU   )r„   r=   r…   r=   r%   r=   )r<   r=   r‰   r=   rŠ   r>   r%   r=   )r�   r>   r%   r=   )r    r¡   r%   r=   )r}  r~  r%   r=   )r‚  rƒ  r„  r…  r†  r±   r%   r=   )r–  r=   r%   r&   )r™  rš  r%   rš  )r   r¡  r%   r  )r§  r¨  r%   rU   rœ   )rª  r«  rˆ  r¬  r%   rU   )rÎ  r  r%   r&   )r1  r0  rc   r=   rí  rš  r%   r&   )r±  rß  r%   r>   )rn   r0  r%   r>   )sÚ
__future__r   Úpathlibr   Úcollectionsr   Ú
contextlibr   ra  r   rè  rf  rÌ  Úenumrä  rM   rI   rM  r)   rí  r2  r•   rÌ  Úshlexr2   rs  r�  Útypingr0  r@   Úxml.etree.ElementTreeÚetreer  rï  ry   r	   r
   r   Úcoredatar   r   r   rœ  Úmesonlibr   r   r   r   r   r   r   Úmintror   r   Úprogramsr   Úbackend.backendsr   r   ÚTYPE_CHECKINGÚUnionÚTYPE_TAPResultrG  rX  rÄ  r.   r4   rB   rF   rR   ru   rƒ   rˆ   r�   rš   rŸ   rë   Úquoterª   r¬   ÚuniqueÚEnumr±   r¶   rã   r7  rR  r]  rÈ  rß  rè  r  rV  r  ÚEXITCODEr\  r  rb  ÚTAPrq  ÚRUSTr‚   r•  r˜  rŸ  r¦  rJ  r·  r¹  rÞ  r  rÐ  r‚  rÒ  rë  r3   r/   r-   ú<module>r     s)  ðð  #Ð "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø 	€	€	€	Ø €€€Ø €€€Ø €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ø €€€Ø 
€
€
€
Ø €€€Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ 1Ð 1Ð 1Ð 1Ð 1Ð 1ðOð Oð Oð Oð Oð Oð Oð Oð Oð Oð Oð Oð Oð Oð Oð Oð Oð Oà /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø %Ð %Ð %Ð %Ð %Ð %Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =à„?ð 2Ø”Wð 1ô 2€Nð Ð ð Ð ð €	ð!ð !ð !ð !ð$ð $ð $ð $ð  ¨°!¸!À!ÐDÐDÐ ðð ð ð ðð ð ð ð"2Uð 2Uð 2Uð 2Uðjð ð ð ðð ð ð ð-ð -ð -ð -ðCð Cð Cð Cð4 $/ ;€Ð .Ð .Ð .Ñ .Ø€z�|„|ð ØŒ{€HðFð Fð Fð Fð	ð 	ð 	ð 	ð 	�Nñ 	ô 	ð 	ð „ð	ð 	ð 	ð 	ð 	�$”)ñ 	ô 	ñ „ð	ð „ð.*ð .*ð .*ð .*ð .*�”ñ .*ô .*ñ „ð.*ðbmsð msð msð msð msñ msô msð msð^ð ð ð ð ñ ô ð ð.ð ð ð ð �Zñ ô ð ðX!ð X!ð X!ð X!ð X!�Jñ X!ô X!ð X!ðv 6ð  6ð  6ð  6ð  6˜ñ  6ô  6ð  6ðF4ð 4ð 4ð 4ð 4˜ñ 4ô 4ð 4ð}Bð }Bð }Bð }Bð }B�:ñ }Bô }Bð }Bð@wð wð wð wð wñ wô wð wðtð ð ð ð �gñ ô ð ð 4C€Ô ˜,Ô/Ñ 0ðð ð ð ð �?ñ ô ð ð  1=€Ô ˜,Ô,Ñ -ð2ð 2ð 2ð 2ð 2�ñ 2ô 2ð 2ðh /9€Ô ˜,Ô*Ñ +ð%ð %ð %ð %ð %�'ñ %ô %ð %ðN 0;€Ô ˜,Ô+Ñ ,ð<ð <ð <ð <ð"ð "ð "ð "ð6Hð Hð Hð Hð
ð 
ð 
ð 
ðð ð ð ðð ð ð ð CGðð ð ð ð ð@m,ð m,ð m,ð m,ð m,ñ m,ô m,ð m,ð^oð oð oð oð oñ oô oð oðdu%ð u%ð u%ð u%ð u%ñ u%ô u%ð u%ðnð ð ð ðð ð ð ð<+ð +ð +ð +ðZð ð ð ð ð r/   