
    z
@h"                     H   d dl Z d dlZd dlmZ ddlmZmZmZmZm	Z	m
Z
  e j        d           G d d                      Z G d	 d
          Z e j        d           G d d                      Z G d dej                  Zdeeef         deeeef         z  fdZdS )    N)Any   )StrJSONTestNameFilterTupleformat_durationnormalize_test_nameprint_warningT)slotsc                   l    e Zd ZU dZeed<   dZeed<   dZeed<   ed             Z	ed             Z
d ZdS )		TestStatsr   	tests_runfailuresskippedc                 v    t          | j        t          | j                  t          | j                            S N)r   testsRunlenr   r   )results    ./usr/lib/python3.11/test/libregrtest/result.pyfrom_unittestzTestStats.from_unittest   s2    V_--V^,,. . 	.    c                 B    t          | j        | j        | j                  S r   )r   	attemptedfailedr   )resultss    r   from_doctestzTestStats.from_doctest   s#    *  * * 	*r   c                     | xj         |j         z  c_         | xj        |j        z  c_        | xj        |j        z  c_        d S r   )r   r   r   )selfstatss     r   
accumulatezTestStats.accumulate   s<    %/)'%r   N)__name__
__module____qualname__r   int__annotations__r   r   staticmethodr   r   r!    r   r   r   r   
   s         IsHcGS. . \.
 * * \*
& & & & &r   r   c                       e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZed             Zed             Zed             ZdS )StatePASSEDFAILEDSKIPPEDUNCAUGHT_EXCREFLEAKENV_CHANGEDRESOURCE_DENIEDINTERRUPTEDWORKER_FAILED
WORKER_BUGDID_NOT_RUNTIMEOUTc                     | t           j        t           j        t           j        t           j        t           j        t           j        hv S r   )r*   r,   r.   r/   r3   r4   r6   states    r   	is_failedzState.is_failed1   s5    LMM  	r   c                     | t           j        t           j        t           j        t           j        t           j        t           j        hvS r   )r*   r-   r1   r2   r3   r4   r5   r8   s    r   has_meaningful_durationzState.has_meaningful_duration;   s9     M!  	r   c                 6    | t           j        t           j        hv S r   )r*   r2   r4   r8   s    r   	must_stopzState.must_stopI   s     
 
 	
r   N)r"   r#   r$   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r'   r:   r<   r>   r(   r   r   r*   r*   #   s        FFG!LGK'OK#MJKG  \   \ 
 
 \
 
 
r   r*   c                   R   e Zd ZU eed<   dZedz  ed<   dZedz  ed<   dZ	e
e         dz  ed<   dZedz  ed<   dZe
eeef                  dz  ed<   dZe
eeef                  dz  ed<   d	ed
efdZd Zd
efdZd Zd Zded	ed
efdZd
edz  fdZddZeded
d fd            ZdS )
TestResult	test_nameNr9   durationxml_datar    errorsr   fail_env_changedreturnc                 n    | j         t          j        k    r|S t                              | j                   S r   )r9   r*   r0   r:   )r   rE   s     r   r:   zTestResult.is_failed^   s,    :***##tz***r   c           
         | j         r_| j        rXt          | j                   }t          | j                  }d|dk    rdndz   }d|dk    rdndz   }| j         d| d| d| d| d	
S | j         r1t          | j                   }d|dk    rdndz   }| j         d| d| d	S | j        r1t          | j                  }d|dk    rdndz   }| j         d| d| d	S | j         d
S )Nerrorr   s failurez	 failed ( z, )z failed)rD   r   r   rA   )r   lelferror_s	failure_ss        r   _format_failedzTestResult._format_failedc   sD   ; 	Q4= 	QT[!!BT]##BQB7G!BFFSS;InPPrPPGPPrPPIPPPP; 	?T[!!BQB7Gn>>r>>G>>>>= 	AT]##B!BFFSS;In@@r@@I@@@@.))))r   c                    | j         xt          j        k    r | j         dS xt          j        k    r |                                 S xt          j        k    r | j         dS xt          j        k    r | j         dS xt          j        k    r | j         dS xt          j	        k    r | j         dS xt          j
        k    r | j         dS xt          j        k    r | j         dS xt          j        k    r | j         dS xt          j        k    r | j         d	S xt          j        k    r | j         d
