
    z
@h#                         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dS )    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dS )TestResultsc                     g | _         g | _        g | _        g | _        g | _        g | _        g | _        g | _        g | _        d| _	        d| _
        g | _        t                      | _        g | _        d S )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.11/test/libregrtest/results.py__init__zTestResults.__init__   st     	#%!#)+%'&(!
/1!& %8:[[
#%    c                 B    | j          o| j         o| j         o| j         S N)r   r   r!   r"   r&   s    r(   is_all_goodzTestResults.is_all_good&   s8    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,   sh    DITX.T\1B1BBd*++,.1$2B.C.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   s5    	48T\4;K(* + + + 	+r*   c                    g }| j         r|                    d           nH|r| j        r|                    d           n)|                                 r|                    d           | j        r|                    d           | j        r|                    d           |s|                    d           d                    |          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 	)LL#### 	)$"2 	)LL''''   	)LL((( 	(LL'''? 	'LL&&& 	$LL###yyr*   c                     d}| j         rt          }n[| j        rt          }nL|r| j        rt
          }n;|                                 rt          }n|r| j        rt          }n| 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 	)(HH 		)+HH 	)$"2 	)+HH   	),HH 	)DJ 	)*HH_ 	)(Hr*   resultruntestsc                    |j         }|j        }|j        }|j        xt          j        k    r | j                            |           nCxt          j        k    r6 | j	                            |           | j
                            |           nxt          j        k    r | j                            |           nxt          j        k    r | j                            |           nxt          j        k    r	 d| _        nt          j        k    r| j                            |           nb	 |                    |          r5| j                            |           | j
                            |           nt+          d|j                  |j        t          j        k    rd| _        |                                r9|s7|j        t+          d          | j                            |j        |f           |j        | j                            |j                   |r| j                            |           |j        }|r|                     |           d S d S )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   sS   $	#4l	  ++++""""" ''	222"))&1111##I....&&&&&$++I6666"""""#'  """!((3333##$455 NHOOI...&--f5555$%LFL%L%LMMM<5+++"DO))++ 	AE 	A& !:;;;O""FOY#?@@@<#J!!&,/// 	)J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                   |                                }|r
|||j        <   =|rj| 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 	AFLL)*** 6688K A5@ !12 	'N!!$(+++HNN""$$$$$&&&e.//r*   rU   c                     dd l mc m} |D ]Z}	 | j                            |                    |                     1# |j        $ r t          |t          j	                    w xY wd S )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444	 	s	   -='A$filenamec                 T   | j         sd S dd lmc m} |                    d          }dddd}| j         D ]^}|                    |           |D ]D}	 ||xx         t          |                    |d                    z  cc<   5# t          $ r Y Aw xY w_|	                                D ](\  }}|
                    |t          |                     )t          |d          5 }|                    |          D ]}	|                    |	           	 d d d            d S # 1 swxY w Y   d S )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   ! 	F*********zz,'' q99' 	 	EKK  1IIIUYYq!__!5!55IIII!   D LLNN 	  	 DAqHHQA(D!! 	Q__T**  



	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   1B
BB!.DD!$D!ra   quietprint_slowestc           	         |ro| j                             d           t                       t          d           | j         d d         D ]'\  }}t          d|dt          |                     (g }t	          |          |                                 z
  }|                    |ddf           |s:|                    | j        dd	f           |                    | j        dd
f           |                    | j	        ddf           |                    | j
        ddf           |                    | j        ddf           |                    | j        ddf           |D ]d\  }}	}
|r\t                       t          t          |          |	          }	t          |
                    |	                     t!          |           e| j        rw|sut                       t          t          | j                  d          }| d}|                                 rt          | j                  dk    rd| }t          |           | j        rt                       t          d           d S d S )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    	GO   ...GGG%&&&#'?3B3#7 G G	4DDD/)*D*D*DEFFFF	e**t00222 	'6=9::: 	^dlFMBCCCd2F<[\]]]$+V5GHIII 	$*F4ijkkk$*mU;<<<$(FL9:::4= 	& 	&0J
L &"3z??J??
l))*55666*%%%9 	U 	GGGTY00D===D  "" %s49~~'9'9$d}}$KKK 	>GGG<=====	> 	>r*   first_runtestsfilteredc                    | j         }d|j        d}|r| d}|g}|j        r|                    d|j        d           |j        r|                    d|j        d           t          dd                    |                      | 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 ].\  }	}
|
r'|                    |	 dt          |
                      /t          dd                    |                      d S )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   
)eo))) 	('''D> 	:MM8en888999= 	8MM6U]6667770chhv..00111 Y$*\%t'8:	 #c9%%&&c||% 	%,--E$$U$$D 	('''Dtx D,-% 45dj!T./
 		6 		6KD%  644E

445555388F#3#3556666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      sa       & & &$) ) )* * *
+ + +     $   (%
 (%h (% (% (% (%T( ( ( .2 0 0 0d 0eIz<Q6R 0 0 0 0($s)    G    2(>I (>d (>4 (> (> (> (>T#7h #7$ #7 #7 #7 #7 #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      s    



       0 0 0 0 0 0 0 0 0 0' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '      t7 t7 t7 t7 t7 t7 t7 t7 t7 t7r*   