
    RhX                        d Z ddlZddlZddlZddlZddlZddlZddlmZ  G d dej                        Z
 G d d      ZddZdd	Zed
k(  rddlmc mZ de
_         G d dej(                        Z ej,                         Zej1                   ej2                         j5                  e              ej6                         Z e ed ej<                  D                    Z eej@                        Z!e!jE                  e      Z# e$dejK                                 e$dd        ejL                  e#jO                               D ]  Z( e$e(jS                         d         e$        yy)z=Test runner and result class for the regression test suite.

    N)supportc                        e Zd ZdZ fdZed        Z fdZddZed        Z	 fdZ
 fdZ fd	Z fd
Z fdZ fdZd Z xZS )RegressionTestResultFc                 `   t         |   |||rdnd       d| _        | j                  r}ddlm} ddlm}m} || _         |j                  d      | _
        | j                  j                  d|j                  |      j                  d 	      j                  d
             d | _        d | _        y )N   r   )streamdescriptions	verbosityT)ElementTree)datetimeUTC	testsuitestart)tzinfo )super__init__bufferUSE_XML	xml.etreer   r   r   _RegressionTestResult__ETElement_RegressionTestResult__suitesetnowreplace	isoformat_RegressionTestResult__e!_RegressionTestResult__start_time)selfr   r	   r
   ETr   r   	__class__s          2/usr/lib/python3.12/test/libregrtest/testresult.pyr   zRegressionTestResult.__init__   s    \(11q 	 	:<<3.DI%2::k2DLLLW%\\#.&-gTg&:&/in6 DH     c                     	 |j                   }	  |       S # t        $ r t        |      cY S w xY w# t        $ r t        |      cY S w xY wN)idAttributeErrorstr	TypeErrorrepr)clstesttest_ids      r#   __getIdzRegressionTestResult.__getId    sR    	ggG	 9  	t9	  	 w<	 s    0 --AAc                     t         |   |       | j                  r-| j                  j	                  | j
                  d      x| _        }t        j                         | _	        y )Ntestcase)
r   	startTestr   r   
SubElementr   r   timeperf_counterr   )r    r-   er"   s      r#   r2   zRegressionTestResult.startTest,   sI    $<<99//jIIDHq --/r$   c           	      $   | j                   sy | j                  }d | _        |y | j                  }|j                  d|j	                  d| j                  |                   |j                  d|j	                  dd             |j                  d|j	                  dd             | j                  r3|j                  dt        j                         | j                  z
  d       |r| j                  @| j                  j                         j                         }| |j                  |d      _        | j                  @| j                  j                         j                         }| |j                  |d	      _        |j                         D ]  \  }}	|r|	s |j                  ||      }
t!        |	d
      rG|	j                         D ]3  \  }}|r|
j                  |t#        |             $t#        |      |
_        5 qt#        |	      |
_         y )Nnamestatusrunresult	completedr4   z0.6fz
system-outz
system-erritems)r   r   r   r   pop_RegressionTestResult__getIdr   r4   r5   _stdout_buffergetvaluerstripr3   text_stderr_bufferr=   hasattrr)   )r    r-   captureargsr6   r!   stdoutstderrkve2k2v2s                r#   _add_resultz RegressionTestResult._add_result2   s   ||HH9YY	fdhhvt||D'9:;	h512	h;78EE&T..043D3DDTJL"".,,557>>@6<a.3"".,,557>>@6<a.3JJL 	!DAqAq!$Bq'"ggi *FBr3r7+"%b'	* a&	!r$   c                 L   t        |t              r8|j                  dk(  r|j                  }n'|j                   d|j                   }nt	        |      }t        j                  ||d       }t        j                  |||      }|dj                  |      dj                  |      dS )Nbuiltins. )typemessagerS   )
isinstancerT   
__module____name__r+   	tracebackformat_exceptionjoin)r,   err_type	err_valueerr_tbtypenamemsgtbs          r#   __makeErrorDictz$RegressionTestResult.__makeErrorDictV   s    h%""j0#,,&112!H4E4E3FGH~H((9dC'')VD wws|
 	
r$   c                 h    | j                  |d | j                  |        t        |   ||       y )NT)error)rO   $_RegressionTestResult__makeErrorDictr   addErrorr    r-   errr"   s      r#   rf   zRegressionTestResult.addErrori   s5    t+?4+?+?+EFs#r$   c                 h    | j                  |d | j                  |        t        |   ||       y )NT)output)rO   re   r   addExpectedFailurerg   s      r#   rk   z'RegressionTestResult.addExpectedFailurem   s5    t,@D,@,@#,FG"4-r$   c                     | j                  |d | j                  |        t        |   ||       t        j
                  r| j                          y y )NT)failure)rO   re   r   
addFailurer   failfaststoprg   s      r#   rn   zRegressionTestResult.addFailureq   sL    t-AT-A-A3-GH4%IIK r$   c                 L    | j                  ||       t        | 	  ||       y )N)skipped)rO   r   addSkip)r    r-   reasonr"   s      r#   rs   zRegressionTestResult.addSkipw   s$    v.f%r$   c                 F    | j                  |       t        | 	  |       y r&   )rO   r   
addSuccessr    r-   r"   s     r#   rv   zRegressionTestResult.addSuccess{   s    4 r$   c                 J    | j                  |d       t        | 	  |       y )NUNEXPECTED_SUCCESS)outcome)rO   r   addUnexpectedSuccessrw   s     r#   r{   z)RegressionTestResult.addUnexpectedSuccess   s$    ';<$T*r$   c                 N   | j                   st        d      | j                  }|j                  dt	        | j
                               |j                  dt	        t        | j                                     |j                  dt	        t        | j                                     |S )NzUSE_XML is falsetestserrorsfailures)	r   
ValueErrorr   r   r)   testsRunlenr~   r   )r    r6   s     r#   get_xml_elementz$RegressionTestResult.get_xml_element   sr    ||/00LL	gs4==)*	hC,-.	j#c$--012r$   F)rX   rW   __qualname__r   r   classmethodr?   r2   rO   re   rf   rk   rn   rs   rv   r{   r   __classcell__)r"   s   @r#   r   r      sc    G!  	 	0"!H 
 
$$.&!+r$   r   c                       e Zd ZddZd Zy)QuietRegressionTestRunnerc                 J    t        |d d      | _        || j                  _        y )Nr   )r   r;   r   )r    r   r   s      r#   r   z"QuietRegressionTestRunner.__init__   s    *64;#r$   c                 >     || j                          | j                   S r&   )r;   )r    r-   s     r#   r:   zQuietRegressionTestRunner.run   s    T[[{{r$   Nr   )rX   rW   r   r   r:    r$   r#   r   r      s    $r$   r   c                     | r+t        j                  t        j                  t        ||       S t        j                  t
        |      S )N)resultclassr   r
   )r   )	functoolspartialunittestTextTestRunnerr   r   )r
   r   s     r#   get_test_runner_classr      s?      !8!8-A(.+46 	6 6vFFr$   c                 &     t        ||      |       S r&   )r   )r   r
   capture_outputs      r#   get_test_runnerr      s    ; N;FCCr$   __main__Tc                   $    e Zd Zd Zd Zd Zd Zy)	TestTestsc                      y r&   r   r    s    r#   	test_passzTestTests.test_pass   s    r$   c                 .    t        j                  d       y )Ng      ?)r4   sleepr   s    r#   test_pass_slowzTestTests.test_pass_slow   s    JJsOr$   c                     t        dt        j                         t        dt        j                         | j	                  d       y )NrH   filerI   zfailure message)printsysrH   rI   failr   s    r#   	test_failzTestTests.test_fail   s+    (,(,II'(r$   c                     t        dt        j                         t        dt        j                         t	        d      )NrH   r   rI   zerror message)r   r   rH   rI   RuntimeErrorr   s    r#   
test_errorzTestTests.test_error   s)    (,(,//r$   N)rX   rW   r   r   r   r   r   r   r$   r#   r   r      s    			)
	0r$   r   c              #   &   K   | ]	  }|d k(    yw)z-vNr   ).0as     r#   	<genexpr>r      s     *G19*Gs   zOutput:zXML: rS   )endr   )*__doc__r   ior   r4   rY   r   r-   r   TextTestResultr   r   r   r   rX   xml.etree.ElementTreeetreer   r!   r   TestCaser   	TestSuitesuiteaddTest
TestLoaderloadTestsFromTestCaseStringIOr   sumargv
runner_clsrH   runnerr:   r;   r   rA   tostringlistr   sdecoder   r$   r#   <module>r      sF    	 
    }822 }~ GD z&&#' 0H%% 0" H E	MM%(%%'==iHIR[[]F&s*Gchh*G'GHJ

#FZZF	)V__&'	'rR__V3356 "ahhjb!"	G? r$   