
    Rh#                     |    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    HH ($((((( '	)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    DIITXX.T\\1BBd**+,.1$2B2B.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<    		488T\\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    88LL#$"2"2LL' LL(LL'??LL&LL#yy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    88(H  +H  $"2"2+H   ,H
 	 DJJ*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                  |       nxt        j                  k(  r | j                  j                  |       nxt        j                  k(  r	 d| _        nt        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ll		  +"""  ''	2""))&1##I.&&&$$++I6"""#' ""!!((3##$45HHOOI.&&--f5$';FLL;K%LMM<<5+++"DO))+E& !:;;OO""FOOY#?@<<#JJ!!&,,/JJi(??NN8$ 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LL))* 668K5@ !1!12	A NN!!$((+HHNN""$$$&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""))"--*:;	 == hS^^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   !!**zz,' q9'' 	EKK 1IUYYq!_!55I	 LLN 	 DAqHHQ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   OO   .G%&#'??3B#7 G	4D/)*DEFG 	e*t0022 	'6=9:dllFMBCd22F<[\]$++V5GHI 	$**F4ijk$**mU;<$((FL9:4= 	&0J
L"3z?J?
l))*56*%	& 99UGTYY0DV4=D  "s499~'9dV}$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   

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../
 		6KD% aE
|45		6 	"388F#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 0d 0eIz<Q6R 0($s) G 2(>I (>d (>4 (>T#7h #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*   