???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3

  \                 @   s6  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jj	Z
ddlmZ G dd dejZG dd dZdd	d
ZdddZedkr2G dd dejZej Zejeje ej Zeedd ejD ZeejZejeZ e!dej"  e!ddd x(e
j#e j$ D ]Z%e!e%j& dd qW e!  dS )z=Test runner and result class for the regression test suite.

    N)datetimec                   s   e Zd Zdd d Zdd d Z fddZedd Z fd	d
Zd$ddZ	dd Z
edd Z fddZ fddZ fddZ fddZ fddZ fddZdd Zd d! Zd"d# Z  ZS )%RegressionTestResult=F   
-c                s\   t  j||dd d| _tjd| _| jjdtj j	d d | _
d | _g | _t|| _d S )Nr   )streamdescriptions	verbosityTZ	testsuitestart )super__init__bufferETZElement_RegressionTestResult__suitesetr   ZutcnowZ	isoformat_RegressionTestResult__e!_RegressionTestResult__start_timeZ_RegressionTestResult__resultsbool_RegressionTestResult__verbose)selfr   r	   r
   )	__class__ //usr/lib64/python3.6/test/support/testresult.pyr      s    zRegressionTestResult.__init__c             C   sL   y
|j }W n tk
r"   t|S X y| S  tk
rB   t|S X t|S )N)idAttributeErrorstr	TypeErrorrepr)clstestZtest_idr   r   r   Z__getId   s    


zRegressionTestResult.__getIdc                sV   t  j| tj| jd | _}tj | _| j	rR| j
j| j| d | j
j  d S )NZtestcasez ... )r   	startTestr   
SubElementr   r   timeperf_counterr   r   r   writegetDescriptionflush)r   r!   e)r   r   r   r"   +   s    
zRegressionTestResult.startTestFc             K   sP  | j }d | _ |d krd S |jd|jd| j| |jd|jdd |jd|jdd | jrz|jdtj | j d |r| jd k	r| jj j	 }|t
j|d_| jd k	r| jj j	 }|t
j|d	_x|j D ]t\}}| s| rqt
j||}	t|d
r>xD|j D ],\}
}|
r,|	j|
t| n
t||	_qW qt||	_qW d S )NnameZstatusrunresultZ	completedr$   z0.6fz
system-outz
system-erritems)r   r   pop_RegressionTestResult__getIdr   r$   r%   Z_stdout_buffergetvaluerstripr   r#   textZ_stderr_bufferr-   hasattrr   )r   r!   Zcaptureargsr)   stdoutstderrkvZe2Zk2Zv2r   r   r   _add_result3   s4    

z RegressionTestResult._add_resultc             C   s   | j r| jj| d d S )Nr   )r   r   r&   )r   cZwordr   r   r   Z__writeS   s    zRegressionTestResult.__writec             C   sl   t |tr0|jdkr|j}q8|j d|j }nt|}tj||d }tj|||}|dj|dj|dS )Nbuiltins. )typemessager=   )
isinstancer>   
__module____name__r   	tracebackformat_exceptionjoin)r    Zerr_typeZ	err_valueZerr_tbtypenamemsgtbr   r   r   Z__makeErrorDictW   s    

