+
    UBi:t                   F  a 0 t $ ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
 ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHu H t! ^RI"H#t# ^R	I"H$t$ ^R
I"H%t% ^RI&H't'H(t( ^RI&H)t* ^RI+H,t,H-t-H.t.H/t/H0t0H1t1H2t2H3t3 ^RI4H5t5 ^RI6H7t7 ^RI8H9t9H:t: ]Pv                  '       d   ]Px                  Rs,          t=^Mt>^ct?^t@. RtOtAR]BR&   ]P                  R8  d   ]AP                  . RuO4       ]A U Uu. uF  w  r]E! V 4       R]E! V4       2NK  	  upp tF]P                  ! RRP                  ]F4      ,           R,           4      tI]P                  ! R4      tJ]P                  ! R4      tKR R ltLR R ltMR^R^R ^R!^R"^R#^/tNR$ R% ltOR& R' ltPR( R) ltQR* R+ ltRR, R- ltSR. R/ ltTR0 R1 ltUR2 tVR3]BR4&   ]L! 4       '       g   ]P                  tVR5 R6 ltX ! R7 R8],4      tY]P                   ! R9 R:]P                  4      4       t\]P                   ! R; R<]P                  4      4       t] ! R= R>4      t^ ! R? R@4      t_ ! RA RB]_4      t` ! RC RD]_4      ta ! RE RF]`4      tb ! RG RH]`4      tc ! RI RJ]_4      td ! RK RL4      te ! RM RN]e4      tf]f]eP                  ]9P                  &    ! RO RP]f4      ti]i]eP                  ]9P                  &    ! RQ RR]e4      tk]k]eP                  ]9P                  &    ! RS RT]e4      tm]m]eP                  ]9P                  &   RU RV ltoRW RX ltpRY RZ ltqR[ R\ ltrR] R^ ltsR_ R` lttRa Rb ltuRvRc Rd lltv ! Re Rf4      tw ! Rg Rh4      tx ! Ri Rj4      tyRk Rl ltzRm Rn lt{Ro Rp lt|Rq Rr lt}R# u upp i )w    )annotations)Path)deque)suppress)deepcopy)fnmatchN)build)
tooldetect)mlog)MesonVersionMismatchExceptionmajor_versions_differversion)MesonException
OrderedSetRealPathActionget_wine_shortpath	join_args
split_argssetup_vsenvdetermine_worker_count)	OptionKey)ExternalProgram)TestProtocolTestSerialisationzT.List[T.Tuple[int, int]]UNENCODABLE_XML_UNICHRSi   -z([ z])z!^test (?!result)(.*) \.\.\. (.*)$z^(.*?) - (.*? |)\(line (\d+)\)c                   V ^8  d   QhRR/#    returnbool )formats   "5/usr/lib/python3.14/site-packages/mesonbuild/mtest.py__annotate__r'   V   s     ! !D !    c                 R    \         P                  ! 4       P                  4       p V R 8H  # )windows)platformsystemlower)platnames    r&   
is_windowsr/   V   s"     &&(Hy  r(   c                   V ^8  d   QhRR/# r    r$   )r%   s   "r&   r'   r'   Z   s     $ $4 $r(   c                 (    \         P                  R 8H  # )cygwin)sysr+   r$   r(   r&   	is_cygwinr4   Z   s    <<8##r(   FHWNaNAc                    V ^8  d   QhRRRR/# )r!   sstrr"   intr$   )r%   s   "r&   r'   r'   ^   s        r(   c                p    ^ pV  F-  p\         P                  ! V4      pV\        V,          ,          pK/  	  V# )r   )unicodedataeast_asian_widthUNIWIDTH_MAPPING)r<   resultcws   &   r&   uniwidthrF   ^   s8    F((+"1%%  Mr(   c                    V ^8  d   QhRRRR/# )r!   argr=   r"   zT.Tuple[int, int]r$   )r%   s   "r&   r'   r'   e   s      C - r(   c                   V P                  R 4      p\        V4      ^8w  d   \        P                  ! R4      h \	        V^,          4      pT^ 8:  d   \        P                  ! R4      h \	        T^ ,          4      pT^ 8:  d   \        P                  ! R4      hY28  d   \        P                  ! R4      hY23#   \
         d    \        P                  ! R4      hi ; i  \
         d    \        P                  ! R4      hi ; i)/z3value does not conform to format 'SLICE/NUM_SLICES'zNUM_SLICES is not an integerz$NUM_SLICES is not a positive integerzSLICE is not an integerzSLICE is not a positive integerzSLICE exceeds NUM_SLICES)splitlenargparseArgumentTypeErrorr>   
ValueError)rH   valuesnrslicessubslices   &   r&   
test_slicerS   e   s    YYs^F
6{a(()^__Ivay> 1}(()OPPDvay> 1}(()JKK(()CDD  I(()GHHI  D(()BCCDs   B7 )C 7"C"C>c                    V ^8  d   QhRRRR/# )r!   parserzargparse.ArgumentParserr"   Noner$   )r%   s   "r&   r'   r'   ~   s     5U 5U1 5Ud 5Ur(   c           	     p   V P                  R ^ \        RR7       V P                  R^R\        RR7       V P                  RRR	R
R7       V P                  RRRR	RR7       V P                  RRRRR7       V P                  RRRRR	RR7       V P                  RRRR	RR7       V P                  RRR\        RR7       V P                  RR \        R!R"7       V P                  R#. R$R%R&R'R(7       V P                  R). R*R%R&R+R(7       V P                  R,R-R.R/R0R7       V P                  R1RR	R2R7       V P                  R3RR	R4R7       V P                  R5R6R7R87       V P                  R9R:\	        R;.4      \        R<R7       V P                  R=R>RR	R?R7       V P                  R@RARR	RBR7       V P                  RCRD\
        RRERF7       V P                  RGRRHRIR7       V P                  RJ. \        RKR7       V P                  RL^dRM\        RNR7       V P                  ROR\        RPRQRR7       V P                  RSRTRURV7       R# )Wz	--maxfailzbNumber of failing tests before aborting the test run. (default: 0, to disable aborting on failure))defaulttypehelpz--repeatrepeatz!Number of times to run the tests.)rX   destrY   rZ   z--no-rebuildF
store_truez$Do not rebuild before running tests.)rX   actionrZ   z--gdbgdbzRun test under gdb.)rX   r\   r^   rZ   z
--gdb-pathgdb_pathz&Path to the gdb binary (default: gdb).)rX   r\   rZ   z-iz--interactiveinteractivez(Run tests with interactive input/output.z--listlistzList available tests.z	--wrapperNwrapperz)wrapper to run tests with (e.g. Valgrind)-Cwdz#directory to cd into before running)r\   r^   rZ   z--suiteinclude_suitesappendSUITEz,Only run tests belonging to the given suite.)rX   r\   r^   metavarrZ   z
--no-suiteexclude_suitesz.Do not run tests belonging to the given suite.z--no-stdsplitTrK   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.)rX   rZ   z-jz--num-processesMESON_TESTTHREADSz#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-multiplierzDefine a multiplier for test timeout, for example  when running tests in particular conditions they might take more time to execute. (<= 0 to disable timeout))rY   rX   rZ   z--setupsetupzWhich test setup to use.z--test-argsz7Arguments to pass to the specified test(s) or all testsz--max-lines	max_lineszBMaximum number of lines to show from a long test log. Since 1.5.0.z--slicezSLICE/NUM_SLICESzHSplit tests into NUM_SLICES slices and execute slice SLICE. Since 1.8.0.)rX   rY   ri   rZ   args*zOptional 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".)nargsrZ   )add_argumentr>   r   r   r   floatrS   )rU   s   &r&   add_argumentsrv   ~   s   
QSQ  R 
AH3@  B
lC  E
U<2  4
e*E  G
ou=+2\  ^
%f\4  6
T	
H  J
4B  D
	24DX_fK  M
b7GPXbiM  O
GMK  M
+U<D  F
u\?  A
Y6  8
/9OQdPe9fmpB  D
k5@  B
i|C  E
45$K  L 	4g7  9
r
V  X
s3a  c
	4jJ\g  i
cT  Ur(   c                    V ^8  d   QhRRRR/# )r!   r<   r=   r"   rV   r$   )r%   s   "r&   r'   r'      s      # $ r(   c                    V R,          R8X  d   RMRp \        WR7       R#   \         d3    T P                  RRR7      P                  R4      p \        YR7        R# i ; i)	   
r   endasciibackslashreplaceerrorsN)printUnicodeEncodeErrorencodedecode)r<   r|   s   & r&   
print_safer      sX    ""4Ca HHW%7H8??Has   " 9AAc               $    V ^8  d   QhRRRRRR/# )r!   ar=   br"   r$   )r%   s   "r&   r'   r'      s!      # # # r(   c                J    V '       g   V# V'       g   V # V R ,           V,           # )rz   r$   )r   r   s   &&r&   
join_linesr      s     t8a<r(   c               (    V ^8  d   QhRRRRRRRR/# )r!   r<   r=   dashcolsr>   r"   r$   )r%   s   "r&   r'   r'      s(     - -c - -C -C -r(   c                    V '       g	   W,          # R V ,           R ,           p \        V 4      pW#,
          ^,          pW,          V ,           p WW$,
          V,
          ,          ,           #  )rF   )r<   r   r   widthfirsts   &&&  r&   dashesr      sP    {a#AQKE\aEqAt|e+,,,r(   c                    V ^8  d   QhRRRR/# )r!   retcoder>   r"   r=   r$   )r%   s   "r&   r'   r'      s     8 8# 8# 8r(   c                j   V ^ 8  d-   V ) p \         P                  ! V4      P                  pRV RV 2# V ^8:  d   RV  2# V ^,
          pV^ 8  d.    \         P                  ! V4      P                  pRV  RV RV R2# RV  R\	        V 4       R2#   \         d    Rp Lri ; i  \         d    Rp L@i ; i)	r   
SIGinvalidzkilled by signal r   zexit status z(exit status z or signal )z or )signalSignalsnamerO   hex)r   signumsignames   &  r&   returncode_to_statusr      s     {	#nnV,11G #6(!G955#~gY''s]F{	#nnV,11G wi{6(!G9AFF7)4G~Q77  	#"G	#  	#"G	#s#    B  B" BB"B21B2c                    V # Nr$   )xs   &r&   <lambda>r      s    Qr(   zT.Callable[[str], str]sh_quotec                    V ^8  d   QhRRRR/# )r!   envzT.Iterable[T.Tuple[str, str]]r"   r=   r$   )r%   s   "r&   r'   r'      s     F F7 FC Fr(   c                    R P                  V  UUu. uF   w  rRP                  V\        V4      4      NK"  	  upp4      # u uppi )r   z{}={} )joinr%   r   )r   kvs   &  r&   env_tuple_to_strr      s4    77DHOOAx{3DEEDs   &?
c                      ] tR t^tRtR# )TestExceptionr$   N)__name__
__module____qualname____firstlineno____static_attributes__r$   r(   r&   r   r      s    r(   r   c                  "    ] tR t^t^ t^t^tRtR# )ConsoleUserr$   N)r   r   r   r   LOGGERINTERACTIVESTDOUTr   r$   r(   r&   r   r      s     F K Fr(   r   c                      ] tR tRtRtRtRtRtRtRt	Rt
R	tR
tRtRt]R R l4       tR R ltR R ltR R ltR R ltR R ltR R ltR R ltRtR# )
TestResulti  PENDINGRUNNINGOKTIMEOUT	INTERRUPTSKIPFAILEXPECTEDFAILUNEXPECTEDPASSERRORIGNOREDc                   V ^8  d   QhRR/# r!   r"   r>   r$   )r%   s   "r&   r'   TestResult.__annotate__  s      C r(   c                 	    ^# )   r$   r$   r(   r&   maxlenTestResult.maxlen  s    r(   c                   V ^8  d   QhRR/# r    r$   )r%   s   "r&   r'   r     s     @ @t @r(   c                	H    V \         P                  \         P                  09   # r   )r   r   r   selfs   &r&   is_okTestResult.is_ok  s    
z'>'>???r(   c                   V ^8  d   QhRR/# r    r$   )r%   s   "r&   r'   r     s     E E Er(   c                	    V \         P                  \         P                  \         P                  \         P                  \         P
                  09   # r   )r   r   r   r   r   r   r   s   &r&   is_badTestResult.is_bad  s>    
););Z=Q=Q"11:3C3CE E 	Er(   c                   V ^8  d   QhRR/# r    r$   )r%   s   "r&   r'   r     s     D DT Dr(   c                	H    V \         P                  \         P                  09  # r   )r   r   r   r   s   &r&   is_finishedTestResult.is_finished  s    J..
0B0BCCCr(   c                   V ^8  d   QhRR/# r    r$   )r%   s   "r&   r'   r      s     B BD Br(   c                	H    V \         P                  \         P                  39   # r   )r   r   r   r   s   &r&   
was_killedTestResult.was_killed   s    
**J,@,@AAAr(   c                    V ^8  d   QhRRRR/# )r!   r<   r=   r"   zmlog.AnsiDecoratorr$   )r%   s   "r&   r'   r   #  s     	 	# 	"4 	r(   c                	X   V P                  4       '       d   \        P                  pM|V \        P                  \        P
                  \        P                  39   d   \        P                  pM7V P                  4       '       d   \        P                  pM\        P                  pV! V4      # r   )r   r   redr   r   r   r   yellowr   greenblue)r   r<   	decorators   && r&   colorizeTestResult.colorize#  si    ;;==Ijooz'9'9:;R;RSSI

I		I|r(   c                    V ^8  d   QhRRRR/# )r!   r   r#   r"   r=   r$   )r%   s   "r&   r'   r   .  s     < < <# <r(   c                	    R P                  V P                  V P                  4       R7      pV P                  V4      P	                  V4      # )z{res:{reslen}})resreslen)r%   valuer   r   get_text)r   r   
result_strs   && r&   r   TestResult.get_text.  s;    %,,DKKM,R
}}Z(11(;;r(   c                   V ^8  d   QhRR/# r!   r"   r=   r$   )r%   s   "r&   r'   r   2  s     * *C *r(   c                	6    \        V P                  R 4      4      # )z>>> )r=   r   r   s   &r&   get_command_markerTestResult.get_command_marker2  s    4==())r(   r$   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   staticmethodr   r   r   r   r   r   r   r   r   r$   r(   r&   r   r     sy     GG	BGIDD!L%NEG @EDB	<* *r(   r   c                     ] tR tRt$  ! R R]P
                  4      t ! R R]P
                  4      t ! R R]P
                  4      t ! R R	]P
                  4      t	 ! R
 R]P
                  4      t
 ! R R]P
                  4      t^t^t^t]P                   ! R4      t]P                   ! R4      t]P                   ! R]P&                  ,           4      t]P                   ! R]P&                  ,           4      t]P                   ! R4      t]P                   ! R4      t]P                   ! R4      tRtRtRtR]R&   ^ t^ t^ t^ t Rt!R]R&   Rt"]t#^t$R R lt%R R lt&R  R! lt'R" R# lt(R$t)R# )%	TAPParseri6  c                  @    ] tR tRt$ R]R&   R]R&   R]R&   R]R&   R	tR
