Ë
    òT•j¨#  ã                   ó|   — d dl Z ddlmZ ddlmZmZmZ ddlmZm	Z	m
Z
mZmZmZmZmZ dZdZdZd	Zd
Z G d„ d«      Zy)é    Né   )ÚRunTests)ÚStateÚ
TestResultÚ	TestStats)ÚStrPathÚTestNameÚ	TestTupleÚTestListÚ
FilterDictÚ	printlistÚcountÚformat_durationé   é   é   é   é‚   c                   ó¨   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zde	de
fd	„Zd
„ Zddœdedeeef   fd„Zdee   fd„Zdefd„Zdededefd„Zde
defd„Zy)ÚTestResultsc                 óØ   — g | _         g | _        g | _        g | _        g | _        g | _        g | _        g | _        g | _        d| _	        d| _
        g | _        t        «       | _        g | _        y )NF)ÚbadÚgoodÚ	rerun_badÚskippedÚresource_deniedÚenv_changedÚrun_no_testsÚrerunÚrerun_resultsÚinterruptedÚ
worker_bugÚ
test_timesr   ÚstatsÚtestsuite_xml©Úselfs    ú//usr/lib/python3.12/test/libregrtest/results.pyÚ__init__zTestResults.__init__   sl   € ØˆŒØ ˆŒ	Ø#%ˆŒØ!#ˆŒØ)+ˆÔØ%'ˆÔØ&(ˆÔØ!ˆŒ
Ø/1ˆÔà!&ˆÔØ %ˆŒØ8:ˆŒÜ“[ˆŒ
à#%ˆÕó    c                 óv   — | j                    xr+ | j                   xr | j                   xr | j                   S ©N)r   r   r!   r"   r&   s    r(   Úis_all_goodzTestResults.is_all_good&   sA   € Ø—H‘H�ò (ØŸ™Ð$ò(à×(Ñ(Ð(ò(ð Ÿ™Ð'ð	)r*   c                 ó  — t        | j                  «      t        | j                  «      z  t        | j                  «      z  t        | j                  «      z  t        | j
                  «      z  t        | j                  «      z  S r,   )Úsetr   r   r   r   r   r   r&   s    r(   Úget_executedzTestResults.get_executed,   sg   € Ü�D—I‘I“¤ T§X¡X£Ñ.´°T·\±\Ó1BÑBÜ�d×*Ñ*Ó+ñ,Ü.1°$×2BÑ2BÓ.CñDä�d×'Ñ'Ó(ñ)ð 	*r*   c                 óˆ   — t        | j                  | j                  | j                  | j                  | j
                  f«       S r,   )Úanyr   r   r   r!   r   r&   s    r(   Úno_tests_runzTestResults.no_tests_run1   s<   € Ü˜Ÿ	™	 4§8¡8¨T¯\©\¸4×;KÑ;KØ×(Ñ(ð*ó +ð +ð 	+r*   c                 ó€  — g }| j                   r|j                  d«       nA|r| j                  r|j                  d«       n!| j                  «       r|j                  d«       | j                  r|j                  d«       | j
                  r|j                  d«       |s|j                  d«       dj                  |«      S )NÚFAILUREzENV CHANGEDzNO TESTS RANÚINTERRUPTEDz
WORKER BUGÚSUCCESSz, )r   Úappendr   r3   r!   r"   Újoin)r'   Úfail_env_changedÚstates      r(   Ú	get_statezTestResults.get_state5   s�   € ØˆØ�8Š8Ø�L‰L˜Õ#Ù $×"2Ò"2Ø�L‰L˜Õ'Ø×ÑÔ Ø�L‰L˜Ô(à×ÒØ�L‰L˜Ô'Ø�?Š?Ø�L‰L˜Ô&ÙØ�L‰L˜Ô#à�y‰y˜ÓÐr*   c                 ó  — d}| j                   rt        }|S | j                  rt        }|S |r| j                  rt
        }|S | j                  «       rt        }|S |r| j                  rt        }|S | j                  rt        }|S )Nr   )r   ÚEXITCODE_BAD_TESTr!   ÚEXITCODE_INTERRUPTEDr   ÚEXITCODE_ENV_CHANGEDr3   ÚEXITCODE_NO_TESTS_RANr   ÚEXITCODE_RERUN_FAILr"   )r'   r:   Ú