z$RegressionTestResult.__makeErrorDictc                s4   | j |d| j| d t j|| | jdd d S )NT)errorEERROR)r9   $_RegressionTestResult__makeErrorDictr   addError_RegressionTestResult__write)r   r!   err)r   r   r   rM   j   s    zRegressionTestResult.addErrorc                s4   | j |d| j| d t j|| | jdd d S )NT)outputxzexpected failure)r9   rL   r   addExpectedFailurerN   )r   r!   rO   )r   r   r   rR   o   s    z'RegressionTestResult.addExpectedFailurec                s4   | j |d| j| d t j|| | jdd d S )NT)ZfailureFFAIL)r9   rL   r   
addFailurerN   )r   r!   rO   )r   r   r   rU   t   s    zRegressionTestResult.addFailurec                s2   | j ||d t j|| | jdd| d S )N)ZskippedSzskipped )r9   r   addSkiprN   )r   r!   reason)r   r   r   rW   y   s    zRegressionTestResult.addSkipc                s&   | j | t j| | jdd d S )Nr<   ok)r9   r   
addSuccessrN   )r   r!   )r   r   r   rZ   ~   s    
zRegressionTestResult.addSuccessc                s*   | j |dd t j| | jdd d S )NZUNEXPECTED_SUCCESS)Zoutcomeuzunexpected success)r9   r   addUnexpectedSuccessrN   )r   r!   )r   r   r   r\      s    z)RegressionTestResult.addUnexpectedSuccessc             C   s2   | j r| jjd | jd| j | jd| j d S )Nr   rK   rT   )r   r   r&   printErrorListerrorsfailures)r   r   r   r   printErrors   s    z RegressionTestResult.printErrorsc             C   s`   xZ|D ]R\}}| j j| j | j j| d| j| d | j j| j | j jd|  qW d S )Nz: r   z%s
)r   r&   
separator1r'   
separator2)r   Zflavorr^   r!   rO   r   r   r   r]      s
    z#RegressionTestResult.printErrorListc             C   sH   | j }|jdt| j |jdtt| j |jdtt| j |S )NZtestsr^   r_   )r   r   r   ZtestsRunlenr^   r_   )r   r)   r   r   r   get_xml_element   s
    z$RegressionTestResult.get_xml_element)F)rB   rA   __qualname__ra   rb   r   classmethodr/   r"   r9   rN   rL   rM   rR   rU   rW   rZ   r\   r`   r]   rd   __classcell__r   r   )r   r   r      s"   
 r   c               @   s   e Zd ZdddZdd ZdS )QuietRegressionTestRunnerFc             C   s   t |d d| _|| j_d S )Nr   )r   r,   r   )r   r   r   r   r   r   r      s    z"QuietRegressionTestRunner.__init__c             C   s   || j  | j S )N)r,   )r   r!   r   r   r   r+      s    
zQuietRegressionTestRunner.runN)F)rB   rA   re   r   r+   r   r   r   r   rh      s   
rh   Fc             C   s&   | rt jtjt|| dS t jt|dS )N)Zresultclassr   r
   )r   )	functoolspartialunittestZTextTestRunnerr   rh   )r
   r   r   r   r   get_test_runner_class   s    rl   c             C   s   t ||| S )N)rl   )r   r
   Zcapture_outputr   r   r   get_test_runner   s    rm   __main__c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
	TestTestsc             C   s   d S )Nr   )r   r   r   r   	test_pass   s    zTestTests.test_passc             C   s   t jd d S )Ng      ?)r$   Zsleep)r   r   r   r   test_pass_slow   s    zTestTests.test_pass_slowc             C   s*   t dtjd t dtjd | jd d S )Nr5   )filer6   zfailure message)printsysr5   r6   Zfail)r   r   r   r   	test_fail   s    zTestTests.test_failc             C   s(   t dtjd t dtjd tdd S )Nr5   )rr   r6   zerror message)rs   rt   r5   r6   RuntimeError)r   r   r   r   
test_error   s    zTestTests.test_errorN)rB   rA   re   rp   rq   ru   rw   r   r   r   r   ro      s   ro   c             c   s   | ]}|d kV  qdS )z-vNr   ).0ar   r   r   	<genexpr>   s    rz   zOutput:zXML: r=   )end)F)F)'__doc__ri   iort   r$   rC   rk   Zxml.etree.ElementTreeZetreeZElementTreer   r   ZTextTestResultr   rh   rl   rm   rB   ZTestCasero   Z	TestSuiteZsuiteZaddTestZ	makeSuiteStringIOr   sumargvZ
runner_clsr5   Zrunnerr+   r,   rs   r0   Ztostringlistrd   sdecoder   r   r   r   <module>   s4    	