# )TAPParser.Plani7  r>   	num_testsr#   lateskippedT.Optional[str]explanationr$   Nr   r   r   r   __annotations__r   r$   r(   r&   PlanTAPParser.Plan7  s    
$$r(   r  c                  "    ] tR tRt$ R]R&   RtR# )TAPParser.Bailouti=  r=   messager$   Nr   r$   r(   r&   BailoutTAPParser.Bailout=      r(   r  c                  L    ] tR tRt$ R]R&   R]R&   R]R&   R]R	&   R
 R ltRtR# )TAPParser.Testi@  r>   numberr=   r   r   rC   r   r   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   TAPParser.Test.__annotate__F  s     	8 	8S 	8r(   c                	T    V P                    R V P                   2P                  4       # r   )r  r   stripr   s   &r&   __str__TAPParser.Test.__str__F  s$    kk]!DII;/5577r(   r$   N)r   r   r   r   r   r  r   r$   r(   r&   TestTAPParser.Test@  s"    	$$	8 	8r(   r  c                  "    ] tR tRt$ R]R&   RtR# )TAPParser.ErroriI  r=   r  r$   Nr   r$   r(   r&   ErrorTAPParser.ErrorI  r  r(   r  c                  ,    ] tR tRt$ R]R&   R]R&   RtR# )TAPParser.UnknownLineiL  r=   r  r>   linenor$   Nr   r$   r(   r&   UnknownLineTAPParser.UnknownLineL  s    r(   r  c                  "    ] tR tRt$ R]R&   RtR# )TAPParser.VersioniP  r>   r   r$   Nr   r$   r(   r&   VersionTAPParser.VersionP  r  r(   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]planT.Optional[int]yaml_linenor   c               0    V ^8  d   QhRRRRRRRRR	RR
R/# )r!   okr#   numr>   r   r=   	directiver   r   r"   zET.Generator[T.Union['TAPParser.Test', 'TAPParser.Error'], None, None]r$   )r%   s   "r&   r'   TAPParser.__annotate__k  s@     Z ZT Z Z3 Z? Zap ZQZr(   c              #  	@  "   VP                  4       pV'       d   VP                  4       MR pVe   VP                  4       pVP                  R4      '       d/   V'       d&   V P                  W#\        P
                  V4      x  R # M[VR8X  d>   T P                  Y#V'       d   \        P                  M\        P                  V4      x  R # V P                  RV R24      x  T P                  Y#V'       d   \        P                  M\        P                  V4      x  R # 5i)Nr   TODOzinvalid directive "")r  upper
startswithr  r   r   r   r   r  r   r   )r   r%  r&  r   r'  r   s   &&&&&&r&   
parse_testTAPParser.parse_testk  s     zz|-8k'')d !)I##F++))CzLL  f$ii:+D+DPZPgPgituujj#6yk!CDDiiB:==JOO[YYs   ADD B>Dc                    V ^8  d   QhRRRR/# )r!   linesT.AsyncIterator[str]r"   zT.AsyncIterator[TYPE_TAPResult]r$   )r%   s   "r&   r'   r(  }  s      '; @_ r(   c               	   "   V  R j  xL
  pV P                  V4       F  pV5x  K
  	  K)   L$D%T P                  R 4       F  pT5x  K
  	  R # 5ir   
parse_line)r   r1  lineevents   &&  r&   parse_asyncTAPParser.parse_async}  sM      	 	$. /	% __T*EK +s   A0.0!A0 Ac                    V ^8  d   QhRRRR/# )r!   iozT.Iterator[str]r"   T.Iterator[TYPE_TAPResult]r$   )r%   s   "r&   r'   r(    s     ) ) ),F )r(   c              #  	   "   V F  pV P                  V4       R j  xL
  K  	  V P                  R 4       R j  xL
  R #  L# L5ir   r4  )r   r;  r6  s   && r&   parseTAPParser.parse  s;     Dt,,, ??4((( -(s   AA AAAAc                    V ^8  d   QhRRRR/# )r!   r6  r   r"   r<  r$   )r%   s   "r&   r'   r(    s#     g@ g@ g@3M g@r(   c           	   #  	  "   VEe   V ;P                   ^,          un         VP                  4       pV P                  V P                  8X  d   V P                  ^8  d^   V P
                  P                  V4      pV'       d;   V P                  V n        V P                   V n        VP                  ^4      V n
        R # V P                  V n        MV P                  V P                  8X  d   V P                  P                  V4      '       d   V P                  V n        R # VP                  V P                  4      '       d   R # V P                  RV P                   R24      x  V P                  V n        V P                  V P                  8X  g   Q hV'       d   VP                  R4      '       d   R # V P                  P                  V4      pV'       Ed   V P                   '       dI   V P                   P"                  '       d-   V P$                  '       g   V P                  R4      x  RV n        V ;P&                  ^,          un        VP                  ^4      f   V P(                  ^,           M\+        VP                  ^4      4      V n        \-        V P.                  V P(                  4      V n        V P                   '       d9   V P(                  V P                   P&                  8  d   V P                  R4      x  V P1                  VP                  ^4      R8H  V P(                  VP                  ^4      VP                  ^4      VP                  ^4      4       R j  xL
  V P                  V n        R # V P2                  P                  V4      pV'       Ed   V P                   '       d   V P                  R4      x  R # \+        VP                  ^4      4      pV^ 8H  pVP                  ^4      '       de   VP                  ^4      P5                  4       P                  R	4      '       d   V^ 8  d   V P                  R
4      x  RpMV P                  R4      x  V P7                  W0P&                  ^ 8  WBP                  ^4      R7      V n        V P                   x  R # V P8                  P                  V4      pV'       d,   V P;                  VP                  ^4      4      x  RV n        R # V P>                  P                  V4      pV'       d   V P                   ^8w  d   V P                  R4      x  R # \+        VP                  ^4      4      V n        V P                  ^8  d   V P                  R4      x  R # V PA                  V P                  R7      x  R # V PC                  WP                   4      x  R # V P                  V P                  8X  d"   V P                  RV P                   R24      x  V P<                  '       d   R # V P                   '       d   V P&                  V P                   P&                  8w  d   V P&                  V P                   P&                  8  d;   V P                  RV P                   P&                   RV P&                   R24      x  R # V P                  RV P                   P&                   RV P&                   R24      x  R # V P.                  V P&                  8w  dz   V P.                  V P&                  8  d0   V P                  RV P&                   RV P.                   24      x  R # V P                  RV P&                   RV P.                   24      x  R # R #  EL5i)Nz+YAML block not terminated (started on line r   #zunexpected test after late planTz2test number exceeds maximum specified in test planr%  zmore than one plan foundr   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 z!Duplicate test numbers (expected z, got test numbered zMissing test numbers (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   	last_testr>   maxhighest_testr.  _RE_PLANr,  r  _RE_BAILOUTr  
bailed_out_RE_VERSIONr  r  )r   r6  mr   r   s   &&   r&   r5  TAPParser.parse_line  s    KK1K;;=D zzT---<<2%++11$7A%)ZZ
+/;;(+,771:(!ZZ
tzz)$$**400!%DJ??4#3#344jj#NtO_O_N``a!bcc!ZZ
::+++4??3//##D)Aq9998L8L8L**%FGG+/D(!#78wwqz7I!!3sSTSZSZ[\S]$'(9(94>>$J!999$))2E2E!E**%YZZ??1771:+=t~~+,771:qwwqz1771:O O O!--
##D)Aq999**%?@@  !$AGGAJI'1nGwwqzz771:++-88@@(1}&*jj1R&S S&*G"&**-I"JJ $		I^^VWEW29wwqz !* !SDI))O  &&t,All1771:.."&  &&t,A;;!#**%OPP"1771:<<"$**%KLL  ,,t||,<< ""455 zzTZZ'jj#NtO_O_N``a!bccyyyT^^tyy/B/BB>>DII$7$77**'CDIIDWDWCXX^_c_m_m^nno%pqq  **'DTYYEXEXDYY_`d`n`n_oop%qrr  DNN2$$t~~5**'HHXXlmqm~m~l  &A  B  B**'Ft~~FVVjkok|k|j}%~	 3yOsz   A=]/ B]/3]/<A]/]/,%]/]/$]/ ]/E]/],:]/]/(A>]/'B]/>A]/C7]/]/E]/)	rT  rN  rQ  rO  r!  rD  r   rJ  r#  )*r   r   r   r   T
NamedTupler  r  r  r  r  r  rK  rE  rH  recompilerS  _RE_DIRECTIVEpatternrR  rM  rU  rF  rL  rN  rT  r!  r   r  r   rO  rQ  r#  rJ  rD  r   r.  r8  r>  r5  r   r$   r(   r&   r   r   6  sP   %q|| %!,, 8q|| 8 all !,,  EKE**01KJJ^_Mzz*]-B-BBCHzzD}G\G\\]H**45KZZ.N::o.LOJ!D
!FIIL#'K'KEGZ$)
g@ g@r(   r   c                  j    ] tR tRtR R ltR R ltR R ltR R	 ltR
 R ltR R lt	R R lt
RtR# )
TestLoggeri  c                   V ^8  d   QhRR/# r!   r"   rV   r$   )r%   s   "r&   r'   TestLogger.__annotate__        t r(   c                	    R # r   r$   r   s   &r&   flushTestLogger.flush      r(   c                    V ^8  d   QhRRRR/# r!   harness'TestHarness'r"   rV   r$   )r%   s   "r&   r'   rb    s      ] t r(   c                	    R # r   r$   r   rj  s   &&r&   startTestLogger.start  rg  r(   c               $    V ^8  d   QhRRRRRR/# r!   rj  rk  test	'TestRun'r"   rV   r$   )r%   s   "r&   r'   rb    s!      - y T r(   c                	    R # r   r$   r   rj  rr  s   &&&r&   
start_testTestLogger.start_test  rg  r(   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r!   rj  rk  rr  rs  r<   r=   r   r   r"   rV   r$   )r%   s   "r&   r'   rb    s1      = 	 c PZ _c r(   c                	    R # r   r$   )r   rj  rr  r<   r   s   &&&&&r&   log_subtestTestLogger.log_subtest  rg  r(   c               $    V ^8  d   QhRRRRRR/# r!   rj  rk  rC   rs  r"   rV   r$   )r%   s   "r&   r'   rb    s!      = )  r(   c                	    R # r   r$   )r   rj  rC   s   &&&r&   logTestLogger.log  rg  r(   c                    V ^8  d   QhRRRR/# ri  r$   )r%   s   "r&   r'   rb    s      M d r(   c                	   "   R # 5ir   r$   rm  s   &&r&   finishTestLogger.finish  s     s   c                   V ^8  d   QhRR/# ra  r$   )r%   s   "r&   r'   rb    rc  r(   c                	    R # r   r$   r   s   &r&   closeTestLogger.close  rg  r(   r$   N)r   r   r   r   re  rn  rv  rz  r  r  r  r   r$   r(   r&   r_  r_    s*     r(   r_  c                  2    ] tR tRtRR R lltR R ltRtR# )	TestFileLoggeri	  c               $    V ^8  d   QhRRRRRR/# )r!   filenamer=   r   r"   rV   r$   )r%   s   "r&   r'   TestFileLogger.__annotate__
  s&     I I Ic I$ Ir(   c                	:    Wn         \        VR RVR7      V n        R# )rE   utf-8encodingr   N)r  openfile)r   r  r   s   &&&r&   __init__TestFileLogger.__init__
  s     3H	r(   c                   V ^8  d   QhRR/# ra  r$   )r%   s   "r&   r'   r    s      t r(   c                	p    V P                   '       d$   V P                   P                  4        R V n         R # R # r   )r  r  r   s   &r&   r  TestFileLogger.close  s%    999IIOODI r(   )r  r  N)replace)r   r   r   r   r  r  r   r$   r(   r&   r  r  	  s    I r(   r  c                      ] tR tRt. ROt. R OtRtRtRtR R lt	R R lt
R	 R
 ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltRtR# )!ConsoleLoggeri  u   ✀ u   ―u   ▶ c                    V ^8  d   QhRRRR/# )r!   rp   r>   r"   rV   r$   )r%   s   "r&   r'   ConsoleLogger.__annotate__  s     . .# .$ .r(   c                	   Wn         \        4       V n        R V n        R V n        ^ V n        RV n        V  RV n        ^ V n        ^ V n	        ^ V n
         \        P                  ! ^4      w  V n        pRV n        \!        V P"                  V P$                  V P                  ^,
          4      V n        \!        RV P$                  V P                  ^,
          4      V n        V P*                  V n        V P.                  V n         V P&                  P3                  \4        P6                  P8                  ;'       g    R4       R #   \         d    ^PT n        RT n         Li ; i  \:         dc    \!        RRT P                  ^,
          4      T n        \!        RRT P                  ^,
          4      T n        RT n        T P<                  T n         R # i ; i)NFr   Tr}   z8<r   z| )rp   r   running_testsprogress_testprogress_taskmax_left_widthstopshould_erase_line
test_countstarted_testsspinner_indexosget_terminal_sizer   is_ttyOSErrorr   SCISSORSHLINEoutput_start
output_endRTRIsubSPINNERspinnerr   r3   stdoutr  r   ASCII_SPINNER)r   rp   _s   && r&   r  ConsoleLogger.__init__  sj   "4>L489=	 	!#	 //2LDIqDK
 #4==$**dii!mL TZZQ?99||	.$$SZZ%8%8%C%CGD  	 DIDK	  " 	. &tS$))a- @D$Rdii!m<DODH--DL		.s+   %D< =5E 3E <EEA)GGc                   V ^8  d   QhRR/# ra  r$   )r%   s   "r&   r'   r  >  s     ( (t (r(   c                	j    V P                   '       d!   \        V P                   R R7       R V n         R# R# )r   r{   N)r  r   r   s   &r&   re  ConsoleLogger.flush>  s+    !!!$((b1%'D" "r(   c                    V ^8  d   QhRRRR/# )r!   r6  r=   r"   rV   r$   )r%   s   "r&   r'   r  C  s     * *3 *4 *r(   c                	F    \        V P                  VR RR7       RV n        R# )r   )sepr|   z[KN)r   r  )r   r6  s   &&r&   print_progressConsoleLogger.print_progressC  s    d$$d=!)r(   c                   V ^8  d   QhRR/# ra  r$   )r%   s   "r&   r'   r  G  s       r(   c                	:    V P                   P                  4        R # r   )updatesetr   s   &r&   request_updateConsoleLogger.request_updateG  s    r(   c                    V ^8  d   QhRRRR/# ri  r$   )r%   s   "r&   r'   r  J  s     " "] "t "r(   c                	   V P                   f   V P                  4        R # \        V P                  4      ^8X  d   V P                   RV P
                   2pMRRP                  V P                  \        V P                  4      ,
          ^,           V P                  V P
                  4      pRP                  W P                  V P                  ,          4      pV P                  ^,           \        V P                  4      ,          V n        RP                  R\        P                  4       ,          \        \        P                  ! 4       V P                   P                  ,
          4      VP                  R7      pV P                   P                  '       d9   VRP                  V P                   P                  VP                  R7      ,          pVR	,          pV P                   P!                  4       pV'       d   VR
V,           ,          pVP                  V P                   RV P"                  W4R7      pV P%                  V4       R # )NrJ   z{}-{}/{}z[{}] {} z{spaces} {dur:{durlen}}r   )spacesdurdurlenz/{timeout:{durlen}})timeoutr  r<      T)r   r  leftright)r  re  rL   r  r  r  r%   r  r  r   r   r>   time	starttimeduration_max_lenr  get_detailsr  r  )r   rj  countr  r  detailsr6  s   &&     r&   emit_progressConsoleLogger.emit_progressJ  s   %JJLt!!"a'))*!DOO+<=E%%d&8&83t?Q?Q;R&RUV&V&*&8&8$//KE   T5G5G(HI"0014DLL8II)00**,,DIIK$"4"4">">>?++ 1 - %%%*11**22// 2 1 1E 	$$002UW_$E~~d004-1-@-@#'  6 	D!r(   c                    V ^8  d   QhRRRR/# ri  r$   )r%   s   "r&   r'   r  j  s     %J %J] %Jt %Jr(   c                	  a a R  VV 3R llp\         P                  ! 4       S n        SP                  S n        \	        S P
                  SP                  ^,           4      S n        S P                  '       dh   SP                  '       gT   ^\        \        S P                  4      4      ,          ^,           S n        \         P                  ! V! 4       4      S n        R# R# R# )c                   V ^8  d   QhRR/# ra  r$   )r%   s   "r&   r'   )ConsoleLogger.start.<locals>.__annotate__k  s     	 	t 	r(   c                 D  <"   \         P                  ! 4       p R pSP                  4        SP                  '       EgN   SP                  P                  4       G Rj  xL
  SP                  P                  4        V P                  4       V8  d;   RSn        V P                  4       ^,           pV P                  VSP                  4       SP                  '       d0   SP                  P                  \        P                  Jd   RSn        SP                  '       g\   SP                  '       g   EK  SP                  P                  RR7      Sn        SP                  P                  SP                  4       SP!                  S4       EK`  SP#                  4        R#  ELB5i)g        NFlast)asyncioget_running_loopr  r  r  waitclearr  r  call_atr   r   r   r  popaddr  re  )loopnext_updaterj  r   s     r&   report_progress,ConsoleLogger.start.<locals>.report_progressk  s*    ++-DK!iiikk&&(((!!# 99;+-)-D&"&))+/KLLd.A.AB&&&**..j6H6HH)-D&)))--- )-););)?)?U)?)KD&&&**4+=+=>""7+JJL- )s+   :F F FA>F A F F .A0F N)r  Eventr  r  rP  r   r  r  need_consolerL   r=   ensure_futurer  )r   rj  r  s   ff r&   rn  ConsoleLogger.startj  s    	 	: mmo!,,		7#9#9B#>?	;;;w333"#c#doo*>&?"?!"CD!(!6!67H!ID  4;r(   c               $    V ^8  d   QhRRRRRR/# rq  r$   )r%   s   "r&   r'   r    s!      - y T r(   c                	   VP                   '       Ed   VP                  '       d   V P                  4        \        VP	                  V\
        P                  ! 4       V P                  VP                  P                  \
        P                  ! 4       4      R 7      4       \        VP                  P                  4       VP                  ,           4       VP                  '       d   \        V P                  RR7       MVP                  '       g   \        RR7       V ;P                  ^,          un        V P                  P!                  V4       V P                  P#                  VRR7       V P%                  4        R# ))r  r  Tre  Fr  N)verbosecmdlinere  r   r%   r   colorize_consoler  r   r   r   direct_stdoutr  needs_parsingr  r  r  move_to_endr  ru  s   &&&r&   rv  ConsoleLogger.start_test  s   <<<DLLLJJL'..t'<'<'>040C0C'+xx'8'89N9N9P'Q ! S T $((--/$,,>?!!!d''t4'''D!at$&&t%&8r(   c               $    V ^8  d   QhRRRRRR/# )r!   rj  rk  rC   rs  r"   r=   r$   )r%   s   "r&   r'   r    s&     K K= K) K Kr(   c                	   VP                   '       g   VP                  P                  '       g   R # VP                  \        P
                  ! 4       VP                  R7      pVP                   '       d   V# VP                  4       p\        V4      V P                  8  d   V# \        \        P                  ! RV P                   R24      4      RP                  W@P                  ) R 4      ,           # )r   )stderr_onlyzListing only the last z lines from a long log.
rz   N)r  optionsprint_errorlogsget_logr   r  r  
splitlinesrL   rp   r=   boldr   )r   rj  rC   r  r1  s   &&&  r&   shorten_logConsoleLogger.shorten_log  s    ~~~goo&E&E&EnnT224)/)=)=  ?>>>J u:&Jtyy#9$..9IIb!cdehlhqhqrw  zH  zH  yH  yI  sJ  iK  K  Kr(   c               $    V ^8  d   QhRRRRRR/# r}  r$   )r%   s   "r&   r'   r    s!     # # #	 #d #r(   c                	   VP                   '       gu   VP                  pV'       g7   \        VP                  P	                  4       VP
                  ,           4       R # \        VP                  P	                  4       V,           4       V P                  W4      pV'       d8   \        V P                  4       \        V4       \        V P                  4       R # R # r   )
