
    z
@h                        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    r9ddlmc mZ de
_         G d dej                  Z ej                    Ze                     ej                                        e                      ej                    Z e ed ej        D                                 Z eej                   Z!e!"                    e          Z# e$de%                                            e$dd            ej&        e#'                                          D ]!Z( e$e()                                d           " e$             dS dS )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        roddlm} ddlm} || _         |j        d          | _	        | j	        
                    d|                                                    d	                     d | _        d | _        d S )
N   r   )streamdescriptions	verbosityT)ElementTree)datetime	testsuitestart )super__init__bufferUSE_XML	xml.etreer   r   _RegressionTestResult__ETElement_RegressionTestResult__suitesetutcnow	isoformat_RegressionTestResult__e!_RegressionTestResult__start_time)selfr   r	   r
   ETr   	__class__s         2/usr/lib/python3.11/test/libregrtest/testresult.pyr   zRegressionTestResult.__init__   s    \(1#811q 	 	: 	: 	:< 	333333))))))DI%2:k22DLLWhoo&7&7&A&A#&F&FGGGDH     c                     	 |j         }n# t          $ r t          |          cY S w xY w	  |            S # t          $ r t          |          cY S w xY wN)idAttributeErrorstr	TypeErrorrepr)clstesttest_ids      r    __getIdzRegressionTestResult.__getId   s{    	gGG 	 	 	t99		 799 	  	  	 w<<	 s   
 &&	4 AAc                     t                                          |           | j        r'| j                            | j        d          x| _        }t          j                    | _	        d S )Ntestcase)
r   	startTestr   r   
SubElementr   r   timeperf_counterr   )r   r*   er   s      r    r/   zRegressionTestResult.startTest)   s]    $< 	J9//jIIIDHq -//r!   c           	      R   | j         sd S | j        }d | _        |d S | j        }|                    d|                    d|                     |                               |                    d|                    dd                     |                    d|                    dd                     | j        r1|                    dt          j                    | j        z
  d           |r| j	        A| j	        
                                                                }| |j        |d          _        | j        A| j        
                                                                }| |j        |d	          _        |                                D ]\  }}	|r|	s
 |j        ||          }
t!          |	d
          rU|	                                D ]?\  }}|r$|
                    |t#          |                     +t#          |          |