fail_rerunÚexitcodes       r(   Úget_exitcodezTestResults.get_exitcodeG   sŽ   € ØˆØ�8Š8Ü(ˆHð ˆð ×ÒÜ+ˆHð ˆñ  $×"2Ò"2Ü+ˆHð ˆð ×ÑÔ Ü,ˆHð
 ˆñ	 ˜DŸJšJÜ*ˆHð ˆð �_Š_Ü(ˆHØˆr*   ÚresultÚruntestsc                 ó6  — |j                   }|j                  }|j                  }|j                  xt        j
                  k(  r | j                  j                  |«       �nWxt        j                  k(  r9 | j                  j                  |«       | j                  j                  |«       �nxt        j                  k(  r | j                  j                  |«       nÛxt        j                  k(  r | j                  j                  |«       n«xt        j                  k(  r	 d| _        n�t        j"                  k(  r| j$                  j                  |«       na	 |j'                  |«      r7| j(                  j                  |«       | j                  j                  |«       nt+        d|j                  ›�«      ‚|j                  t        j,                  k(  rd| _        |j1                  «       r@|s>|j2                  €t+        d«      ‚| j4                  j                  |j2                  |f«       |j6                  �%| j6                  j9                  |j6                  «       |r| j                  j                  |«       |j:                  }|r| j=                  |«       y y )NTzinvalid test state: zresult.duration is None)Ú	test_namer   r:   r;   r   ÚPASSEDr   r8   ÚENV_CHANGEDr   r    ÚSKIPPEDr   ÚRESOURCE_DENIEDr   r6   r!   ÚDID_NOT_RUNr   Ú	is_failedr   Ú
ValueErrorÚ
WORKER_BUGr"   Úhas_meaningful_durationÚdurationr#   r$   Ú
accumulateÚxml_dataÚ	add_junit)r'   rF   rG   rI   r   r:   rU   s          r(   Úaccumulate_resultzTestResults.accumulate_resultW   sÙ  € Ø×$Ñ$ˆ	Ø—‘ˆØ#×4Ñ4Ðà�l‰lØ”—•Ø—	‘	× Ñ  Ö+Ø"”×"Õ"Ø× Ñ ×'Ñ'¨	Ô2Ø×"Ñ"×)Ñ)¨&Ö1Ø”—•Ø—‘×#Ñ# IÕ.Ø&”×&Õ&Ø×$Ñ$×+Ñ+¨IÕ6Ø"”×"Õ"Ø#'�Õ Ü×"Ô"Ø×!Ñ!×(Ñ(¨Õ3ØØ×#Ñ#Ð$4Ô5Ø—H‘H—O‘O IÔ.Ø×&Ñ&×-Ñ-¨fÕ5ä$Ð';¸F¿L¹LÐ;KÐ%LÓMÐMà�<‰<œ5×+Ñ+Ò+Ø"ˆDŒOà×)Ñ)Ô+±EØ�‰Ð&Ü Ð!:Ó;Ð;Ø�O‰O×"Ñ" F§O¡O°YÐ#?Ô@Ø�<‰<Ð#Ø�J‰J×!Ñ! &§,¡,Ô/ÙØ�J‰J×Ñ˜iÔ(à—?‘?ˆÙØ�N‰N˜8Õ$ð r*   c                 ó,   — t        | j                  «      S r,   )Úboolr    r&   s    r(   Ú
need_rerunzTestResults.need_rerun�   s   € Ü�D×&Ñ&Ó'Ð'r*   T)Úclearr[   Úreturnc                óª  — g }i }| j                   D ]?  }|j                  |j                  «       |j                  «       }|sŒ1|||j                  <   ŒA |rs| j                  j                  | j                  «       | j                  j                  «        | j                  j                  «        | j                   j                  «        t        |«      |fS r,   )
r    r8   rI   Úget_rerun_match_testsr   Úextendr   r[   r   Útuple)r'   r[   ÚtestsÚmatch_tests_dictrF   Úmatch_testss         r(   Úprepare_rerunzTestResults.prepare_rerun„   sµ   € ØˆØÐØ×(Ñ(ò 	AˆFØ�L‰L˜×)Ñ)Ô*à ×6Ñ6Ó8ˆKâØ5@Ð  ×!1Ñ!1Ò2ð	Añ à�N‰N×!Ñ! $§(¡(Ô+Ø�H‰H�N‰NÔØ×Ñ×"Ñ"Ô$Ø×Ñ×$Ñ$Ô&ä�e“Ð.Ð/Ð/r*   rU   c                 óØ   — dd l mc m} |D ]-  }	 | j                  j	                  |j                  |«      «       Œ/ y # |j                  $ r t        |t        j                  ¬«       ‚ w xY w)Nr   )Úfile)
Úxml.etree.ElementTreeÚetreeÚElementTreer%   r8   Ú
fromstringÚ
ParseErrorÚprintÚsysÚ
__stderr__)r'   rU   ÚETÚes       r(   rV   zTestResults.add_junit˜   s_   € ß*Ð*Øò 	ˆAðØ×"Ñ"×)Ñ)¨"¯-©-¸Ó*:Õ;ñ	øð —=‘=ò Ü�h¤S§^¡^Õ4Øðús	   �*=½,A)Úfilenamec                 ó  — | j                   sy dd lmc m} |j	                  d«      }ddddœ}| j                   D ]A  }|j                  |«       |D ])  }	 ||xx   t        |j                  |d«      «      z  cc<   Œ+ ŒC |j                  «       D ]   \  }}|j                  |t        |«      «       Œ" t        |d«      5 }|j                  |«      D ]  }	|j                  |	«       Œ 	 d d d «       y # t        $ r Y Œªw xY w# 1 sw Y   y xY w)Nr   Ú
testsuites)ra   ÚerrorsÚfailuresÚwb)r%   rg   rh   ri   ÚElementr8   ÚintÚgetrP   Úitemsr/   ÚstrÚopenÚtostringlistÚwrite)
r'   rq   ro   ÚrootÚtotalsÚsuiteÚkÚvÚfÚss
             r(   Úwrite_junitzTestResults.write_junit¡   s  € Ø×!Ò!àç*Ð*Ø�z‰z˜,Ó'ˆð ¨°qÑ9ˆØ×'Ñ'ò 	ˆEØ�K‰K˜ÔØò �ðØ˜1“I¤ U§Y¡Y¨q°!£_Ó!5Ñ5”Iñð	ð —L‘L“Nò 	 ‰DˆAˆqØ�H‰H�Qœ˜A›Õð	 ô �(˜DÓ!ð 	 QØ—_‘_ TÓ*ò �Ø—‘˜•
ñ÷	ð 	øô "ò Ùðú÷	ð 	ús   Á&C/Â=(C>Ã/	C;Ã:C;Ã>Dra   ÚquietÚprint_slowestc           	      ól  — |rb| j                   j                  d¬«       t        «        t        d«       | j                   d d D ]  \  }}t        d|›dt        |«      ›�«       Œ! g }t	        |«      | j                  «       z
  }|j                  |ddf«       |s<|j                  | j                  dd	f«       |j                  | j                  dd