r  r  r   r   r   stdor   r  r   r  )r   rj  rC   r  r  s   &&&  r&   	print_logConsoleLogger.print_log  s    ~~~nnGfjj335CD&**//1G;<w/$##$sO$//" r(   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r!   rj  rk  rr  rs  r<   r=   rC   r   r"   rV   r$   )r%   s   "r&   r'   r    s1     " "= "	 "c "S] "bf "r(   c                	   VP                   '       g3   VP                  P                  '       d   VP                  4       '       d   V P	                  4        \        VP                  V\        P                  ! 4       V P                  V P                  VVP                  \        P                  ! 4       4      R 7      RR7       V P                  4        R# R# R# ))r  prefixmiddler  Tr  N)r  r  r  r   re  r   r%   r   r  r  r  r   r  )r   rj  rr  r<   rC   s   &&&&&r&   rz  ConsoleLogger.log_subtest  s    <<<GOO;;;JJL'..t'<'<'>tObOb(,()'-t7L7L7N'O ! Q Y]^
 ! AP;r(   c               $    V ^8  d   QhRRRRRR/# r}  r$   )r%   s   "r&   r'   r    s!      = )  r(   c                	   V P                   P                  V4       VP                  \        P                  J dd   VP
                  '       g   VP                  P                  '       d6   V P                  4        \        VP                   R VP                   R24       VP                  P                  '       d"   VP                  P                  4       '       Eg   V P                  4        VP                  '       dc   VP                  '       dQ   \        V P                   4       \        VP#                  V\$        P&                  ! 4       V P(                  R7      4       M\        VP#                  V\$        P&                  ! 4       V P(                  R7      RR7       VP
                  '       g!   VP                  P+                  4       '       d   V P-                  W4       VP.                  '       d9   \        RR7       VP.                   F  p\        VRR7       K  	  \        RR7       VP
                  '       g!   VP                  P+                  4       '       d   \        RR7       V P1                  4        R# )z time out (After z	 seconds))r  Tr  N)r  remover   r   r   r  r  r  re  r   r   r  quietr   r  r  r  r%   r   r  r  r   r  warningsr  )r   rj  rC   rE   s   &&& r&   r  ConsoleLogger.log  s   !!&)::+++181P1P1PJJLV[[M!26>>2B)LM$$$FJJ,<,<,>,>JJL~~~&"6"6"6doo&gnnVT-B-B-DUYUhUhnijgnnVT-B-B-DUYUhUhni ">>>VZZ%6%6%8%8NN73D!A!4( )D!~~~!2!2!4!4D!r(   c                    V ^8  d   QhRRRR/# ri  r$   )r%   s   "r&   r'   r    s     ! !M !d !r(   c                	  "   R V n         V P                  4        V P                  '       d   V P                  G Rj  xL
  VP                  '       d   VP                  P
                  '       g   VP                  P                  '       dY   \        R4       \        VP                  ^4       F3  w  r#\        VP                  V\        P                  ! 4       4      4       K5  	  \        VP                  4       4       R#  L5i)TNz
Summary of Failures:
)r  r  r  collected_failuresr  r  r  r   	enumerater%   r   r  summaryr   rj  irC   s   &&  r&   r  ConsoleLogger.finish  s     	$$$$%%%000GOO4K4K4K,-&w'A'A1E	gnnVT-B-B-DEF F 	goo  %s"   9C?C=C?C?.C?
A4C?)r   r  r  rp   r  r  r  r  r  r  r  r  r  r  r  r  r  N)z..z:.z.:)u   🌑u   🌒u   🌓u   🌔u   🌕u   🌖u   🌗u   🌘)r   r   r   r   r  r  r  r  r  r  re  r  r  r  rn  rv  r   r  rz  r  r  r   r$   r(   r&   r  r    sf    &MGG HED.B(
*"@%JN"K#"6! !r(   r  c                  :    ] tR tRtR R ltR R ltR R ltRtR	# )
TextLogfileBuilderi  c                    V ^8  d   QhRRRR/# ri  r$   )r%   s   "r&   r'   TextLogfileBuilder.__annotate__  s     E E] Et Er(   c                	$   V P                   P                  R \        P                  P                  4       P	                  4        R24       \        \        P                  P                  4       4      pV P                   P                  RV R24       R# )zLog of Meson test suite run on 

zInherited environment: N)	r  writedatetimenow	isoformatr   r  environitems)r   rj  inherit_envs   && r&   rn  TextLogfileBuilder.start  sg    		9(:K:K:O:O:Q:[:[:]9^^bcd&rzz'7'7'9:		1+dCDr(   c               $    V ^8  d   QhRRRRRR/# r}  r$   )r%   s   "r&   r'   r    s!     6 6= 6) 6 6r(   c                	N   VP                    R VP                   2pV P                  P                  \	        VR^N4      R,           4       V P                  P                  RVP
                  ,           R,           4       \        P                  ! R\        P                  ! VP                  4      4      pV P                  P                  RV,           R,           4       V P                  P                  RRVP                  ,          ,           R,           4       V P                  P                  RVP                  4       ,           R,           4       VP                  '       d4   V P                  P                  R	VP                  ,           R,           4       VP                  '       ds   VP                  P                  '       d   R
MRpV P                  P                  \	        VR^N4      R,           4       V P                  P                  VP                  4       VP                   '       dS   V P                  P                  \	        RR^N4      R,           4       V P                  P                  VP                   4       V P                  P                  \	        RR^N4      R,           4       R# )rJ   =rz   ztest:         z%H:%M:%Szstart time:   zduration:     z%.2fszresult:       zcommand:      r  outputr   stderrr   r  N)r&  r  r  r   r   r   r  strftimegmtimer  durationget_exit_statusr  r  r  rK   stde)r   rj  rC   titlestarttime_strr   s   &&&   r&   r  TextLogfileBuilder.log  s   ::,a 2 234		uc2.56		(6;;6=>j$++f>N>N2OP		(=84?@		(7V__+DDtKL		(6+A+A+CCdJK>>>IIOO,v~~=DE;;;&4448(DIIOOF4b1D89IIOOFKK(;;;IIOOF8S"5<=IIOOFKK(		r3+f45r(   c                    V ^8  d   QhRRRR/# ri  r$   )r%   s   "r&   r'   r    s     6 6M 6d 6r(   c                	  "   VP                   '       dm   V P                  P                  R 4       \        VP                   ^4       F7  w  r#V P                  P                  VP	                  VR4      R,           4       K9  	  V P                  P                  VP                  4       4       \        RV P                   24       R# 5i)z
Summary of Failures:

Frz   zFull log written to N)r  r  r   r  r%   r  r   r  r  s   &&  r&   r  TextLogfileBuilder.finish  s     %%%IIOO89&w'A'A1E			vu = DE F		)*$T]]O45s   CCr$   N)r   r   r   r   rn  r  r  r   r$   r(   r&   r  r    s    E
6&6 6r(   r  c                  "    ] tR tRtR R ltRtR# )JsonLogfileBuilderi  c               $    V ^8  d   QhRRRRRR/# r}  r$   )r%   s   "r&   r'   JsonLogfileBuilder.__annotate__  s!     4 4= 4) 4 4r(   c                	   R VP                   RVP                  RVP                  P                  RVP                  P	                  4       RVP
                  RVP                  RVP                  RVP                  RVP                  /	pVP                  '       d   VP                  VR	&   V P                  P                  \        P                  ! V4      R
,           4       R# )r   r  rC   is_failr  r/  
returncoder   commandr,  rz   N)r   r  r   r   r   r  r/  r>  r   cmdr1  r  r   jsondumps)r   rj  rC   jresults   &&& r&   r  JsonLogfileBuilder.log  s    FKKfkkfjj&&vzz((*))&++6::vzz
'
 ;;; &GH		

7+d23r(   r$   N)r   r   r   r   r  r   r$   r(   r&   r9  r9    s    4 4r(   r9  c                  >    ] tR tRtRtR R ltR R ltR R ltR	tR
# )JunitBuilderi(  a  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.
c                    V ^8  d   QhRRRR/# )r!   r  r=   r"   rV   r$   )r%   s   "r&   r'   JunitBuilder.__annotate__9  s     2 2 2 2r(   c                	^    Wn         \        P                  ! R RRRR7      V n        / V n        R# )
testsuites0testsr   failuresN)r  etElementrootsuites)r   r  s   &&r&   r  JunitBuilder.__init__9  s'     JJC#?	/1r(   c               $    V ^8  d   QhRRRRRR/# rq  r$   )r%   s   "r&   r'   rH  ?  s+     nM nM= nM	 nMd nMr(   c                   VP                   Ee   VP                   P                  R4       F  pRP                  VP                  VP                  VP
                  R,          4      VP
                  R&   VP                  R4       F  pVP
                  R K  	  VP                  R4       F  pVP
                  R K  	  VP                  R	4       F  pVP
                  R
 K  	  VP                  R4       F  pVP
                  R K  	  V P                  P                  V4       K  	  R# VP                  '       Ed   VP                   RVP                   2pWPP                  9  g#   VP                  P                  ^8  g   Q R4       h\        P                  ! RV\        \        VP                  4      4      \        \!        R VP                   4       4      4      \        \!        R VP                   4       4      4      \        \!        R VP                   4       4      4      \        VP"                  4      R7      ;q0P                  V&   VP                   EF  p\        P$                  ! VR\        V4      VR7      pVP&                  \(        P*                  J d   \        P$                  ! VR4       EM`VP&                  \(        P,                  J d!   \        P$                  ! VR4      pRVn        EM"VP&                  \(        P0                  J d   \        P$                  ! VR4       MVP&                  \(        P2                  J d   \        P$                  ! VR4       MVP&                  \(        P4                  J d    \        P$                  ! VR4      p	RV	n        MyVP&                  \(        P6                  J d    \        P$                  ! VR4      p	RV	n        M<VP&                  \(        P8                  J d   \        P$                  ! VR4      p	RV	n        VP:                  '       g   EK  VP:                  \        P$                  ! VR4      n        EK  	  VP<                  '       d@   \        P$                  ! VR4      p
\?        VP<                  PA                  4       4      V
n        VPB                  '       dB   \        P$                  ! VR4      p\?        VPB                  PA                  4       4      Vn        R# R# VP                  V P                  9  dT   \        P                  ! RVP                  RR R R \        VP"                  4      R7      ;q0P                  VP                  &   MVV P                  VP                  ,          p\        \E        VP
                  R!,          4      ^,           4      VP
                  R!&   \        P$                  ! VRVP                  VP                  \        VP"                  4      R"7      pVPF                  \(        P*                  J dS   \        P$                  ! VR4       \        \E        VP
                  R,          4      ^,           4      VP
                  R&   EMVPF                  \(        P,                  J dZ   \        P$                  ! VR4      pRVn        \        \E        VP
                  R,          4      ^,           4      VP
                  R&   EMAVPF                  \(        P0                  J dS   \        P$                  ! VR4       \        \E        VP
                  R#,          4      ^,           4      VP
                  R#&   EMVPF                  \(        P2                  J dS   \        P$                  ! VR4       \        \E        VP
                  R$,          4      ^,           4      VP
                  R$&   EMaVPF                  \(        P4                  J dY   \        P$                  ! VR4      p	RV	n        \        \E        VP
                  R$,          4      ^,           4      VP
                  R$&   MVPF                  \(        P6                  J dY   \        P$                  ! VR4      p	RV	n        \        \E        VP
                  R#,          4      ^,           4      VP
                  R#&   MuVPF                  \(        P8                  J dX   \        P$                  ! VR4      p	RV	n        \        \E        VP
                  R#,          4      ^,           4      VP
                  R#&   VP<                  '       d@   \        P$                  ! VR4      p
\?        VP<                  PA                  4       4      V
n        VPB                  '       dB   \        P$                  ! VR4      p\?        VPB                  PA                  4       4      Vn        R# R# )%zLog a single test case.Nz.//testsuitez{}.{}.{}r   z.//testcase[@result]rC   z.//testcase[@timestamp]	timestampz.//testcase[@file]r  z.//testcase[@line]r6  .zduplicate suite	testsuitec              3     "   T F7  qP                   \        P                  \        P                  09   g   K3  ^x  K9  	  R# 5iry   N)rC   r   r   r   .0rs   & r&   	<genexpr>#JunitBuilder.log.<locals>.<genexpr>]  s3      I,Q(( * 4 4j6F6FG;Hqq,
   0A
Ac              3     "   T FF  qP                   \        P                  \        P                  \        P                  09   g   KB  ^x  KH  	  R# 5irZ  )rC   r   r   r   r   r[  s   & r&   r^  r_  _  s9      !cLqHH",//:3L3LjN`N`!a=bLs   ?A
Ac              3     "   T F7  qP                   \        P                  \        P                  09   g   K3  ^x  K9  	  R# 5irZ  rC   r   r   r   r[  s   & r&   r^  r_  a  s1       G<a88!+*2D2D E<F<r`  )r   rM  r   rN  r   r  testcase)r   	classnamer   zTest output was not parsed.errorfailurezTest unexpectedly passed.zTest was interrupted by user.z.Test did not finish before configured timeout.z
system-outz
system-err1rK  rM  )r   re  r  r   rN  )$junitfindallr%   projectr   attribrQ  rg   resultsrR  r  r[   rO  rP  r=   rL   sumr/  
SubElementrC   r   r   r   textr   r   r   r   r   r   r  replace_unencodable_xml_charsrC  r1  r>   r   )r   rj  rr  suitecase	suitenamesubtestrd  skipfailouterrs   &&&         r&   r  JunitBuilder.log?  s   ::!++N;'1'8'8tyyRWR^R^_eRf'gV$ "MM*@ADH- B!MM*CDDK0 E!MM*>?DF+ @!MM*>?DF+ @		  ' < 
 <<<<<.$))5IKK/7??3I3IA3M`O``M-/ZZ#dll+,3 I$,, I I JS !cDLL !c c dC  G4<<  G G H'. EKK	*  << ==
WYbc>>Z__4MM(I6^^z'9'99==9=D =DI^^z'7'77MM(G4^^z6MM(I6^^z'@'@@==9=D ;DI^^z';';;==7;D ?DI^^z'9'99==7;D PDI&&&AHATATBMM(L9>/ (0 yyymmE<889I9I9KLyyymmE<889I9I9KL  ||4;;.46JJdll#c #C4F5H HDLL1 DLL1(+CW0E,F,J(KW%}}UJTYY/3||#dmmBTVHxx:??*h	2*-c%,,y2I.JQ.N*OY'Z///}}Xy99	*-c%,,y2I.JQ.N*OY'Z---h0),Sh1G-H1-L)MX&Z__,h	2+.s5<<
3K/Lq/P+QZ(Z666}}Xy97	+.s5<<
3K/Lq/P+QZ(Z111}}Xw7;	),Sh1G-H1-L)MX&Z///}}Xw7L	),Sh1G-H1-L)MX&yyymmHl;89I9I9KLyyymmHl;89I9I9KL r(   c                    V ^8  d   QhRRRR/# ri  r$   )r%   s   "r&   r'   rH    s     
B 
BM 
Bd 
Br(   c           	     D  "   V P                   P                  4        F  pV P                  P                  V4       R Fj  p\	        \        V P                  P                  V,          4      \        VP                  V,          4      ,           4      V P                  P                  V&   Kl  	  K  	  \        P                  ! V P                  4      p\        V P                  R4      ;_uu_ 4       pVP                  VRRR7       RRR4       R#   + '       g   i     R# ; i5i)z9Calculate total test counts and write out the xml result.wbr  T)r  xml_declarationNrL  )rR  rP   rQ  rg   r=   r>   rl  rO  ElementTreer  r  r   )r   rj  rr  attrtreefs   &&    r&   r  JunitBuilder.finish  s     [['')EIIU#7),S1A1A$1G-H3u||\`OaKb-b)c		  & 8 * ~~dii($--&&!JJq7DJA '&&&s   C+D -D
D D		D )r  rQ  rR  N)	r   r   r   r   __doc__r  r  r  r   r$   r(   r&   rF  rF  (  s     2nM`
B 
Br(   rF  c                  ,  a  ] tR tRt$ ^ t/ tR]R&   R V 3R lltR R ltR R	 lt	]
R
 R l4       t]