_        @t#          |	          |
_        d S )Nnamestatusrunresult	completedr1   z0.6fz
system-outz
system-erritems)r   r   r   r   pop_RegressionTestResult__getIdr   r1   r2   _stdout_buffergetvaluerstripr0   text_stderr_bufferr:   hasattrr&   )r   r*   captureargsr3   r   stdoutstderrkve2k2v2s                r    _add_resultz RegressionTestResult._add_result/   s    | 	FH9FY	fdhhvt||D'9'9::;;;	h511222	h;77888 	MEE&T.0043DDKKLLL 	=".,5577>>@@6<a..3".,5577>>@@6<a..3JJLL 	! 	!DAq A q!$$Bq'"" !ggii * *FB *r3r77++++"%b''	* a&&	! 	!r!   c                 D   t          |t                    r%|j        dk    r|j        }n!|j         d|j         }nt	          |          }t          j        ||d           }t          j        |||          }|d                    |          d                    |          dS )Nbuiltins. )typemessagerP   )
isinstancerQ   
__module____name__r(   	tracebackformat_exceptionjoin)r)   err_type	err_valueerr_tbtypenamemsgtbs          r    __makeErrorDictz$RegressionTestResult.__makeErrorDictS   s    h%% 	&"j00#,&1GGH4EGGH~~H(9dCC')VDD wws||
 
 	
r!   c                     |                      |d | j        |            t                                          ||           d S )NT)error)rL   $_RegressionTestResult__makeErrorDictr   addErrorr   r*   errr   s      r    rc   zRegressionTestResult.addErrorf   sI    t+?4+?+EFFFs#####r!   c                     |                      |d | j        |            t                                          ||           d S )NT)output)rL   rb   r   addExpectedFailurerd   s      r    rh   z'RegressionTestResult.addExpectedFailurej   sI    t,@D,@#,FGGG""4-----r!   c                     |                      |d | j        |            t                                          ||           t          j        r|                                  d S d S )NT)failure)rL   rb   r   
addFailurer   failfaststoprd   s      r    rk   zRegressionTestResult.addFailuren   si    t-AT-A3-GHHH4%%% 	IIKKKKK	 	r!   c                 z    |                      ||           t                                          ||           d S )N)skipped)rL   r   addSkip)r   r*   reasonr   s      r    rp   zRegressionTestResult.addSkipt   s:    v...f%%%%%r!   c                 t    |                      |           t                                          |           d S r#   )rL   r   
addSuccessr   r*   r   s     r    rs   zRegressionTestResult.addSuccessx   s5    4     r!   c                 x    |                      |d           t                                          |           d S )NUNEXPECTED_SUCCESS)outcome)rL   r   addUnexpectedSuccessrt   s     r    rx   z)RegressionTestResult.addUnexpectedSuccess|   s;    ';<<<$$T*****r!   c                 d   | j         st          d          | j        }|                    dt	          | j                             |                    dt	          t          | j                                       |                    dt	          t          | j                                       |S )NzUSE_XML is falsetestserrorsfailures)	r   
ValueErrorr   r   r&   testsRunlenr{   r|   )r   r3   s     r    get_xml_elementz$RegressionTestResult.get_xml_element   s    | 	1/000L	gs4=))***	hC,,--...	j#c$-0011222r!   F)rU   rT   __qualname__r   r   classmethodr<   r/   rL   rb   rc   rh   rk   rp   rs   rx   r   __classcell__)r   s   @r    r   r      sF       G! ! ! ! ! 	 	 [	0 0 0 0 0"! "! "! "!H 
 
 [
$$ $ $ $ $. . . . .    & & & & &! ! ! ! !+ + + + +      r!   r   c                       e Zd ZddZd ZdS )QuietRegressionTestRunnerFc                 J    t          |d d          | _        || j        _        d S )Nr   )r   r8   r   )r   r   r   s      r    r   z"QuietRegressionTestRunner.__init__   s%    *64;;#r!   c                 0     || j                    | j         S r#   )r8   )r   r*   s     r    r7   zQuietRegressionTestRunner.run   s    T[{r!   Nr   )rU   rT   r   r   r7    r!   r    r   r      s7        $ $ $ $    r!   r   Fc                     | 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      sK     6 !8-A(.+46 6 6 	6 6vFFFFr!   c                 4     t          ||          |           S r#   )r   )r   r
   capture_outputs      r    get_test_runnerr      s    ; N;;FCCCr!   __main__Tc                   &    e Zd Zd Zd Zd Zd ZdS )	TestTestsc                     d S r#   r   r   s    r    	test_passzTestTests.test_pass   s    Dr!   c                 .    t          j        d           d S )Ng      ?)r1   sleepr   s    r    test_pass_slowzTestTests.test_pass_slow   s    JsOOOOOr!   c                     t          dt          j                   t          dt          j                   |                     d           d S )NrE   filerF   zfailure message)printsysrE   rF   failr   s    r    	test_failzTestTests.test_fail   sE    (,,,,(,,,,II'(((((r!   c                     t          dt          j                   t          dt          j                   t	          d          )NrE   r   rF   zerror message)r   r   rE   rF   RuntimeErrorr   s    r    
test_errorzTestTests.test_error   s:    (,,,,(,,,,///r!   N)rU   rT   r   r   r   r   r   r   r!   r    r   r      sP        	 	 		 	 		) 	) 	)
	0 	0 	0 	0 	0r!   r   c              #   "   K   | ]
}|d k    V  dS )z-vNr   ).0as     r    	<genexpr>r      s&      *G*G19*G*G*G*G*G*Gr!   zOutput:zXML: rP   )endr   )*__doc__r   ior   r1   rV   r   r*   r   TextTestResultr   r   r   r   rU   xml.etree.ElementTreeetreer   r   r   TestCaser   	TestSuitesuiteaddTest
TestLoaderloadTestsFromTestCaseStringIOr   sumargv
runner_clsrE   runnerr7   r8   r   r>   tostringlistr   sdecoder   r!   r    <module>r      sr        				 



            z z z z z82 z z zx       G G G GD D D D z&&&&&&&&&#' 0 0 0 0 0H% 0 0 0" H  E	MM%(%''==iHHIIIR[]]F&&ss*G*Gch*G*G*G'G'GHHJZ
##FZZF	E)V__&&'''	E'rR_V335566 " "ahhjjb!!!!!	EGGGGG? r!   