f«       |j                  | j                  ddf«       |j                  | j                  ddf«       |j                  | j                  ddf«       |j                  | j                  ddf«       |D ]M  \  }}	}
|sŒ
t        «        t        t        |«      |	«      }	t        |
j                  |	«      «       t!        |«       ŒO | j"                  rh|sft        «        t        t        | j"                  «      d«      }|› d�}| j%                  «       rt        | j"                  «      dkD  rd|› �}t        |«       | j&                  rt        «        t        d«       y y )NT)Úreversez10 slowest tests:é
   z- z: Útestz{} omitted:z{} skipped:z{} skipped (resource denied):z{} run no tests:z3{} altered the execution environment (env changed):zre-run testz{}:z
{} failed:z OK.r   zAll z(Test suite interrupted by signal SIGINT.)r#   Úsortrl   r   r/   r0   r8   r   r   r   r   r   r   r   ÚlenÚformatr   r   r-   r!   )r'   ra   r‡   rˆ   Ú	test_timerŒ   Ú	all_testsÚomittedÚ
tests_listÚ
count_textÚtitle_formatÚtexts               r(   Údisplay_resultzTestResults.display_resultº   sô  € ÙØ�O‰O× Ñ ¨Ð Ô.ÜŒGÜÐ%Ô&Ø#'§?¡?°3°BÐ#7ò G‘�	˜4Ý¢D¬/¸)Ô*DÐEÕFðGð ˆ	Ü�e“*˜t×0Ñ0Ó2Ñ2ˆð 	×Ñ˜' 6¨=Ð9Ô:ÙØ×Ñ˜dŸl™l¨F°MÐBÔCØ×Ñ˜d×2Ñ2°FÐ<[Ð\Ô]Ø×Ñ˜$×+Ñ+¨VÐ5GÐHÔIð 	×Ñ˜$×*Ñ*¨FÐ4iÐjÔkØ×Ñ˜$Ÿ*™* m°UÐ;Ô<Ø×Ñ˜$Ÿ(™( F¨LÐ9Ô:à4=ò 	&Ñ0ˆJ˜
 LÚÜ”Ü"¤3 z£?°JÓ?�
Ü�l×)Ñ)¨*Ó5Ô6Ü˜*Õ%ð	&ð �9Š9™UÜŒGÜœ˜TŸY™Y›¨Ó0ˆDØ�V˜4�=ˆDØ× Ñ Ô"¤s¨4¯9©9£~¸Ò'9Ø˜d˜V�}�Ü�$ŒKà×ÒÜŒGÜÐ<Õ=ð r*   Úfirst_runtestsÚfilteredc                 óŒ  — | j                   }d|j                  d›�}|r|› d�}|g}|j                  r|j                  d|j                  d›�«       |j                  r|j                  d|j                  d›�«       t        ddj                  |«      › �«       | j                  | j                  | j                  | j                  | j                  | j                  g}t        t        t        |«      «      }d|› �}|j                  st        |j                   «      }|› d|› �}|r|› d�}|g}d	| j                  fd
| j                  fd| j                  fd| j"                  fd| j                  fd| j                  ffD ]'  \  }	}
|
sŒ	|j                  |	› dt        |
«      › �«       Œ) t        ddj                  |«      › �«       y )Nzrun=ú,z (filtered)z	failures=zskipped=zTotal tests: ú ú/Úfailedr   r   r   r   r   ú=zTotal test files: )r$   Ú	tests_runru   r8   r   rl   r9   r   r   r   r   r   ÚsumÚmaprŽ   Úforeverra   r   )r'   r˜   r™   r$   r–   Úreportr‘   ÚrunÚntestÚnamera   s              r(   Údisplay_summaryzTestResults.display_summaryä   s¿  € à—
‘
ˆØ�e—o‘o aÐ(Ð)ˆÙØ�V˜;Ð'ˆDØ�ˆØ�>Š>Ø�M‰M˜I e§n¡n°QÐ%7Ð8Ô9Ø�=Š=Ø�M‰M˜H U§]¡]°1Ð$5Ð6Ô7Ü�˜cŸh™h vÓ.Ð/Ð0Ô1ð —Y‘Y §¡¨$¯*©*Ø—\‘\Ø×%Ñ% t×'8Ñ'8ð:ˆ	ô ”#”c˜9Ó%Ó&ˆØ�c�Uˆ|ˆØ×%Ò%Ü˜×,Ñ,Ó-ˆEØ�V˜1˜U˜GÐ$ˆDÙØ�V˜;Ð'ˆDØ�ˆà�t—x‘xÐ Ø˜D×,Ñ,Ð-Ø˜Ÿ™Ð%Ø × 4Ñ 4Ð5Ø�d—j‘jÐ!Ø˜T×.Ñ.Ð/ð
ò 		6‰KˆD�%ò Ø—‘   a¬¨E«
 |Ð4Õ5ð		6ô 	Ð" 3§8¡8¨FÓ#3Ð"4Ð5Õ6r*   N)Ú__name__Ú
__module__Ú__qualname__r)   r-   r0   r3   r<   rE   r   r   rW   rZ   rY   r`   r
   r   rd   Úlistr{   rV   r   r†   r—   r¨   © r*   r(   r   r      s¥   „ ò&ò$)ò*ò
+ò ò$ð (%¨
ð (%¸hó (%òT(ð .2ò 0 dð 0°e¸IÀzÐ<QÑ6Ró 0ð( $ s¡)ó ð Gó ð2(> Ið (>°dð (>È4ó (>ðT#7¨hð #7À$ô #7r*   r   )rm   rG   r   rF   r   r   r   Úutilsr   r	   r
   r   r   r   r   r   r>   r@   rA   rB   r?   r   r­   r*   r(   ú<module>r¯      sL   ðÛ 
å ß 0Ñ 0÷'÷ 'ó 'ð Ð ØÐ ØÐ ØÐ ØÐ ÷t7ò t7r*   