R R l4       t]
R R l4       tR R ltR R ltR R ltR R lt]
R R l4       tR R ltR R ltR%R R llt]
R  R! l4       tR" R# ltR$tV ;t# )&TestRuni  z'T.Dict[TestProtocol, T.Type['TestRun']]PROTOCOL_TO_CLASSc               (    V ^8  d   QhRRRRRRRR/# )r!   rr  r   rq   T.Anykwargsr"   r$   )r%   s   "r&   r'   TestRun.__annotate__  s0     I I, IU Ie IPU Ir(   c                	`   < \         SV `  \        P                  VP                  ,          4      # r   )super__new__r  r  protocol)clsrr  rq   r  	__class__s   &&*,r&   r  TestRun.__new__  s!    ww88GHHr(   c               4    V ^8  d   QhRRRRRRRRR	R
RR
RR
/# )r!   rr  r   test_envT.Dict[str, str]r   r=   r  r"  is_parallelr#   r  ra   r$   )r%   s   "r&   r'   r    sD     ( (. (:J ((%4(CG(RV("(r(   c                	b   \         P                  V n        Wn        R V n        W0n        W@n        . V n        R V n        R V n	        R V n
        RV n        RV n        RV n        R V n        W n        VP                   V n        VP"                  V n        R V n        WPn        W`n        Wpn        . V n        R # )Nr   )r   r   r   rr  _numr   r  rm  r>  r  r/  r  r1  additional_errorr@  r   should_failproject_namerk  ri  r  r  ra   r  )r   rr  r  r   r  r  r  ra   s   &&&&&&&&r&   r  TestRun.__init__  s     %%	%)		/1+/,0+/		 ",0++((15
&&%'r(   c                    V ^8  d   QhRRRR/# )r!   r@  T.List[str]r"   rV   r$   )r%   s   "r&   r'   r    s        r(   c                	p    \         P                  V n        \        P                  ! 4       V n        Wn        R # r   )r   r   r   r  r  r@  )r   r@  s   &&r&   rn  TestRun.start  s!    %%r(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r    s      S r(   c                	    V P                   f3   \        ;P                  ^,          un        \        P                  V n         V P                   # r   )r  r  TEST_NUMr   s   &r&   r&  TestRun.num  s4    99!((DIyyr(   c                   V ^8  d   QhRR/# r!   r"   r   r$   )r%   s   "r&   r'   r    s     & &k &r(   c                	    V P                   '       d   \        P                  # V P                  '       d   \        P                  # \        P
                  # r   )ra   r   r   r  r   r   r   s   &r&   console_modeTestRun.console_mode  s>    ***%%%%%%r(   c                   V ^8  d   QhRR/# r    r$   )r%   s   "r&   r'   r    s     P Pt Pr(   c                	~    V P                   ;'       d+    V P                  '       * ;'       d    V P                  '       * # r   )r  r  r  r   s   &r&   r  TestRun.direct_stdout  s.    ||OOD$4$4 4OOT=O=O9OOr(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r    s     	 	S 	r(   c                	    V P                   '       dL   \        R  V P                    4       4      p\        R V P                    4       4      pW8X  d   V R2# V RV R2# R# )c              3  T   "   T F  qP                   P                  4       x  K   	  R # 5ir   )rC   r   r\  r   s   & r&   r^  &TestRun.get_results.<locals>.<genexpr>  s     @<a))<s   &(c              3  z   "   T F1  qP                   \        P                  \        P                  09  x  K3  	  R # 5ir   rc  r  s   & r&   r^  r    s)     bUaPQhhz
8J8J&KKUas   9;z subtests passedrJ   r   )rm  rn  )r   passedrans   &  r&   get_resultsTestRun.get_results  s`    <<<@4<<@@FbUYUaUabbC} !122 3%'788r(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r     s     5 5 5r(   c                	,    \        V P                  4      # r   )r   r>  r   s   &r&   r0  TestRun.get_exit_status   s    #DOO44r(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r    s     " "S "r(   c                	    V P                   \        P                  J d   R # V P                  '       d   V P	                  4       # V P                  4       # )r   )r   r   r   r>  r0  r  r   s   &r&   r  TestRun.get_details  s>    88z)))???''))!!r(   c                   V ^8  d   QhRR/# ra  r$   )r%   s   "r&   r'   r  
  s     5 54 5r(   c                	   V P                   \        P                  8X  d   \        P                  V n         V P                  '       d4   V P
                  \        P                  J d   \        P                  V n         \        V P                   \        4      '       g   Q hV P                  '       ds   V P                   \        P                  \        P                  39   dD   V P                   \        P                  J d   \        P                  M\        P                  V n         V P                  '       d;   V P                  P                  R 4      '       g   V ;P                  R ,          un        V P                   '       d;   V P                   P                  R 4      '       g   V ;P                   R ,          un        \"        P"                  ! 4       V P$                  ,
          V n        R# )rz   N)r   r   r   r   r  r  r   r   r   
isinstancer  r   r   r   r  endswithr1  r  r  r/  r   s   &r&   	_completeTestRun._complete
  s   88z)))!}}DH$"3"3{7N7N"N!))DH$((J////Z]]JOO,L L48HH
4Mz00S]SjSjDH999TYY//55III999TYY//55III		dnn4r(   c                   V ^8  d   QhRR/# r!   r"   r   r$   )r%   s   "r&   r'   r    s     4 4 4r(   c                	,   V P                   '       g   R # \        V P                  P                  4       4      \        \        P
                  P                  4       4      ,
          p\        V4      RP                  R V P                    4       4      ,           # )Nr   c              3  8   "   T F  p\        V4      x  K  	  R # 5ir   )r   r  s   & r&   r^  "TestRun.cmdline.<locals>.<genexpr>  s     3(QXa[[(   )r@  r  r   r%  r  r$  r   r   )r   test_only_envs   & r&   r  TestRun.cmdline  sb    xxxDHHNN,-BJJ4D4D4F0GG.HH3$((334 	4r(   c                   V ^8  d   QhRR/# ra  r$   )r%   s   "r&   r'   r     s      t r(   c                	    \         P                   ! 4       V n        \        V n        \        P
                  V n        V P                  4        R # r   )r  r  GNU_SKIP_RETURNCODEr>  r   r   r   r  r   s   &r&   complete_skipTestRun.complete_skip   s+    -??r(   c                   V ^8  d   QhRR/# ra  r$   )r%   s   "r&   r'   r  &  s      $ r(   c                	&    V P                  4        R # r   )r  r   s   &r&   completeTestRun.complete&  s    r(   c               $    V ^8  d   QhRRRRRR/# )r!   r   r#   r  r"   r=   r$   )r%   s   "r&   r'   r  )  s!       4 C r(   c                	   V'       d   R MV P                   pV P                  '       g   V P                  '       d   R pV'       dO   V\        P                  ! R4      P                  V4      R,           ,          pWC,          pVRR R8w  d
   VR,          pV\        P                  ! R4      P                  V4      R,           ,          pV\        V P                  V P                  4      ,          pMTpV'       d   VRR R8w  d
   VR,          pV# )r   zstdout:rz   Nzstderr:r   )r  r1  r  r   cyanr   r   )r   r   r  r  r   s   &&&  r&   r  TestRun.get_log)  s     rdii999---Ctyy+44X>EErs8t#4KC499Y'00:TAAC:dii)>)>??CC3rs8t#4KC
r(   c                   V ^8  d   QhRR/# r    r$   )r%   s   "r&   r'   r  ;  s      t r(   c                	    R # )Fr$   r   s   &r&   r  TestRun.needs_parsing:  s    r(   c               $    V ^8  d   QhRRRRRR/# r!   rj  rk  r1  r2  r"   rV   r$   )r%   s   "r&   r'   r  >  s#      = 9M RV r(   c                	0   "   V  R j  xL
  pK   LDR # 5ir   r$   )r   rj  r1  ls   &&& r&   r>  TestRun.parse>  s      	 	!	us   )r  r  r@  r/  r   ra   r  ri  r   rk  r   rm  r>  r  r  r1  r  rr  r  r  r  )FF)r   r   r   r   r  r  r   r  r  rn  propertyr&  r  r  r  r0  r  r  r  r  r  r  r  r>  r   __classcell__r  s   @r&   r  r    s    HAC>CI I(2
   & & P P	5"5 4 4"   r(   r  c                  .   a  ] tR tRtR V 3R lltRtV ;t# )TestRunExitCodeiC  c                   V ^8  d   QhRR/# ra  r$   )r%   s   "r&   r'   TestRunExitCode.__annotate__E  s     	 	$ 	r(   c                	  < V P                   \        P                  8w  d   MV P                  \        8X  d   \        P
                  V n         MkV P                  \        8X  d   \        P                  V n         M@\        V P                  4      '       d   \        P                  M\        P                  V n         \        SV `1  4        R # r   )r   r   r   r>  r  r   GNU_ERROR_RETURNCODEr   r#   r   r   r  r  r   r  s   &r&   r  TestRunExitCode.completeE  st    88z)))__ 33!DH__ 44!''DH*.t*?*?zZ]]DHr(   r   r   r   r   r   r  r   r  r  s   @r&   r  r  C  s    	 	r(   r  c                  .   a  ] tR tRtR V 3R lltRtV ;t# )TestRunGTestiS  c                   V ^8  d   QhRR/# ra  r$   )r%   s   "r&   r'   TestRunGTest.__annotate__T  s      $ r(   c                	*  < V P                   P                   R 2pV P                   P                  '       d5   \        P                  P                  V P                   P                  V4      p \        VRRRR7      ;_uu_ 4       p\        P                  ! V4      V n	        RRR4       \        ST `=  4        R#   + '       g   i     L ; i  \         d     L0\        P                   d(   p\        P                  ! RT RT: 24        Rp?LfRp?ii ; i).xmlr]  utf8r  r  NzUnable to parse : )rr  r   workdirr  pathr   r  rO  r>  ri  FileNotFoundError
ParseErrorr   rf  r  r  )r   r  r  er  s   &   r&   r  TestRunGTest.completeT  s    iinn%T*99ww||DII$5$5x@H
	=hfYGG1XXa[
 H 	 HG  	 }} 	=JJ)(2aU;<<	=sB   ,C
 B7C
 7C	C
 C
 
DD*D+DD)ri  r  r  s   @r&   r  r  S  s     r(   r  c                  P   a  ] tR tRt]R R l4       tR V 3R lltR R ltRtV ;t	# )	
TestRunTAPij  c                   V ^8  d   QhRR/# r    r$   )r%   s   "r&   r'   TestRunTAP.__annotate__l        t r(   c                	    R # Tr$   r   s   &r&   r  TestRunTAP.needs_parsingk      r(   c                   V ^8  d   QhRR/# ra  r$   )r%   s   "r&   r'   r  o  s      $ r(   c                	4  < V P                   ^ 8w  dx   V P                  P                  4       '       gX   \        P                  V n        V P
                  ;'       g    RV n        V ;P
                  RV P                    R2,          un        \        SV `  4        R# )r   r   z'
(test program exited with status code r   N)r>  r   r   r   r   r1  r  r  r  s   &r&   r  TestRunTAP.completeo  sh    ??a(;(;(=(=!''DH		RDIIICDOOCTTUVVIr(   c               $    V ^8  d   QhRRRRRR/# r  r$   )r%   s   "r&   r'   r  v  s#     ' '= '9M 'RV 'r(   c           	     	  "   R p. p^p\        4       P                  V4        R j  xL
  p\        V\         P                  4      '       d   VP                  pK8  \        V\         P
                  4      '       d/   \        P                  pVP                  WP                  V4       K  \        V\         P                  4      '       d   V P                  P                  V4       VP                  P                  4       '       d   \        P                  pTP                  YP                   ;'       g    RVP"                   2VP                  4       EK1  \        V\         P$                  4      '       d   VP                  V4       EKe  \        V\         P&                  4      '       g   EK  V ;P(                  RVP                  ,           ,          un        \        P                  pEK   ELEDT'       d   \+        \,        P.                  ! R4      4      p\1        \+        \3        R T 4       4      4      4      pT F=  p	T P4                  P                  RT	P6                  T  RT RT	P                   24       K?  	  T^8  d   T P4                  P                  R4       M?T P4                  P                  \+        \,        P8                  ! R4      4      R	,           4       \:        ;QJ d&    R
 T P                   4       F  '       d   K   RM	  RM! R
 T P                   4       4      '       d&   T\        P                  8w  d   \        P<                  pT'       d*   T P>                  \        P@                  8X  d	   Y0n        R # R # R # 5i)Nzsubtest zTAP parsing error: UNKNOWNc              3  8   "   T F  qP                   x  K  	  R # 5ir   )r  )r\  r  s   & r&   r^  #TestRunTAP.parse.<locals>.<genexpr>  s     ;(Q(r  zstdout: r  zUnknown 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  X   "   T F   qP                   \        P                  J x  K"  	  R # 5ir   rC   r   r   r\  ts   & r&   r^  r         ALqxx:??*L   (*FT)!r   r8  r  r  r   r  r   r   rz  r  r  rm  rg   rC   r   r   r   r  r  r  r  r=   r   r   rL   rP  r  r  r   allr   r   r   )
r   rj  r1  r   r  r   r  unknownr   rE   s
   &&&       r&   r>  TestRunTAP.parsev  sc    24 {..u5 	' 	'!!Y..//))Ay0011 &&##D))S9Ay~~..##A&88??$$$//C##D&&*I*Ihqxxj4I188TAy4455"Ay//%%)>)JJ% &&	'5" $++i01GC;(;;<=E$$x%/AG9Bqyyk%Z[ |$$ &k l $$S'):%; ?| &| }3ADLLA333ADLLAAAj&&& oo488z111H 23sX    NG*G'G*CN-N1A3N*=N'G**	N4C2N'N$N*,N+N)r   r1  )
r   r   r   r   r  r  r  r>  r   r  r  s   @r&   r  r  j  s)      ' 'r(   r  c                  8    ] tR tRt]R R l4       tR R ltRtR# )TestRunRusti  c                   V ^8  d   QhRR/# r    r$   )r%   s   "r&   r'   TestRunRust.__annotate__  r  r(   c                	    R # r  r$   r   s   &r&   r  TestRunRust.needs_parsing  r  r(   c               $    V ^8  d   QhRRRRRR/# r  r$   )r%   s   "r&   r'   r    s#     & &= &9M &RV &r(   c                	  "   R  R lp^pV  Rj  xL
  p\         P                  V4      pV'       g   K)  VP                  4       w  rx\        P                  V4      p	V	'       d(   RP	                  R V	P                  4        4       4      pMVP                  4       pVP                  RR4      pV! WGV4      p
V P                  P                  V
4       VP                  WV
P                  4       V^,          pK   LDRp\        ;QJ d&    R T P                   4       F  '       d   K   RM	  R	M! R T P                   4       4      '       d   \        P                  pM\        ;QJ d&    R
 T P                   4       F  '       g   K   R	M	  RM! R
 T P                   4       4      '       d   \        P                  pM^\        ;QJ d&    R T P                   4       F  '       g   K   R	M	  RM! R T P                   4       4      '       d   \        P                   pT'       d*   T P"                  \        P$                  8X  d	   Yn        R# R# R# 5i)c               (    V ^8  d   QhRRRRRRRR/# )r!   nr>   r   r=   rC   r"   r
  r$   )r%   s   "r&   r'   'TestRunRust.parse.<locals>.__annotate__  s.     	R 	R 	RC 	R 	R 	Rr(   c                Z   VR 8X  d&   \         P                  W\        P                  R4      # VR8X  d&   \         P                  W\        P                  R4      # VR8X  d&   \         P                  W\        P
                  R4      # \         P                  W\        P                  RV 24      # )r%  NignoredFAILEDz#Unsupported output from rust test: )r   r  r   r   r   r   r   )r  r   rC   s   &&&r&   	parse_res$TestRunRust.parse.<locals>.parse_res  s    ~ ~~az}}dCC9$ ~~azEE8# ~~azEE>>!:+;+;$Gx"PR Rr(   N:c              3  T   "   T F  q'       g   K  VP                  4       x  K   	  R # 5ir   )rC  r  s   & r&   r^  $TestRunRust.parse.<locals>.<genexpr>  s     $O9IAQZQXXZZ9Is   	((z::rW  c              3  X   "   T F   qP                   \        P                  J x  K"  	  R # 5ir   r  r  s   & r&   r^  r'    r  r  FTc              3  X   "   T F   qP                   \        P                  J x  K"  	  R # 5ir   )rC   r   r   r  s   & r&   r^  r'    s     D|!Z---|r  c              3  X   "   T F   qP                   \        P                  J x  K"  	  R # 5ir   )rC   r   r   r  s   & r&   r^  r'    s     ClZ__,lr  )RUST_TEST_RErG  groupsRUST_DOCTEST_REr   rC  r  rm  rg   rz  rC   r  r   r   anyr   r   r   r   )r   rj  r1  r#  r  r6  rG  r   rC   doctestr  r   s   &&&         r&   r>  TestRunRust.parse  s    	R  	 	$ &&t,Eu$||~)//588$O9I$OPD;;=D||D#.av.##A&##D9Q	% 3ADLLA333ADLLAAA//CSDt||DSSSDt||DDD""CSCdllCSSSCdllCCC//C488z111H 23sg   IC;C9C;ICI9C;;I	I'$II(I$I+II%$I
I"+Ir  N)r   r   r   r   r  r  r>  r   r$   r(   r&   r  r    s     & &r(   r  c                    V ^8  d   QhRRRR/# )r!   original_strr=   r"   r$   )r%   s   "r&   r'   r'     s     I I I Ir(   c                2    R  p\         P                  W4      # )c                :    \        V P                  4       4      ^R # )ry   r   )reprrI  )illegal_chrs   &r&   r   /replace_unencodable_xml_chars.<locals>.<lambda>  s    T+2C2C2E-Fq-Lr(   )UNENCODABLE_XML_CHRS_REr  )r2  replacement_lambdas   & r&   rq  rq    s     M"&&'9HHr(   c                    V ^8  d   QhRRRR/# )r!   streamzT.Union[None, bytes]r"   r=   r$   )r%   s   "r&   r'   r'     s     < <' <C <r(   c                z    V f   R#  V P                  R4      #   \         d    T P                  RRR7      u # i ; i)Nr   r  z
iso-8859-1ignorer   )r   UnicodeDecodeError)r;  s   &r&   r   r     s@    ~<}}W%% <}}\(};;<s    ::c               (    V ^8  d   QhRRRRRRRR/# )	r!   readerasyncio.StreamReaderqueuez,T.Optional['asyncio.Queue[T.Optional[str]]']r  r   r"   r=   r$   )r%   s   "r&   r'   r'     s,     " "2 "I"$/"47"r(   c                  "   . p V P                  4       '       g    V P                  R 4      G Rj  xL
 pV'       g   K:  \        V4      P                  RR4      pVP                  V4       V\        P                  J d   \        VRRR7       V'       g   K  VP                  V4      G Rj  xL
  K  RP                  V4      V'       d   VP                  R4      G Rj  xL
  # #  L  \        P                   d   pTP                  p Rp?LRp?i\        P
                   d0   pT P                  TP                  4      G Rj  xL 
 p Rp?ELRp?ii ; i L Lz  \        P                    d8    RP                  T4      u T'       d   TP                  R4      G Rj  xL 
  # # i ; i  T'       d   TP                  R4      G Rj  xL 
  i i ; i5i)   
Nz
rz   r   T)r|   re  )at_eof	readuntilr  IncompleteReadErrorpartialLimitOverrunErrorreadexactlyconsumedr   r  rg   r   r   r   putr   CancelledError)r@  rB  r  
stdo_lines
line_bytesr  r6  s   &&&    r&   read_decoderP    sk     J"--//B#)#3#3E#::

 zj)11&$?!!$';#5#55$Bd35))D/))wwz" ))D/!! ! ;.. 'YY
,, B#)#5#5ajj#AAA
B * "	 !! #wwz""))D/!! # ))D/!! s   GE C( C&C( E  AE E ,E-E GE G&C( (E=D	E E%E&EEE
E EE G&F(F+ GF" G'F((F+ +GG	GGc                    V ^8  d   QhRRRR/# )r!   fnamer=   r"   r#   r$   )r%   s   "r&   r'   r'     s     H H H Hr(   c                v    V P                  R 4      ;'       d"    \        4       ;'       g    \        4       '       * # )z.exe)r  r/   r4   )rR  s   &r&   run_with_monorT    s(    >>&!GG:<+F+F9;&GGr(   c                    V ^8  d   QhRRRR/# )r!   objsT.List[TestSerialisation]r"   r$   )r%   s   "r&   r'   r'     s     
 
2 
7P 
r(   c                h   \        V \        4      '       g   \        R \        4      hV  F  p\        V\        4      '       g   \        R \        4      h\        VR4      '       g   \        R \        4      h\        VP                  \        4      '       g   Km  \        VP                  \        4      h	  V # )z	<unknown>r   )r  rb   r   coredata_versionr   hasattrr   r   )rV  objs   & r&   check_testdatar\    s    dD!!+K9IJJ#011/=MNNsI&&/=MNN .>??/=MNN  Kr(   c                    V ^8  d   QhRRRR/# )r!   qz 'asyncio.Queue[T.Optional[str]]'r"   r2  r$   )r%   s   "r&   r'   r'     s      8 =Q r(   c               z   "    V P                  4       G Rj  xL
 pV P                  4        Vf   R# V5x  K6   L!5i)TN)get	task_done)r^  items   & r&   
queue_iterrc    s0     
UUW}	<
	 s   ;9";c                    V ^8  d   QhRRRR/# )r!   futureasyncio.Futurer"   rV   r$   )r%   s   "r&   r'   r'     s      > d r(   c                `   "    V G Rj  xL
  R#  L  \         P                   d     R# i ; i5i)z?Wait for completion of the given future, ignoring cancellation.N)r  rM  )re  s   &r&   r  r    s(     !! s(   .  . +.+.c               $    V ^8  d   QhRRRRRR/# )r!   futuresT.Iterable[asyncio.Future]r  zT.Optional[T.Union[int, float]]r"   rV   r$   )r%   s   "r&   r'   r'     s$       :  ?KOr(   c                l  "   R R lp\         P                  ! 4       pVf   RMVP                  4       V,           pV '       df   Ve   V^ 8  d[   \         P                  ! W\         P                  R7      G Rj  xL
 w  rPV! V4       V'       g   KU  WCP                  4       ,
          pKm  V! V 4       R#  L:5i)a  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.c                    V ^8  d   QhRRRR/# )r!   ri  rj  r"   rV   r$   )r%   s   "r&   r'   "complete_all.<locals>.__annotate__$  s     	' 	'9 	'd 	'r(   c                    R pV  FE  pVP                  4       '       g   RpK  VP                  4       '       d   K5  VP                  4        KG  	  V'       d   \        P                  hR# )FTN)done	cancelledrC   r  TimeoutError)ri  r  r  s   &  r&   check_futures#complete_all.<locals>.check_futures$  sK    A6688[[]]
	 
 &&& r(   N)r  return_when)r  r  r  r  FIRST_EXCEPTION)ri  r  rr  r  deadlinero  s   &&    r&   complete_allrw    s     	' ##%DtDIIK',AH