S t          j        k    r| j         dt!          | j                   dS 	 t%          d          )Nz passedz skippedz failed (uncaught exception)z failed (reference leak)z failed (env changed)z skipped (resource denied)z interruptedz worker non-zero exit codez worker bugz ran no testsz timed out (rN   zunknown result state: {state!r})r9   r*   r+   rA   r,   rS   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r   rB   
ValueErrorr   s    r   __str__zTestResult.__str__w   s   j.1111**,,,.2222#####.FFFF.BBBB""""".????&&&&&.DDDD""""".6666$$$$$.DDDD!!!!!.5555""""".7777.WWodm6T6TWWWW !BCCCr   c                 @    t                               | j                  S r   )r*   r<   r9   rV   s    r   r<   z"TestResult.has_meaningful_duration   s    ,,TZ888r   c                 d    | j         | j         t          j        k    rt          j        | _         d S d S r   )r9   r*   r+   r0   rV   s    r   set_env_changedzTestResult.set_env_changed   s.    :u|!;!;*DJJJ "<!;r   	fail_fastc                 z    t                               | j                  rdS |r|                     |          rdS dS )NTF)r*   r>   r9   r:   )r   r[   rE   s      r   r>   zTestResult.must_stop   sC    ??4:&& 	4 	(899 	4ur   c           	         g }| j         pg }| j        pg }|df|dffD ]Z\  }}|D ]R^}}t          ||          }|  d S |s |rdnd}	t          d|	 d|d             d S |                    |           S[|sd S t          |          S )	NTF)is_errorERRORFAILzrerun failed to parse z test name: z: don't filter tests)rD   r   r	   r
   appendtuple)
r   match_testsrD   r   
error_listr^   	full_name_
match_name
error_types
             r   get_rerun_match_testsz TestResult.get_rerun_match_tests   s   "=&BTNu%
 	/ 	/ J ", 
/ 
/	A0XNNN
%444!  ,4!@&J! #G: #G #G%.#G #G #G H H H444"":....
/  	4[!!!r   c                 >    t          j        | |t                     d S )N)cls)jsondump_EncodeTestResult)r   files     r   write_json_intozTestResult.write_json_into   s     	$"3444444r   worker_jsonc                 8    t          j        | t                    S )N)object_hook)rl   loads_decode_test_result)rq   s    r   	from_jsonzTestResult.from_json   s    z+3FGGGGr   )rF   N)r"   r#   r$   r   r&   r9   strrB   floatrC   listr    r   rD   rb   r   boolr:   rS   rW   r<   rZ   r>   r   ri   rp   r'   r   rv   r(   r   r   r@   r@   Q   s        E3:!Hedl!!!!%Hd3i$%%%"E9t""" ,0FDsCx!D(///-1Hd5c?#d*111+$ +4 + + + +
* * *(D D D D D:9 9 9+ + +4 4 D    "{T'9 " " " "25 5 5 5 Hw H< H H H \H H Hr   r@   c                   8     e Zd Zdedeeef         f fdZ xZS )rn   orF   c                     t          |t                    r%t          j        |          }|j        j        |d<   |S t                                          |          S )N__test_result__)
isinstancer@   dataclassesasdict	__class__r"   superdefault)r   r|   r   r   s      r   r   z_EncodeTestResult.default   sP    a$$ 	& '**F()(<F$%M77??1%%%r   )r"   r#   r$   r   dictrw   r   __classcell__)r   s   @r   rn   rn      sS        & &c3h & & & & & & & & & &r   rn   datarF   c                     d| v r>|                      d           | d         t          di | d         | d<   t          di | S | S )Nr~   r    r(   )popr   r@   )r   s    r   ru   ru      s^    D  "###=$%66W66DM!!D!!!r   )r   rl   typingr   utilsr   r   r   r   r	   r
   	dataclassr   r*   r@   JSONEncoderrn   r   rw   ru   r(   r   r   <module>r      s             9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
 T"""& & & & & & & #"&0+
 +
 +
 +
 +
 +
 +
 +
\ T"""nH nH nH nH nH nH nH #"nHb& & & & &( & & &d38n d38n1L      r   