
    F\hP&                         S SK r S SKrS SKJr  SSKJr  SSKJrJrJ	r	J
r
  SSKJrJrJrJrJrJrJrJr  \(       a  S SKJr  SrS	rS
rSrSr " S S5      rg)    N)TYPE_CHECKING   )RunTests)State
TestResult	TestStatsLocation)StrPathTestName	TestTupleTestList
FilterDict	printlistcountformat_duration)Element               c                   :   \ rS rSrS!S jrS\4S jrS\\   4S jr	S\4S jr
S\S\4S	 jrS\S
\S\4S jrS\S\SS4S jrS\R&                  4S jrS\4S jrSS.S\S\\\4   4S jjrS\\   SS4S jrS\SS4S jrS\S\S\SS4S jrS\S\SS4S jrS r g)"TestResults   returnNc                     / U l         / U l        / U l        / U l        / U l        / U l        / U l        / U l        / U l        SU l	        SU l
        / U l        [        5       U l        / U l        [        5       U l        g )NF)badgood	rerun_badskippedresource_deniedenv_changedrun_no_testsrerunrerun_resultsinterrupted
worker_bug
test_timesr   statstestsuite_xmlsetcovered_linesselfs    //usr/lib/python3.13/test/libregrtest/results.py__init__TestResults.__init__   sv     	#%!#)+%'&(!
/1!& %8:[
.0,/E    c                     U R                   (       + =(       aA    U R                  (       + =(       a)    U R                  (       + =(       a    U R                  (       + $ N)r   r    r&   r'   r-   s    r/   is_all_goodTestResults.is_all_good-   sA    HH ($((((( '	)r2   c                    [        U R                  5      [        U R                  5      -  [        U R                  5      -  [        U R                  5      -  [        U R
                  5      -  [        U R                  5      -  $ r4   )r+   r   r   r    r!   r"   r#   r-   s    r/   get_executedTestResults.get_executed3   sg    DIITXX.T\\1BBd**+,.1$2B2B.CDd''() 	*r2   c                     [        U R                  U R                  U R                  U R                  U R
                  45      (       + $ r4   )anyr   r   r    r&   r"   r-   s    r/   no_tests_runTestResults.no_tests_run8   s<    		488T\\4;K;K((* + + 	+r2   fail_env_changedc                    / nU R                   (       a  UR                  S5        OPU(       a#  U R                  (       a  UR                  S5        O&U R                  5       (       a  UR                  S5        U R                  (       a  UR                  S5        U R
                  (       a  UR                  S5        U(       d  UR                  S5        SR                  U5      $ )NFAILUREzENV CHANGEDzNO TESTS RANINTERRUPTEDz
WORKER BUGSUCCESSz, )r   appendr"   r<   r&   r'   join)r.   r>   states      r/   	get_stateTestResults.get_state<   s    88LL#$"2"2LL'  LL(LL'??LL&LL#yyr2   
fail_rerunc                 V   SnU R                   (       a  [        nU$ U R                  (       a  [        nU$ U(       a  U R                  (       a  [
        nU$ U R                  5       (       a  [        nU$ U(       a  U R                  (       a  [        nU$ U R                  (       a  [        nU$ )Nr   )r   EXITCODE_BAD_TESTr&   EXITCODE_INTERRUPTEDr"   EXITCODE_ENV_CHANGEDr<   EXITCODE_NO_TESTS_RANr$   EXITCODE_RERUN_FAILr'   )r.   r>   rH   exitcodes       r/   get_exitcodeTestResults.get_exitcodeN   s    88(H  +H  $"2"2+H    ,H
 	 DJJ*H  __(Hr2   resultruntestsc                    UR                   nUR                  nUR                  nUR                  =[        R
                  :X  a    U R                  R                  U5        GOb=[        R                  :X  a9    U R                  R                  U5        U R                  R                  U5        GO=[        R                  :X  a    U R                  R                  U5        O=[        R                  :X  a    U R                  R                  U5        O=[        R                  :X  a	    SU l        O[        R"                  :X  a  U R$                  R                  U5        Og UR'                  U5      (       a7  U R(                  R                  U5        U R                  R                  U5        O[+        SUR                  < 35      eUR                  [        R,                  :X  a  SU l        UR1                  5       (       aF  U(       d?  UR2                  c  [+        S5      eU R4                  R                  UR2                  U45        UR6                  b%  U R6                  R9                  UR6                  5        U(       a  U R                  R                  U5        UR:                  (       a%  U R:                  R=                  UR:                  5        UR>                  nU(       a  U RA                  U5        g g )NTzinvalid test state: zresult.duration is None)!	test_namer$   r>   rE   r   PASSEDr   rC   ENV_CHANGEDr"   r%   SKIPPEDr    RESOURCE_DENIEDr!   rA   r&   DID_NOT_RUNr#   	is_failedr   
ValueError
WORKER_BUGr'   has_meaningful_durationdurationr(   r)   
accumulater,   updatexml_data	add_junit)r.   rR   rS   rU   r$   r>   rb   s          r/   accumulate_resultTestResults.accumulate_result^   s   $$	#44ll		  +"""  ''	2""))&1##I.&&&$$++I6"""#' ""!!((3##$455HHOOI.&&--f5$';FLL;K%LMM<<5+++"DO))++E& !:;;OO""FOOY#?@<<#JJ!!&,,/JJi(%%f&:&:;??NN8$ r2   c                 l    U R                    Vs0 s H  oS_M     nn[        R                  " US9$ s  snf )Nr   )counts)r,   traceCoverageResults)r.   locrg   s      r/   get_coverage_results TestResults.get_coverage_results   s6    $($6$67$6Sq&$67$$F33 8s   1c                 ,    [        U R                  5      $ r4   )boolr%   r-   s    r/   
need_rerunTestResults.need_rerun   s    D&&''r2   T)clearrq   c                   / n0 nU R                    HE  nUR                  UR                  5        UR                  5       nU(       d  M7  XSUR                  '   MG     U(       as  U R                  R                  U R                  5        U R                  R                  5         U R                  R                  5         U R                   R                  5         [        U5      U4$ r4   )
r%   rC   rU   get_rerun_match_testsr   extendr   rq   r"   tuple)r.   rq   testsmatch_tests_dictrR   match_testss         r/   prepare_rerunTestResults.prepare_rerun   s    ((FLL))* 668K{5@!1!12 ) NN!!$((+HHNN""$$$&e.//r2   rb   c                     SS K Js  Jn  U H.  n U R                  R	                  UR                  U5      5        M0     g ! UR                   a    [        U[        R                  S9  e f = f)Nr   )file)
xml.etree.ElementTreeetreeElementTreer*   rC   
fromstring
ParseErrorprintsys
__stderr__)r.   rb   ETes       r/   rc   TestResults.add_junit   sZ    **A""))"--*:;  == hS^^4s	   *?*A)filenamec                 6   U R                   (       d  g SS KJs  Jn  UR	                  S5      nSSSS.nU R                    HC  nUR                  U5        U H)  n XF==   [        UR                  US5      5      -  ss'   M+     ME     UR                  5        H   u  pgUR                  U[        U5      5        M"     [        US5       nUR                  U5       H  n	UR                  U	5        M     S S S 5        g ! [         a     M  f = f! , (       d  f       g = f)Nr   
testsuites)rv   errorsfailureswb)r*   r}   r~   r   r   rC   intgetr\   itemsr+   stropentostringlistwrite)
r.   r   r   roottotalssuitekvfss
             r/   write_junitTestResults.write_junit   s    !!**zz,' q9''EKKIUYYq!_!55I  ( LLNDAHHQA # (D!Q__T*
 + "! "  "!s   %C9*D
9
DD

Drv   quietprint_slowestc           	         U(       ab  U R                   R                  SS9  [        5         [        S5        U R                   S S  H!  u  pE[        SU< S[        U5      < 35        M#     / n[	        U5      U R                  5       -
  nUR                  [        U5      SS45        U(       d<  UR                  U R                  SS	45        UR                  U R                  SS
45        UR                  U R                  SS45        UR                  U R                  SS45        UR                  U R                  SS45        UR                  U R                  SS45        U HS  u  pn
U(       d  M  [        5         [        [        U5      U	5      n	[        U
R!                  U	5      5        [#        U5        MU     U R$                  (       as  U(       dl  [        5         [        [        U R$                  5      S5      nU S3nU R'                  5       (       a  [        U R$                  5      S:  a  SU 3n[        U5        U R(                  (       a  [        5         [        S5        g g )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(   sortr   r   r+   r8   rC   sortedr    r!   r#   r"   r$   r   r   lenformatr   r   r5   r&   )r.   rv   r   r   	test_timer   	all_testsomitted
tests_list
count_texttitle_formattexts               r/   display_resultTestResults.display_result   s   OO   .G%&#'??3B#7	D/)*DEF $8 	e*t0022 	&/6=ABdllFMBCd22F<[\]$++V5GHI 	$**F4ijk$**mU;<$((FL9:4=0JLz"3z?J?
l))*56*% 5> 99UGTYY0DV4=D  ""s499~'9dV}$KG<= r2   first_runtestsfilteredc                    U R                   nSUR                  S 3nU(       a  U S3nU/nUR                  (       a  UR                  SUR                  S 35        UR                  (       a  UR                  SUR                  S 35        [        SSR                  U5       35        U R                  U R                  U R                  U R                  U R                  U R                  /n[        [        [        U5      5      nSU 3nUR                  (       d  [        UR                   5      nU SU 3nU(       a  U S3nU/nS	U R                  4S
U R                  4SU R                  4SU R"                  4SU R                  4SU R                  44 H-  u  pU
(       d  M  UR                  U	 S[        U
5       35        M/     [        SSR                  U5       35        g )Nzrun=,z (filtered)z	failures=zskipped=zTotal tests:  /failedr"   r    r!   r$   r#   =zTotal test files: )r)   	tests_runr   rC   r    r   rD   r   r   r$   r"   r#   summapr   foreverrv   r!   )r.   r   r   r)   r   reportr   runntestnamerv   s              r/   display_summaryTestResults.display_summary   s   

eooa()V;'D>>MMIennQ%789==MMHU]]1$567chhv./01 YY$**\\%%t'8'8:	 #c9%&cU|%%,,-EV1UG$DV;'Dtxx D,,-% 4 45djj!T../
KD uaE
|45
 	"388F#3"456r2   )r   r,   r"   r   r&   r$   r   r%   r!   r#   r    r)   r(   r*   r'   )r   N)!__name__
__module____qualname____firstlineno__r0   rn   r5   r+   r   r8   r<   r   rF   r   rP   r   r   rd   rh   ri   rk   ro   ru   r   r   ry   listrc   r
   r   r   r   __static_attributes__ r2   r/   r   r      s   2()T )*c(m *
+d + $  3  $T t   *%
 *%h *%4 *%X4e&;&; 4(D ( .2 0d 0eIz<Q6R 0($s)  G  2(>I (>d (>4 (>TX (>T#7h #7$ #74 #7r2   r   )r   rh   typingr   rS   r   rR   r   r   r   r	   utilsr
   r   r   r   r   r   r   r   r}   r   rJ   rL   rM   rN   rK   r   r   r2   r/   <module>r      sZ    
     : :' ' ' -
      |7 |7r2   