w'A+%ll77>7N7NP Pd8,G'Ps   A B44B47B28B4#B4c                  V    ] tR tRtRR R lltR R ltR R ltR	 R
 ltR R ltRt	R# )TestSubprocessi=  Nc               (    V ^8  d   QhRRRRRRRR/# )r!   pzasyncio.subprocess.Processr  r"  r,  postwait_fnzT.Callable[[], None]r$   )r%   s   "r&   r'   TestSubprocess.__annotate__>  s2     
F 
F4 
F(
F2A
F2
Fr(   c                	n    Wn         W n        W0n        R V n        R V n        W@n        . V n        R V n        R # r   )_processr  r,  	stdo_task	stde_taskr|  all_futuresrB  )r   r{  r  r,  r|  s   &&&&&r&   r  TestSubprocess.__init__>  s6     9=9=&35AE
r(   c                   V ^8  d   QhRR/# )r!   r"   r2  r$   )r%   s   "r&   r'   r}  J  s     & &2 &r(   c                	`    \         P                  ! 4       V n        \        V P                  4      # r   )r  QueuerB  rc  r   s   &r&   stdout_linesTestSubprocess.stdout_linesJ  s    ]]_
$**%%r(   c               $    V ^8  d   QhRRRRRR/# )r!   rr  rs  r  r   r"   zCT.Tuple[T.Optional[T.Awaitable[str]], T.Optional[T.Awaitable[str]]]r$   )r%   s   "r&   r'   r}  N  s'     . .#."-.3X.r(   c                	p  a  R  V 3R llpR R lpS P                   fm   S P                  e_   V! VS P                  P                  V4      p\        P                  ! V4      S n         S P
                  P                  S P                   4       S P                  e   S P                  \        P                  P                  8w  d_   V! VS P                  P                  V4      p\        P                  ! V4      S n
        S P
                  P                  S P                  4       S P                   S P                  3# )c               (    V ^8  d   QhRRRRRRRR/# 	r!   rr  rs  r@  rA  r  r   r"   rV   r$   )r%   s   "r&   r'   0TestSubprocess.communicate.<locals>.__annotate__R  s1     	L 	LY 	L';	L-8	L=A	Lr(   c                \   <"   \        VSP                  V4      G R j  xL
 V n        R #  L5ir   )rP  rB  r  )rr  r@  r  r   s   &&&r&   collect_stdo0TestSubprocess.communicate.<locals>.collect_stdoR  s"      *&$**lKKDIKs   ,*,c               (    V ^8  d   QhRRRRRRRR/# r  r$   )r%   s   "r&   r'   r  W  s1     	F 	FY 	F';	F-8	F=A	Fr(   c                F   "   \        VR V4      G R j  xL
 V n        R #  L5ir   )rP  r1  )rr  r@  r  s   &&&r&   collect_stde0TestSubprocess.communicate.<locals>.collect_stdeW  s      *&$EEDIEs   !!)r  r  r  r  r  r  rg   r,  
subprocessr   r  )r   rr  r  r  r  decode_coros   f&&   r&   communicateTestSubprocess.communicateN  s    	L 	L
	F >>!dkk&=&tT]]-A-A<PK$22;?DN##DNN3;;"t{{g6H6H6O6O'O&tT]]-A-A<PK$22;?DN##DNN3~~t~~--r(   c                   V ^8  d   QhRR/# r  r$   )r%   s   "r&   r'   r}  i  s     .( .(_ .(r(   c           	     		  "   V P                   p \        4       '       d1   \        P                  ! R RRR\	        VP
                  4      .4       EM!\        P                  ! VP
                  \        P                  4       \        \        P                  4      ;_uu_ 4        \        P                  ! VP                  4       RR7      G Rj  xL
  RRR4       VP                  e^    V P                   '       d   V P                   P#                  4        V P$                  '       d   V P$                  P#                  4        R# R# \        P                  ! VP
                  \        P&                  4       \        \        P                  4      ;_uu_ 4        \        P                  ! VP                  4       ^R7      G Rj  xL
  RRR4       VP                  e^    V P                   '       d   V P                   P#                  4        V P$                  '       d   V P$                  P#                  4        R# R# VP)                  4        \        \        P                  4      ;_uu_ 4        \        P                  ! VP                  4       ^R7      G Rj  xL
  RRR4       VP                  e^    V P                   '       d   V P                   P#                  4        V P$                  '       d   V P$                  P#                  4        R# R#  V P                   '       d   V P                   P#                  4        V P$                  '       d   V P$                  P#                  4        R# R#  EL  + '       g   i     EL; i EL  + '       g   i     EL; i EL  + '       g   i     EL
; i  \*         dx    TP                  4       G Rj  xL 
   T P                   '       d   T P                   P#                  4        T P$                  '       d   T P$                  P#                  4        R# R# i ; i  T P                   '       d   T P                   P#                  4        T P$                  '       d   T P$                  P#                  4        i i ; i5i)taskkillz/Fz/Tz/PIDg      ?r  Nz!Test process could not be killed.)r  r/   r  runr=   pidr  killpgr   SIGTERMr   r  rq  wait_forr  r>  r  cancelr  SIGKILLkillProcessLookupError)r   r{  s   & r&   _killTestSubprocess._killi  s     MM)	(||
D$AEE
KL 		!%%0 g2233!**1668SAAA 4<<+2 ~~~%%'~~~%%' 3 		!%%0'..//&&qvvx;;; 0||'$ ~~~%%'~~~%%'  FFH'..//&&qvvx;;; 0||' ~~~%%'~~~%%'  7 ~~~%%'~~~%%' ; B 433 < 0// < 0//
 " 	 &&(NN~~~%%'~~~%%' 	 ~~~%%'~~~%%' s  RBN)  *M'
M$M'N) &=R$RAN) *M><M;=M>N) =RR41N) %*NNNN) +=R)R=RR$M''M8	2	N) ;M>>N			N) NN&	 	N) )P+O
P+P. =RR*P++P. .>R	-R		Rc                    V ^8  d   QhRRRR/# )r!   rr  rs  r"   rV   r$   )r%   s   "r&   r'   r}    s     , ,y ,T ,r(   c                	b  "   V P                   pV P                  P                  \        P                  ! VP                  4       4      4        \        V P                  VP                  R 7      G Rj  xL
  V P                   '       d   V P!                  4        TP"                  ;'       g    ^ Tn        R#  LC  \        P                   dS    T;P                  T P                  4       G Rj  xL 
 ;'       g    R,          un	        \        P                  Tn         L\        P                   dT    T;P                  T P                  4       G Rj  xL 
 ;'       g    R,          un	        \        P                  Tn         ELi ; i  T P                   '       d   T P!                  4        i i ; i5i)r  Nr   )r  r  rg   r  r  r  rw  r  rq  r  r  r   r   r   rM  r   r|  r>  )r   rr  r{  s   && r&   r  TestSubprocess.wait  s+    MM 5 5affh ?@	#t//FFF   ",,++! G## 	*!!4::<%7%7%=%=2=!!))DH%% 	,!!4::<%7%7%=%=2=!!++DH	,
   "  s   A
F/$B7 1B52B7 64F/+
F/5B7 74F+C.
,F8#FF F0 FE
F#F F FF %F,,F/)r  r  r|  rB  r  r,  r  r  r   )
r   r   r   r   r  r  r  r  r  r   r$   r(   r&   ry  ry  =  s"    
F&.6.(`, ,r(   ry  c                      ] tR tRtR R lt]R R l4       tR R ltR R	 lt]R
 R l4       t	]R R l4       t
]R R l4       tR R ltR R ltR R ltRtR# )SingleTestRunneri  c               (    V ^8  d   QhRRRRRRRR/# )	r!   rr  r   r   r  r   r=   r  argparse.Namespacer$   )r%   s   "r&   r'   SingleTestRunner.__annotate__  s1     :h :h. :h5E :hS :h,:hr(   c           	     	   Wn         W@n        V P                  4       V n        V P                  '       Ed;   V P                   P                  '       Ed   \
        P                  P                  V P                   P                  R .,           4      VR,          ,           VR&   . pV P                   F  pVP                  V4       \
        P                  P                  V4      P                  R4      '       g   KJ  \        TV P                   P                   Uu. uF  pRV,           NK  	  upVP                  RR 4      P                  R4      ,           V P                   P                  4      VR&    M	  RV9  g   VR,          '       g6   VP                   '       g$   \#        \$        P&                  ! ^^4      4      VR&   RV9  g   VR,          '       g   RVR&   R	V9  g   VR	,          '       g   R
VR	&   RV9  g   VR,          '       g   R
VR&   RV9  g   VR,          '       g4    \(        P+                  V P                  4      ^ ,          pRV9   d   RVR&   V P                  P.                  '       g4   V P                   P0                  e   V P                   P0                  ^ 8:  d   Rp	M~V P                  P2                  f   V P                   P0                  p	MOV P                  P2                  ^ 8:  d   Rp	M1V P                   P0                  V P                  P2                  ,          p	VP4                  ;'       d=    V P                  P6                  ^8  ;'       d    V P                  P.                  '       * p
VP8                  ;'       g    V P                  P8                  ;'       d    V P                  P:                  '       * p\=        WW9WV P                  P.                  4      V n        R# u upi   \,         d     ELi ; i)r   PATHwinezZ:WINEPATH;MALLOC_PERTURB_ASAN_OPTIONSz0halt_on_error=1:abort_on_error=1:print_summary=1UBSAN_OPTIONSzChalt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1MSAN_OPTIONSVALGRIND_OPTSvalgrindz--error-exitcode=1N) rr  r  _get_cmdr@  extra_pathsr  pathsepr   rg   r  basenamer-  r   r`  rK   r  	benchmarkr=   randomrandintTestHarnessget_wrapper
IndexErrorra   r  timeout_multiplierr  num_processesr  r  r  runobj)r   rr  r   r   r  winecmdrD   r{  wrapper_namer  r  r  s   &&&&&       r&   r  SingleTestRunner.__init__  s   	==?888		---**//$))*?*?2$*FG#f+UCKGXXq!77##A&11&99&8+/99+@+@A+@a+@ACGGJXZD[DaDabeDff		))'C
O
   S(4E0F0FPWPaPaPa%(3)?%@C!" #%S-@-@"TC3&c/.B.B#hC #%S-@-@"gC #%S-A-A*66t||DQG-+?C( <<###tyy'8'8'@DIIDUDUYZDZG\\,,4ii''G\\,,1Gii''$,,*I*IIG&&jj4<<+E+E+IjjRVR^R^RjRjNj<<774<<#7#7SSASAS=SddllNfNfgY B<  s   O*"2O/ /O>=O>c                   V ^8  d   QhRR/# r  r$   )r%   s   "r&   r'   r    s     ( (k (r(   c                	.    V P                   P                  # r   )r  r  r   s   &r&   r  SingleTestRunner.console_mode  s    {{'''r(   c                   V ^8  d   QhRR/# r!   r"   zT.Optional[T.List[str]]r$   )r%   s   "r&   r'   r    s      6 r(   c                	   V P                   P                  ^ ,          pV P                  P                  '       dR   V P                   P                  '       d6   \
        P                  P                  V4      '       g   \        RV: R24      hVP                  R4      '       d    RR.V P                   P                  ,           # V P                   P                  '       g0   \        V4      '       d   R.V P                   P                  ,           # V P                   P                  '       Ed*   V P                   P                  '       Ed   V P                   P                  '       d   V P                   P                  f   R# V P                   P                  '       d   V P                   P                  P                  4       '       g;   Rp\        VP!                  V P                   P                  P"                  4      4      hV P                   P                  P%                  4       V P                   P                  ,           #  V P                   P                  # V P                   P                  '       d   V P                   P                  '       gk   \'        4       '       d[   \(        P*                  ! V P                   P                  ^ ,          4      pVe$   W0P                   P                  R	,          ,          pV# V P                   P                  # )
r   zThe test program z7 does not exist. Cannot run tests before building them.z.jarjavaz-jarmonoNzmThe exe_wrapper defined in the cross file {!r} was not found. Please check the command and/or add it to PATH.:ry   NN)rr  rR  r  
no_rebuildcmd_is_builtr  r  isfiler   r  is_cross_builtrT  
cmd_is_exeneeds_exe_wrapperexe_wrapperfoundr%   r   get_commandr/   r   _shebang_to_cmd)r   	testentrymsgtest_cmds   &   r&   _get_test_cmdSingleTestRunner._get_test_cmd  s   IIOOA&	<<"""tyy'='='=bggnnU^F_F_"3I=@w xyyf%%F#diioo55)))mI.F.F8diioo--YY!!!dii&>&>&>499C^C^C^yy$$, %%% yy,,2244TC'

4993H3H3M3M(NOOyy,,88:TYY__LL & yy YY###DII,@,@,@Z\\&66tyyq7IJH#IIOOB//Oyyr(   c                   V ^8  d   QhRR/# r  r$   )r%   s   "r&   r'   r  
  s     @ @1 @r(   c                	    V P                  4       pV'       g   R # \        P                  V P                  4      V,           # r   )r  r  r  r  )r   r  s   & r&   r  SingleTestRunner._get_cmd
  s0    %%'&&t||4x??r(   c                   V ^8  d   QhRR/# r    r$   )r%   s   "r&   r'   r    s     ' 'T 'r(   c                	.    V P                   P                  # r   )r  r  r   s   &r&   r  SingleTestRunner.is_parallel  s    {{&&&r(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r    s        c  r(   c                	.    V P                   P                  # r   )r  r   r   s   &r&   visible_nameSingleTestRunner.visible_name  s    {{r(   c                   V ^8  d   QhRR/# )r!   r"   r"  r$   )r%   s   "r&   r'   r    s     # # #r(   c                	.    V P                   P                  # r   )r  r  r   s   &r&   r  SingleTestRunner.timeout  s    {{"""r(   c                    V ^8  d   QhRRRR/# )r!   rj  rk  r"   r  r$   )r%   s   "r&   r'   r    s     
 
 
7 
r(   c                	  "   V P                   fI   RV n        VP                  V P                  4       V P                  P	                  4        V P                  # V P                   V P
                  P                  ,           V P                  P                  ,           pV P                  P                  V4       VP                  V P                  4       V P                  W4      G R j  xL
  V P                  #  L5i)Nz7Not run because cannot execute cross compiled binaries.)r@  r  log_start_testr  r  rr  cmd_argsr  	test_argsrn  _run_cmd)r   rj  r@  s   && r&   r  SingleTestRunner.run  s     88QDI""4;;/KK%%' {{	 ((TYY///$,,2H2HHCKKc"""4;;/-----{{ .s   C#C8%C6&C8c               4    V ^8  d   QhRRRRRRRRRRR	R
RR/# )r!   rq   r  stdinr"  r  r,  r   r  cwdr   r"   ry  r$   )r%   s   "r&   r'   r  (  sK     !U !U+ !U !U&5!U?N!U#3!U:I!UN\!Ur(   c               	  a a
"   S P                   P                  '       dX   \        P                  ! \        P                  4      o
\        P                  ! \        P                  \        P
                  4       R  V 3R llpR V
V 3R llp\        P                  ! TRTRTRTRTRTR	\        4       '       g   TMR
/ G R
j  xL
 p	\        YT\        4       '       g   VR7      # R
R7      #  L)5i)c                   V ^8  d   QhRR/# ra  r$   )r%   s   "r&   r'   6SingleTestRunner._run_subprocess.<locals>.__annotate__1  s     		 		D 		r(   c                    < S P                   P                  '       d6   \        P                  ! \        P                  \        P                  4       R # \
        P                  ! 4        R # r   )r  ra   r   SIGINTSIG_DFLr  setsidr   s   r&   
preexec_fn4SingleTestRunner._run_subprocess.<locals>.preexec_fn1  s6    ||''' fmmV^^<
 		r(   c                   V ^8  d   QhRR/# ra  r$   )r%   s   "r&   r'   r  <  s     	F 	FT 	Fr(   c                    < SP                   P                  '       d(   \        P                  ! \        P                  S 4       R # R # r   )r  ra   r   r  )previous_sigint_handlerr   s   r&   r|  5SingleTestRunner._run_subprocess.<locals>.postwait_fn<  s+    ||'''fmm-DE (r(   r  r  r,  r   r  r   N)r  r,  r|  )
r  ra   r   	getsignalr  SIG_IGNr  create_subprocess_execr/   ry  )r   rq   r  r  r,  r   r  r   r|  r{  r  s   f&$$$$$   @r&   _run_subprocess SingleTestRunner._run_subprocess(  s      <<###&,&6&6v}}&E#MM&--8		 			F 	F
 00$ f7<f8>f 9?f 69	f
 69f OYllJ`df f av=G\\+U 	UOSU 	Ufs   B<C, C**C,c               $    V ^8  d   QhRRRRRR/# )r!   rj  rk  r@  r  r"   rV   r$   )r%   s   "r&   r'   r  K  s!     * *m *+ *$ *r(   c           	     	  "   V P                   \        P                  J d   R pR pR pM\        P                  P
                  p\        P                  P                  pV P                  P                  '       g7   V P                  P                  '       g   \        P                  P                  M\        P                  P                  p. pV P                  P                  \        P                  J d   V P                  P                   pV P                  P"                  '       dI   \$        P&                  P)                  V P                  P"                  V P                  P                   4      pVP+                  RV R24       V P-                  W&,           VVVV P                  P.                  V P                  P"                  R7      G R j  xL
 pV P                  P                  '       d_   V P                   \        P                  JdA   V P                  P1                  WP3                  4       4      p	\        P4                  ! V	4      p
MR p
VP7                  V P                  V P                   4      w  rVP9                  V P                  4      G R j  xL
  V
'       d   V
G R j  xL
  V'       d   VG R j  xL
  V'       d   VG R j  xL
  V P                  P;                  4        R #  EL LY LI L9 L)5i)Nz--gtest_output=xml:r  )r  r  r,  r   r  )r  r   r   r  r  DEVNULLPIPEr  rK   r  r  r   rr  r  r   GTESTr   r  r  r  r   rg   r	  r   r>  r  r  r  r  r  )r   rj  r@  r  r  r,  	extra_cmd	gtestnamer{  
parse_coro
parse_taskr  r  s   &&&          r&   r  SingleTestRunner._run_cmdK  s     7 77EFF&&..E'',,F||)))$++2K2K2K ''..'',,  "$	99!3!33		Iyy   GGLL):):DIINNK	29+TBC&&s-2.4.4+/;;??+/99+<+< ' > > ;;$$$):):+BYBY)Y**7NN4DEJ ..z:JJ }}T[[$:K:KL	ffT[[!!!OOOO/> 	" s   A5K28K2BK2$B%K2	K'
K2*B&K2K*K2K2"K,#K2/K24K.5K2K2K0!K2*K2,K2.K20K2)r@  r  r  r  rr  N)r   r   r   r   r  r  r  r  r  r  r  r  r  r	  r  r   r$   r(   r&   r  r    sz    :hx ( (8@ ' '     # #
!UF* *r(   r  c                     ] tR tRtR R ltR R ltR R ltR R	 ltR
 R ltR R lt	R R lt
R R ltR R ltR R ltR R ltR R lt]R R l4       t]R R l4       tR R ltRDR! R" lltR# R$ ltR% R& ltR' R( lt]R) R* l4       t]R+ R, l4       tR- R. ltR/ R0 ltRER1 R2 lltR3 R4 ltR5 R6 lt]R7 R8 l4       t R9 R: lt!R; R< lt"R= R> lt#R? R@ lt$RA RB lt%RCt&R # )Fr  ix  c                   V ^8  d   QhRR/# )r!   r  r  r$   )r%   s   "r&   r'   TestHarness.__annotate__y  s     ' ' 2 'r(   c                	   Wn         . V n        ^ V n        ^ V n        ^ V n        ^ V n        ^ V n        ^ V n        ^ V n        ^ V n	        ^ V n
        RV n        . V n        \        VP                  4      V n        V P                  P!                  V P                  4       RV n        RV n        RV n        V P                   P(                  '       EdD   V P                   P*                  '       Eg'   Rp\,        P.                  P1                  V P                   P2                  RV P                   P(                  4      V n        V P                   P4                  '       dA   \,        P.                  P7                  V P9                  V P                   4      ^ ,          4      pMBV P                   P:                  '       d'   V P                   P:                  P=                  RR4      pV'       d1   V ;P&                  RVP=                  RR4      ,           ,          un        V P?                  4        V PA                  4        \C        4       pV PD                   F'  pVPF                   F  pVPI                  V4       K  	  K)  	  \K        V4      V n&        R# )r   FNz
meson-logsr%  r  r   r   )'r  r  
fail_countexpectedfail_countunexpectedpass_countsuccess_count
skip_countignored_counttimeout_countr  name_max_lenis_runloggersr  rp   console_loggerrg   r  ninjalogfile_baselogbasera   r  r  r   re   rc   r  r  ro   r  prepare_buildload_metadatar  rM  rr  r  rb   rR  )r   r  namebasessr  r<   s   &&    r&   r  TestHarness.__init__y  s   35"#$%!+-+G,=,=>D//0!"&
-1<<(@(@(@H "T\\__lDLLL`L` aD||###77++D,<,<T\\,J1,MN###<<--55c3?!!S8+;+;C+E%EE!UAWWq	   2hr(   c                   V ^8  d   QhRR/# )r!   r"   z'ConsoleLogger'r$   )r%   s   "r&   r'   r    s     # #O #r(   c                	B    V P                   '       g   Q hV P                   # r   )r#  r   s   &r&   get_console_loggerTestHarness.get_console_logger  s     """"""""r(   c                   V ^8  d   QhRR/# ra  r$   )r%   s   "r&   r'   r    s      t r(   c                	    V P                   P                  '       d   R # \        P                  ! 4       V n        V P                  '       g$   \        R4       \        P                  ! ^4       R # R # )Nz%Can't find ninja, can't rebuild test.)r  r  r
   detect_ninjar$  r   r3   exitr   s   &r&   r'  TestHarness.prepare_build  sI    <<""",,.
zzz9:
 HHSM r(   c                   V ^8  d   QhRR/# ra  r$   )r%   s   "r&   r'   r    s      t r(   c                	f   \         P                  ! 4       p \         P                  ! V P                  P                  4       V P                  P
                  '       g   \        P                  ! V P                  R R.,           RR7      P                  pRV9  d   RV9  d   V P                  P                  '       d   \        P                  M\        P                  p\        P                  ! V P                  R.,           VP                  4       R7      pVP                  ^ 8w  d$   \        RV P                  P                  : 24      h\         P"                  ! \         P                  ! 4       4      V n        V P                  P&                  '       g&   V P$                  P(                  V P                  n        V P                  P*                  '       d   V P-                  R4      V n        MV P-                  R	4      V n        \         P                  ! V4       R
#   \         P                  ! T4       i ; i)z-nzbuild.ninjaT)capture_outputs   ninja: no work to do.s   samu: nothing to do)r  zCould not configure zmeson_benchmark_setup.datzmeson_test_setup.datN)r  getcwdchdirr  re   r  r  r  r$  r  rb   r3   r,  filenor>  r   r	   load
build_dataro   test_setup_default_namer  
load_testsrM  )r   startdirteststdor  rets   &    r&   r(  TestHarness.load_metadata  s\   99;	HHT\\__% <<***%>>$**m7L*L]abii+8;@V^f@f)-):):):3::

D$..}o)Edkkm\C~~*+.B4<<??BU,VWW#jj5DO<<%%%%)__%L%L"||%%%!__-HI
!__-CD
HHXBHHXs'   AH AH <CH A H -H H0c                    V ^8  d   QhRRRR/# )r!   	file_namer=   r"   rW  r$   )r%   s   "r&   r'   r    s      C ,E r(   c                	H   \        R 4      V,          pVP                  4       '       g%   \        RV P                  P                  : R24      hVP                  R4      ;_uu_ 4       p\        \        P                  ! V4      4      pRRR4       V#   + '       g   i     X# ; i)zmeson-privatez
Directory z- does not seem to be a Meson build directory.rbN)	r   is_filer   r  re   r  r\  pickler;  )r   rD  datafiler  rV  s   &&   r&   r>  TestHarness.load_tests  sy    (94!!*T\\__,??l mnn]]4  A!&++a.1D ! ! s   & BB!	c                   V ^8  d   QhRR/# )r!   r"   rk  r$   )r%   s   "r&   r'   r    s      = r(   c                	    V # r   r$   r   s   &r&   	__enter__TestHarness.__enter__  s    r(   c               (    V ^8  d   QhRRRRRRRR/# )r!   exc_typer  	exc_value	tracebackr"   rV   r$   )r%   s   "r&   r'   r    s(       5 U t r(   c                	&    V P                  4        R # r   )close_logfiles)r   rP  rQ  rR  s   &&&&r&   __exit__TestHarness.__exit__  s    r(   c                   V ^8  d   QhRR/# ra  r$   )r%   s   "r&   r'   r    s     # # #r(   c                	Z    V P                    F  pVP                  4        K  	  R V n        R # r   )r"  r  r#  r   r  s   & r&   rT  TestHarness.close_logfiles  s!    AGGI "r(   c                    V ^8  d   QhRRRR/# )r!   rr  zT.Optional[TestSerialisation]r"   zbuild.TestSetupr$   )r%   s   "r&   r'   r    s     	: 	:#@ 	:_ 	:r(   c                	   R V P                   P                  9   d   V P                   P                  V P                  P                  9  d/   \        P
                  ! RV P                   P                   R24       V P                  P                  V P                   P                  ,          # VP                  R ,           V P                   P                  ,           pW P                  P                  9  d<   \        P
                  ! RV P                   P                   RVP                   R24       V P                  P                  V,          # )r%  zUnknown test setup 'z'.zTest setup 'z' not found from project ')r  ro   r<  test_setupsr3   r3  r  )r   rr  	full_names   && r&   get_test_setupTestHarness.get_test_setup  s    $,,$$$||!!)D)DD/0B0B/C2FG??..t||/A/ABB))C/$,,2D2DDI ; ;;<(:(:';;UVZVgVgUhhjkl??..y99r(   c               $    V ^8  d   QhRRRRRR/# )r!   r  r  rr  r   r"   r  r$   )r%   s   "r&   r'   r    s$     6 6+= 6EV 6[k 6r(   c                	   V P                  V4      pVP                  '       g   VP                  Vn        VP                  '       d   R Vn        R Vn        VP                  f   VP                  Vn        VP
                  f   VP                  Vn        M(VP                  '       d   \        P                  ! R4       VP                  P                  \        P                  P                  4       4      # )TzBConflict: both test setup and command line specify an exe wrapper.)r_  r_   ra   r  r  rc   r  r3   r3  r   get_envr  r$  copy)r   r  rr  currents   &&& r&   merge_setup_optionsTestHarness.merge_setup_options  s    %%d+{{{!++GK;;;"&G"GO%%-)0)C)CG& ??"%11GO   HHYZ{{""2::??#455r(   c               $    V ^8  d   QhRRRRRR/# )r!   rr  r   	iterationr>   r"   r  r$   )r%   s   "r&   r'   r    s#     : :$5 :# :JZ :r(   c                	x   V P                  V4      p\        V P                  4      pV P                  P                  '       d   V P	                  WA4      pM\
        P                  P                  4       pVP                  P                  V4      pVP                  V4       VP                  '       dk   VP                  '       dY   VP                  '       dG   VP                  P                  4       '       d'   \        VP                  P!                  4       4      VR &   \#        V^,           4      VR&   \%        WW44      # )MESON_EXE_WRAPPERMESON_TEST_ITERATION)get_pretty_suiter   r  ro   rf  r  r$  rd  r   rc  r  r  r  r  r  r   r  r=   r  )r   rr  ri  r   r  r   r  s   &&&    r&   get_test_runnerTestHarness.get_test_runner  s    $$T*4<<(<<**79C**//#C88##C(

8D$:$:$:   T%5%5%;%;%=%='01A1A1M1M1O'PC#$&))a-&8"#499r(   c                    V ^8  d   QhRRRR/# )r!   rC   r  r"   rV   r$   )r%   s   "r&   r'   r    s        '  d  r(   c                	`   VP                   \        P                  J d   V ;P                  ^,          un        EMVP                   \        P                  J d   V ;P
                  ^,          un        EM\VP                   \        P                  J d   V ;P                  ^,          un        EM#VP                   \        P                  J d   V ;P                  ^,          un	        MVP                   \        P                  \        P                  \        P                  09   d   V ;P                  ^,          un        MVP                   \        P                  J d   V ;P                  ^,          un        M[VP                   \        P                   J d   V ;P"                  ^,          un        M#\$        P&                  ! RVP                    24       VP                   P)                  4       '       d   V P*                  P-                  V4       V P.                   F  pVP1                  W4       K  	  R# )ry   z!Unknown test result encountered: N)r   r   r   r  r   r  r   r  r   r  r   r   r   r  r   r  r   r  r3   r3  r   r  rg   r"  r  )r   rC   r  s   && r&   process_test_resultTestHarness.process_test_result  sW   ::+++!#ZZ:??*OOq OZZ:---!#ZZ:==(!#ZZJOOZ-=-=z?S?STTOOq OZZ:222##q(#ZZ:444%%*%HH8EF::##**62AEE$ r(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r  $  s     ) ) )r(   c                	>    \        \        V P                  4      4      # r   )rL   r=   r  r   s   &r&   numlenTestHarness.numlen#  s    3t'((r(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r  (  s     # # #r(   c                	6    ^V P                   ,          ^,           # )r!   )rv  r   s   &r&   r  TestHarness.max_left_width'  s    4;;""r(   c                    V ^8  d   QhRRRR/# )r!   r&  r>   r"   r=   r$   )r%   s   "r&   r'   r  +  s     O Os Os Or(   c                	R    R P                  V P                  VV P                  R7      # )z{num:{numlen}}/{testcount} )rv  r&  	testcount)r%   rv  r  )r   r&  s   &&r&   get_test_num_prefixTestHarness.get_test_num_prefix+  s,    ,334;;8;>Boo 4 O 	Or(   Nc               8    V ^8  d   QhRRRRRRRRR	R
RR
RR
RR/# )r!   rC   r  r   r#   r  r>   r	  r=   r  r   r
  r  r"   r$   )r%   s   "r&   r'   r  0  sR     . .W . .".. %. '	.
 &.
 25.r(   c                	d   Vf   V P                  VP                  4      p\        W0P                  4      pVf   VP                  pW0P
                  ,           ^,           \        V4      ,
          \        V4      ,
          \        V4      ,
          pVR\        ^V4      ,          ,          pVfq   RP                  VP                  P                  V4      VP                  V P                  ^,           R7      pVP                  4       p	V	'       d   VRV	,           ,          pWE,           V,           V,           # )Nr   z{res} {dur:{durlen}.2f}s)r   r  r  r  )r~  r&  rP  r  r   r   rF   r%   r   r   r/  r  r  )
r   rC   r   r  r	  r  r
  r  extra_mid_widthr  s
   &&&&&&&&  r&   r%   TestHarness.format0  s     <++FJJ7D ^-@-@A>[[F(+<+<<q@8FCSSV^_cVddgopvgww#A///=.55JJ''1OO,,q0 6 2E ((*G(}v%--r(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r  L  s     3 3 3r(   c                	   R V P                   RV P                  RV P                  RV P                  RV P                  RV P
                  RV P                  /p. pVP                  4        Fc  w  r4V^ 8  g1   VP                  R4      '       g   VP                  R4      '       g   K<  VP                  VR	P                  V4      ,           4       Ke  	  R
P                  RP                  V4      4      # )zOk:                zExpected Fail:     zFail:              zUnexpected Pass:   zSkipped:           zIgnored:           zTimeout:           zOk:zFail:z{:<4}z
{}
rz   )r  r  r  r  r  r  r  r%  r-  rg   r%   r   )r   rm  r  rC   r  s   &    r&   r  TestHarness.summaryL  s    
!3!3
!8!8

!:!:

!3!3
!3!3
 $]]_MFqyF--e448I8I'8R8Rvu(==> - tyy122r(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r  ^  s     P PS Pr(   c                	^    V P                   V P                  ,           V P                  ,           # r   )r  r  r  r   s   &r&   total_failure_countTestHarness.total_failure_count^  s"    !:!::T=O=OOOr(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   r  a  s     ): ):c ):r(   c                	  a a S P                   '       d   \        R 4      hRS n         S P                  4       pVS P                  8w  d   TM. pV'       g   ^ # S P                  P
                  '       g]   \        S P                  S P                  P                  VS P                  P                  4      '       g   \        P                  ! ^}4       \        V 3R lV 4       4      S n        \        S P                  P                  \!        V4      S P                  P"                  ,          4      S P                  n        \$        P&                  ! 4       p \$        P(                  ! S P                  P                  4       . p\+        S P                  P"                  4       Fx  oVP-                  VV 3R lV 4       4       S^ 8X  g   K(  \        R V 4       4      S n        \0        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      S n        Kz  	  \!        V4      S n        S P7                  V4       \$        P(                  ! V4       S P9                  4       ^ 8  d   ^# ^ #   \$        P(                  ! T4       i ; i)z*Test harness object can only be used once.Tc              3  X   <"   T F  p\        SP                  V4      4      x  K!  	  R # 5ir   )rF   rm  )r\  rr  r   s   & r&   r^  #TestHarness.doit.<locals>.<genexpr>v  s&     XRW$)>)>t)D E ERWs   '*c              3  H   <"   T F  pSP                  VS4      x  K  	  R # 5ir   )rn  )r\  rr  r  r   s   & r&   r^  r  ~  s!     Ot33D!<<s   "c           	   3     "   T F6  p\        \        \        VP                  ;'       g    ^c4      4      4      x  K8  	  R# 5i)c   N)rL   r=   r>   r  r\  runners   & r&   r^  r    s6      0G>EF 14CFNN<P<Pb8Q4R0S0S>Es   >A c              3  Z   "   T F!  pVP                   \        P                  Jx  K#  	  R # 5ir   )r  r   r   r  s   & r&   r^  r    s)      ,C:A -3,?,?{GYGY,Y:As   )+F)r!  RuntimeError	get_testsrM  r  r  rebuild_depsr$  re   r  r3   r3  rP  r   minr  rL   r[   r  r8  r9  rangeextendr  r.  r  r  	run_testsr  )r   rM  rebuild_only_testsr?  runnersr  s   f    @r&   doitTestHarness.doita  s   ;;;KLL  ',tzz&9Ur||&&&|DJJYkmqmymy  nD  nD  0E  0E HHSMXRWXX%()C)C),Udll6I6I)I&K"99;	HHT\\__%02G4<<../OOO6,/ 0G>E0G -GD) ), ,C:A,C ,C:A,C )CD% 0 "'lDONN7#HHX,,.2q99 HHXs   A.I( 3I( :?I( (J c                    V ^8  d   QhRRRR/# )r!   rr  r=   r"   zT.Tuple[str, str]r$   )r%   s   "r&   r'   r    s      # *; r(   c                	    R V 9   d7   V P                  R ^4      p\        V4      ^8X  g   Q hV^ ,          V^,          3# V R3# )r%  r   )rK   rL   )rr  rK   s   & r&   split_suite_stringTestHarness.split_suite_string  sF    %<KKQ'Eu:?"?8U1X%%"9r(   c               $    V ^8  d   QhRRRRRR/# )r!   rr  r   rR  r  r"   r#   r$   )r%   s   "r&   r'   r    s"      .   r(   c                	   V F  p\         P                  V4      w  r4V P                   FV  p\         P                  V4      w  rgV'       g   W6V09   d     R # K0  V'       g   Wt8X  d     R # KD  Wc8X  g   KL  Wt8X  g   KT    R # 	  K  	  R# )TF)r  r  rr  )rr  rR  rr  	prj_matchst_matchprjstprjsts   &&      r&   test_in_suitesTestHarness.test_in_suites  sz    E$/$B$B5$I!Y'::5A	   "I-# ."~# & 'BN#% $ * r(   c                    V ^8  d   QhRRRR/# )r!   rr  r   r"   r#   r$   )r%   s   "r&   r'   r    s      "3  r(   c                	   \         P                  WP                  P                  4      '       d   R # V P                  P                  '       d*   \         P                  WP                  P                  4      # V P                  P
                  '       d9   V P                  V4      p\         P                  WP                  4      '       d   R # R# )FT)r  r  r  rj   rf   ro   r_  )r   rr  ro   s   && r&   test_suitableTestHarness.test_suitable  s    %%dLL,G,GHH<<&&& --dLL4O4OPP<<''-E))$0D0DEEr(   c                    V ^8  d   QhRRRR/# )r!   rM  rW  r"   z*T.Generator[TestSerialisation, None, None]r$   )r%   s   "r&   r'   r    s      3U 3U%> 3UCm 3Ur(   c              #    "   / pV P                   P                   F;  pRV9   d)   VP                  R^R7      w  rEVR8X  d   RpVR8X  d   RpMRTrTRW$V3&   K=  	  V F^  p\        V4       FL  w  rE\	        VP
                  V4      '       g   K#  \	        VP                  V4      '       g   KA  RW$V3&   Vx   K\  	  K`  	  VP                  4        F  w  w  rEpV'       d   K  V RV 2pV FY  p\	        VP
                  V4      '       g   K!  \	        VP                  V4      '       g   K?  \        P                  ! V R24        Kv  	  \        V R24      h	  R	# 5i)
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%  )maxsplitr   rr   FTz( test name is redundant and was not usedz" test name does not match any testN)r  rq   rK   rb   r   r  r   r%  r   warningr   )r   rM  patternsrH   subprojr   r  was_useds   &&      r&   tests_from_argsTestHarness.tests_from_args  sD     57<<$$C cz #		#	 :2:Db=!G #S(-Ht_% %  A "&h1>>7338M8M04Ht_-G	 "0  *2)9%OWX8 	4&)A q~~w77GAFFD<Q<Qu,T%UV  )C50R)STT *:s$   BEE+0E %E
E(0Ec                    V ^8  d   QhRRRR/# )r!   	errorfilezT.Optional[T.IO]r"   rW  r$   )r%   s   "r&   r'   r    s      #3 ?X r(   c                	4   V P                   '       g   \        R VR7       . # V P                    Uu. uF  q P                  V4      '       g   K  VNK  	  ppV P                  P                  '       d   \        V P                  V4      4      pV P                  P                  '       dV   V P                  P                  w  rEV\        V4      8  d   \        RV R\        V4       R24      hW4^,
          RV1,          pV'       g   \        RVR7       . # V# u upi )zNo tests defined.)r  znumber of slices (z) exceeds number of tests (r   NzNo suitable tests defined.)
rM  r   r  r  rq   rb   r  slicerL   r   )r   r  r  rM  	our_slicenslicess   &&    r&   r  TestHarness.get_tests  s    zzz%I6I JJ@Jq*<*<Q*?J@<<--e45E<<!%!3!3IU#$'9'B]^abg^h]iij%klla-001E.Y?I As   DDc                   V ^8  d   QhRR/# ra  r$   )r%   s   "r&   r'   r    s       r(   c                	L    V P                    F  pVP                  4        K  	  R # r   )r"  re  rY  s   & r&   flush_logfilesTestHarness.flush_logfiles  s    AGGI r(   c                   V ^8  d   QhRR/# ra  r$   )r%   s   "r&   r'   r    s     f ft fr(   c                	p   V P                   '       g   R # V P                  P                  \        V P                   R,           4      4       V P                  P                  \	        V P                   R,           4      4       V P                  P                  \        V P                   R,           RR7      4       R # )Nz
.junit.xmlz.jsonz.txtsurrogateescaper   )r%  r"  rg   rF  r9  r  r   s   &r&   open_logfilesTestHarness.open_logfiles  s|       L):):\)IJK.t/@/@7/JKL.t/@/@6/IRcder(   c                    V ^8  d   QhRRRR/# )r!   r  r  r"   r  r$   )r%   s   "r&   r'   r    s      / K r(   c                	    V P                   '       d7   V P                  R .pV P                  ^8  d   V. RO,          pVR.,          pV# V P                  '       d   V P                  pV# . pV# )rn   z--args)-exr  r  quit)r_   r`   r[   rc   )r  wraps   & r&   r  TestHarness.get_wrapper  sl    ;;;$$i0D~~!55XJD
 	 ___??D  Dr(   c                    V ^8  d   QhRRRR/# )r!   rr  r   r"   r=   r$   )r%   s   "r&   r'   r  !  s      %6 3 r(   c                	   VP                   '       g   Q R 4       h\        P                  VP                   ^ ,          4      ^ ,          p. pVP                    F:  p\        P                  V4      ^,          pV'       g   K)  VP                  V4       K<  	  V RVP                   2pV'       d   RP                  V4      pV RV 2pV# )z<Interpreter should ensure there is always at least one suiter%  +z - )rr  r  r  rg   r   r   )r   rr  r  rR  r  r<   r   s   &&     r&   rm  TestHarness.get_pretty_suite!  s    zzzYYYz,,TZZ];A> A..q1!4Aqa   a		{# ASD6?Dr(   c                    V ^8  d   QhRRRR/# r!   r  zT.List[SingleTestRunner]r"   rV   r$   )r%   s   "r&   r'   r  /  s     
" 
"!9 
"d 
"r(   c                	b    V P                  4        \        P                  R 8X  d?   \        P                  R8  d*   \        P
                  ! \        P                  ! 4       4       \        P                  ! V P                  V4      4       V P                  4        R#   T P                  4        i ; i)win32N)      )
r  r3   r+   version_infor  set_event_loop_policyWindowsProactorEventLoopPolicyr  
_run_testsrT  )r   r  s   &&r&   r  TestHarness.run_tests/  ss    		"  ||w&3+;+;f+D--g.T.T.VWKK01!D!s   BB B.c               (    V ^8  d   QhRRRRRRRR/# )	r!   rr  r  r<   r=   r   r   r"   rV   r$   )r%   s   "r&   r'   r  ;  s(     . . .C .j .T .r(   c                	P    V P                    F  pVP                  WW#4       K  	  R # r   )r"  rz  )r   rr  r<   r   r  s   &&&& r&   rz  TestHarness.log_subtest;  s    AMM$a- r(   c                    V ^8  d   QhRRRR/# )r!   rr  r  r"   rV   r$   )r%   s   "r&   r'   r  ?  s     % %7 %t %r(   c                	N    V P                    F  pVP                  W4       K  	  R # r   )r"  rv  )r   rr  r  s   && r&   r  TestHarness.log_start_test?  s    ALL$ r(   c                    V ^8  d   QhRRRR/# r  r$   )r%   s   "r&   r'   r  C  s     _% _%(@ _%T _%r(   c                	  a a	a
aaaaaa"   \         P                  ! S P                  P                  4      o\	        4       o/ oR o\	        \
        R7      o\         P                  ! 4       oR V	VV V3R llpR VV3R llpR VVV 3R llo
R V
VV3R	 llo	R
 V	VV 3R llpR V	V
VVVVV 3R llpS P                   F  pVP                  S 4       K  	  \        P                  R8w  d   \        P                  ! ^ 4      \        P                  ! 4       8X  d"   SP                  \        P                   V4       M SP                  \        P                   V4       SP                  \        P"                  V4        V F  pVP$                  '       g   \'        S4      G Rj  xL
  \         P(                  ! V! V4      4      pSP+                  V4       VP,                  SV&   VP/                  V4       VP$                  '       g   \1        V4      G Rj  xL
  S P                  P2                  ^8  g   K  S P4                  '       g   K   M	  \'        S4      G Rj  xL
  \        P                  R8w  d?   SP7                  \        P                   4       SP7                  \        P"                  4       S P                   F  pVP9                  S 4      G Rj  xL
  K  	  R#  EL@ L L L  \        P                  R8w  d?   SP7                  \        P                   4       SP7                  \        P"                  4       S P                   F  pTP9                  S 4      G Rj  xL 
  K  	  i ; i5i)F)r   c                    V ^8  d   QhRRRR/# )r!   rr  r  r"   rV   r$   )r%   s   "r&   r'   ,TestHarness._run_tests.<locals>.__annotate__K  s     	' 	'!1 	'd 	'r(   c                0  <"   S;_uu_4       GR j  xL
  S'       g.   SP                   P                  ^8  d&   SP                  '       d    R R R 4      GR j  xL
  R # V P                  S4      G R j  xL
 pSP	                  V4       SP                   P
                  pV'       d9   SP                  V8  d(   VP                  P                  4       '       d   S! 4        R R R 4      GR j  xL
  R #  L L L L  + GR j  xL 
 '       g   i     R # ; i5ir   )r  r[   r  r  rr  maxfailr   r   )rr  r   r  cancel_all_testsinterruptedr   	semaphores   &  r&   run_test(TestHarness._run_tests.<locals>.run_testK  s      yy4<<#6#6#:t !yy !HHTN*((-,,..t'9cggnn>N>N$& !yy + !yyys   DC1D5C9C9DC3DC93C542C9'0C9C9D*C7+D3D5C97D9D	?D 
D	D		Dc                    V ^8  d   QhRRRR/# )r!   r  rf  r"   rV   r$   )r%   s   "r&   r'   r  U  s     	 	 	D 	r(   c                   < V P                  4       '       g   V P                  4        SP                  V 4        SV  R #   \         d     R # i ; ir   )rp  rC   r  KeyError)r  ri  r  s   &r&   	test_done)TestHarness._run_tests.<locals>.test_doneU  sB    ;;==
NN1!!$ s   ? AAc                    V ^8  d   QhRRRR/# )r!   warnr#   r"   rV   r$   )r%   s   "r&   r'   r  ^  s     	 	$ 	4 	r(   c                   < SP                  4       pSP                  V4       V '       d=   SP                  4        \        P                  ! R P                  SV,          4      4       SV VP                  4        R# )z CTRL-C detected, interrupting {}N)popleftrg   r  r   r  r%   r  )r  re  ri  r  r   s   & r&   cancel_one_test/TestHarness._run_tests.<locals>.cancel_one_test^  sY    __&FNN6"##%?FF}U[G\]^f%MMOr(   c                   V ^8  d   QhRR/# ra  r$   )r%   s   "r&   r'   r  g  s     	' 	'$ 	'r(   c                 0   < R oS'       d   S ! R4       K  R# )TFNr$   )r  r  r  s   r&   r  0TestHarness._run_tests.<locals>.cancel_all_testsg  s    K&  r(   c                   V ^8  d   QhRR/# ra  r$   )r%   s   "r&   r'   r  m  s     	 	 	r(   c                 v   < S'       d   R # SP                  4        \        P                  ! R4       S ! 4        R # )NzReceived SIGTERM, exiting)r  r   r  )r  r  r   s   r&   sigterm_handler/TestHarness._run_tests.<locals>.sigterm_handlerm  s(    !LL45r(   c                   V ^8  d   QhRR/# ra  r$   )r%   s   "r&   r'   r  t  s     	# 	# 	#r(   c                   < S'       d   R # SP                  SP                  4       4       \        S4      \        8X  dL   SR,          S^ ,          ,
          ^8  d0   SP	                  4        \
        P                  ! R4       S ! 4        R # S'       d   S! R4       R # SP	                  4        \
        P                  ! R4       RoR # )NzCTRL-C detected, exitingTr   )rg   r  rL   	MAX_CTRLCr  r   r  )r  r  ctrlc_timesr  r  r  r   s   r&   sigint_handler.TestHarness._run_tests.<locals>.sigint_handlert  s     tyy{+;9,R;q>1QTU1U##%78 "%##%78"r(   r  N)r  	Semaphorer  r  r   r  r  r"  rn  r3   r+   r  getpgidgetpidadd_signal_handlerr   r  r  r  rw  r  rg   r  add_done_callbackr  r[   r  remove_signal_handlerr  )r   r  r  r  r   r  r  r  re  r  r  r  ri  r  r  r  r  s   f&       @@@@@@@@r&   r  TestHarness._run_testsC  se    %%dll&@&@A	+0757&+9&='')	' 	'	 		 		' 	'	 		# 	#$ AGGDM  <<7"zz!}		+''~F''G##FNNOD	%!)))&w/// ..x/?@v&(.(;(;f%((3)))"6***<<&&*t " w'''||w&**6==9**6>>:\\hhtn$$ " 0 + ( %	 ||w&**6==9**6>>:\\hhtn$$ "s   E,M+8%K& KA"K& K& K K& 1K& K& K"K& A6M+K$
M+K&  K& "K& $M+&A7M(M 

M((M+)r<  r  r#  r  r  r  r  r!  r%  r"  r   r  r$  r  r  r  rR  r  rM  r  r  )r   r   NNNr   )'r   r   r   r   r  r.  r'  r(  r>  rM  rU  rT  r_  rf  rn  rr  r  rv  r  r~  r%   r  r  r  r   r  r  r  r  r  r  r  r  rm  r  rz  r  r  r   r$   r(   r&   r  r  x  s    'R#6#
	:6": . ) ) # #O
.83$P):V    0 3Uj(f  
".%_% _%r(   r  c                    V ^8  d   QhRRRR/# )r!   thr  r"   r#   r$   )r%   s   "r&   r'   r'     s      ; 4 r(   c                    V P                  \        P                  R 7      pV F  p\        V P	                  V4      4       K  	  V'       * # ))r  )r  r3   r,  r   rm  )r  rM  r  s   &  r&   
list_testsr    s;    LL3::L.Eb!!!$% 9r(   c          
     ,    V ^8  d   QhRRRRRRRRR	R/# )
r!   r$  r  re   r=   rM  rW  r  r#   r"   r$   )r%   s   "r&   r'   r'     s2     + + + +5N +[_ +dh +r(   c                Z  a R  V3R llp\        V 4      ^ 8  g   Q h\        4       pV'       d   \        P                  P	                  SR4      p\        VRR7      ;_uu_ 4       p\        P                  ! V4      pRRR4       \        4       p	/ p
X F+  pVR,           Uu. uF  pV! V4      NK  	  upWR,          &   K-  	  V FF  pVP                   F3  pW9   d   K  V	P                  V4       VP                  W,          4       K5  	  KH  	  M+V'       d   VP                  R4       MVP                  R	4       V'       g   R
# \        P                  ! V RS.,           \        V4      ,           4      P                  pV^ 8w  d   \        RS 24       R# R
#   + '       g   i     EL"; iu upi )c                    V ^8  d   QhRRRR/# )r!   r  r=   r"   r$   )r%   s   "r&   r'   "rebuild_deps.<locals>.__annotate__  s      S S r(   c                   < \         P                  P                  V S4      p \         P                  R 8w  d!   V P	                  \         P                  R 4      p V # )rJ   )r  r  relpathr  r  )r  re   s   &r&   convert_path_to_target,rebuild_deps.<locals>.convert_path_to_target  s;    wwtR(66S=<<,Dr(   zmeson-info/intro-targets.jsonr  )r  Nr  idzmeson-benchmark-prereqzmeson-test-prereqTrd   zCould not rebuild F)rL   r  r  r  r   r  rA  r;  dependsr  r  r  r  sortedr>  r   )r$  re   rM  r  r  targetstargets_filefptargets_infor  intro_targetstargetr  r  drA  s   &f&&            r&   r  r    s^     u:>>%Gww||B(GH,11R99R=L 2 "e24"F  
++-+A 'q)++-M,' # AYY<q!}/0	   KK01KK+, 
..$+fWo=
>
I
IC
ax"2$'(? 211+-s   $FF(F%	c                    V ^8  d   QhRRRR/# )r!   r  r  r"   r>   r$   )r%   s   "r&   r'   r'     s     5 5# 5 5r(   c                   V P                   '       g   V P                  '       d   ^V n        V P                  '       d    V P                  '       d   \        R4       ^# RpV P                  '       d)   RV n        V P                  '       d   \        R4       ^# RpV P                  '       d   RV n        V P                  '       d   V P                  ^ ,          pVe5   \        VRR7      pVP                  4       '       g   \        RV: 24       ^# \        P                  ! V P                  4      p\        P                  ! RVP                  P                   P"                  P%                  \'        R	4      4      4      p\)        V4       V P*                  '       ga   VP                  P                   P"                  P%                  \'        R
4      4      pVR8X  d	   RV n        MVR8w  d   \        R4       RV n        \-        V 4      ;_uu_ 4       p V P.                  '       d   \1        V4      uuRRR4       # VP3                  4       uuRRR4       #   \4         dQ   p\        R4       \6        P8                  P;                  R4      '       d   Th\        T4        Rp?RRR4       ^# Rp?ii ; i  + '       g   i     R# ; i)ry   z3Can not be both quiet and verbose at the same time.NTz9Must not specify both a wrapper and gdb at the same time.r_   )silentz"Could not find requested program: r#   vsenvbackendnoner$  zEOnly ninja backend is supported to rebuild tests before running them.z!Meson test encountered an error:
MESON_FORCE_BACKTRACE)r  ra   r  r  r  r   r_   rc   r   r  r	   r;  re   rX  castenvironmentcoredataoptstoreget_value_forr   r   r  r  rb   r  r  r   r  r$  r`  )r  	check_binexer   
need_vsenvr)  r  r  s   &       r&   r  r    s   G/// !7===CDI{{{"???MN	OOA&	i5yy{{6ymDE

7::A 6 6 ? ? M MiX_N` abJ
--((11??	)@TUf!%GYZ!%G	W		
	|||!"~ 
	 779	 
	
  	67zz~~566a 
	
	 
		s6   J-I5IJ*=J%J-%J**J--J>	c                    V ^8  d   QhRRRR/# )r!   rq   r  r"   r>   r$   )r%   s   "r&   r'   r'   	  s        r(   c                ~    \         P                  ! R R7      p\        V4       VP                  V 4      p\	        V4      # )z
meson test)prog)rM   ArgumentParserrv   
parse_argsr  )rq   rU   r  s   &  r&   run_with_argsr9  	  s4    $$,7F&%Gw<r(   )r
  r  r  r   r  r  ))r   r  )      )r      )      )      )i  i  )i  i  ))i i )i i )i i )i i )i i )i i )i i )i i )i	 i	 )i
 i
 )i i )i i )i i )i i )i i )i i r   )~__conditional_annotations__
