
    daf#                     |    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dZdefdZdee   fdZdefdZ	dede
f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)TestResultsreturnNc                     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    3/root/Python-3.12.4/Lib/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+   fail_env_changedc                    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   r4   r"   r#   join)r(   r5   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_CHANGEDr4   EXITCODE_NO_TESTS_RANr    EXITCODE_RERUN_FAILr#   )r(   r5   
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    r5   r<   r   PASSEDr   r:   ENV_CHANGEDr   r!   SKIPPEDr   RESOURCE_DENIEDr   r8   r"   DID_NOT_RUNr   	is_failedr   
ValueError
WORKER_BUGr#   has_meaningful_durationdurationr$   r%   
accumulatexml_data	add_junit)r(   rG   rH   rJ   r    r5   rV   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\   c                   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!   r:   rJ   get_rerun_match_testsr   extendr   r\   r   tuple)r(   r\   testsmatch_tests_dictrG   match_testss         r)   prepare_rerunzTestResults.prepare_rerun   s    (( 	AFLL))* 668K5@ !1!12	A NN!!$((+HHNN""$$$&e.//r+   rV   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&   r:   
fromstring
ParseErrorprintsys
__stderr__)r(   rV   ETes       r)   rW   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   Elementr:   intgetrQ   itemsr0   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           	      ~   |rb| j                   j                  d       t                t        d       | j                   d d D ]  \  }}t        d|dt        |             ! g }t	        |      | j                         z
  }|j                  t        |      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   r0   r1   r:   sortedr   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=AB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   r:   r   rl   r;   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+   )r   N)__name__
__module____qualname__r*   rZ   r.   r0   r	   r1   r4   r{   r=   rF   r   r   rX   r[   r`   r
   r   rd   listrW   r   r   r   r    r+   r)   r   r      s    &$)T )*c(m *
+d + $  3  $ (%
 (%h (%T( .2 0d 0eIz<Q6R 0($s) G 2(>I (>d (>4 (>T#7h #7$ #7r+   r   )rm   rH   r   rG   r   r   r   utilsr   r	   r
   r   r   r   r   r   r?   rA   rB   rC   r@   r   r   r+   r)   <module>r      sL    
  0 0' ' '      t7 t7r+   