
    Rh"                     (   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y)    N)Any   )StrJSONTestNameFilterTupleformat_durationnormalize_test_nameprint_warningT)slotsc                   ^    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y)		TestStatsr   	tests_runfailuresskippedc                 |    t        | j                  t        | j                        t        | j                              S N)r   testsRunlenr   r   )results    ./usr/lib/python3.12/test/libregrtest/result.pyfrom_unittestzTestStats.from_unittest   s-    V__-V^^,. 	.    c                 X    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_        y r   )r   r   r   )selfstatss     r   
accumulatezTestStats.accumulate   s8    %//)'%r   N)__name__
__module____qualname__r   int__annotations__r   r   staticmethodr   r   r!    r   r   r   r   
   sK    IsHcGS. .
 * *
&r   r   c                   l    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y)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   sD    LLMMMM  	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;   sJ     MM!!  	r   c                 F    | 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*   #   sx    FFG!LGK'OK#MJKG    
 
r   r*   c                   ,   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y)
TestResult	test_nameNr9   durationxml_datar    errorsr   fail_env_changedreturnc                 ~    | j                   t        j                  k(  r|S t        j                  | j                         S r   )r9   r*   r0   r:   )r   rE   s     r   r:   zTestResult.is_failed^   s-    ::***##tzz**r   c           
         | j                   ri| j                  r]t        | j                         }t        | j                        }d|dkD  rdndz   }d|dkD  rdndz   }| j                   d| d| d| d| d	
S | j                   r6t        | j                         }d|dkD  rdndz   }| j                   d| d| d	S | j                  r6t        | j                        }d|dkD  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   s   ;;4==T[[!BT]]#BQB7G!BFS;Inn%Yrd!G9Brd!I;aPP;;T[[!BQB7Gnn%Yrd!G9A>>==T]]#B!BFS;Inn%Yrd!I;a@@..!))r   c                    | j                   xt        j                  k(  r | j                   dS xt        j                  k(  r | j                         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{   jj..)11**,,..)22###..))EFF..))ABB"""..))>??&&&..))CDD"""..)66$$$..))CDD!!!..)55"""..)77..)odmm6T5UUVWW !BCCr   c                 @    t         j                  | j                        S r   )r*   r<   r9   rV   s    r   r<   z"TestResult.has_meaningful_duration   s    ,,TZZ88r   c                     | j                   | j                   t        j                  k(  rt        j                  | _         y y r   )r9   r*   r+   r0   rV   s    r   set_env_changedzTestResult.set_env_changed   s-    ::u||!;**DJ "<r   	fail_fastc                 l    t         j                  | j                        ry|r| j                  |      ryy)NTF)r*   r>   r9   r:   )r   r[   rE   s      r   r>   zTestResult.must_stop   s*    ??4::&(89r   c           	         g }| j                   xs g }| j                  xs g }|df|dffD ]N  \  }}|D ]D  ^}}t        ||      }|  y |s|rdnd}	t        d|	 d|d         y |j	                  |       F P |sy 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
%!,4&J!$::,l%.M1E#G H"":.
/		/  [!!r   c                 <    t        j                  | |t               y )N)cls)jsondump_EncodeTestResult)r   files     r   write_json_intozTestResult.write_json_into   s    		$"3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    zz+3F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+$ +4 +
*(D D:9+4 4 D "{T'9 "25 Hw H< H Hr   r@   c                   2     e Zd Zdedeeef   f fdZ xZS )rn   orF   c                     t        |t              r0t        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   sF    a$ ''*F()(<(<F$%M7?1%%r   )r"   r#   r$   r   dictrw   r   __classcell__)r   s   @r   rn   rn      s#    & &c3h & &r   rn   datarF   c                 r    d| v r2| j                  d       | d   t        di | d   | d<   t        di | S | S )Nr~   r    r(   )popr   r@   )r   s    r   ru   ru      sI    D "#=$%6W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
 T"& & #&0+
 +
\ T"nH nH #nHb&(( &d38n d38n1L r   