__future__r   pathlibr   collectionsr   
contextlibr   rd  r   r   rM   r  r!  enumrA  r  rH  r+   r  rZ  r   r  shlexr3   r  typingrX  r@   xml.etree.ElementTreeetreer  rO  r   r	   r
   r   r.  r   r   r   rY  mesonlibr   r   r   r   r   r   r   r   r  r   programsr   backend.backendsr   r   TYPE_CHECKINGUnionTYPE_TAPResultr  r  r  r   r   
maxunicoder  chrUNENCODABLE_XML_CHR_RANGESr[  r   r8  r+  r-  r/   r4   rB   rF   rS   rv   r   r   r   r   r   quoter   r   uniqueEnumr   r   r   r_  r  r  r  r9  rF  r  r  r  EXITCODEr  r  r  TAPr  RUSTrq  r   rP  rT  r\  rc  r  rw  ry  r  r  r  r  r  r9  )lowhighrA  s   00@r&   <module>r\     s  
 # "           	    	    
    " "    J 1/ / /  % =???WW 1 2N     	66 2 6 >>W"" $2 3 MddLc[c#c(1SYK8Lcd **TBGG4N,O%ORV%VW zz>?**>?!$ CCD!S!S!D 25Un-8: $/
  .||{{HF	N 	 	$)) 	 	 /* /* /*dz@ z@x .Z \!J \!~ 6  6F4 4$QB: QBhD DNg  4C  ,// 0? ( 1=  ,,, -3 3j /9  ,** ++' +Z 0;  ,++ ,I<"6H
Bm, m,^I IXj% j%X+Z5nE es   N