a
    ñ»jK  ã                   @   sv   d Z ddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
mZmZ e d¡Zdd	„ ZG d
d„ deƒZdd„ ZdS )zê
Test Result
-----------
Provides a TextTestResult that extends unittest's _TextTestResult to
provide support for error classes (such as the builtin skip and deprecated
classes), and hooks for plugins to take over or extend reporting.é    N)Úsuppress)ÚTextTestResult)ÚConfig)ÚisclassÚlnznose.resultc                 C   s0   z
t | ƒW S  ty*   dt| ƒj  Y S 0 d S )Nz<unprintable %s object>)ÚstrÚ	ExceptionÚtypeÚ__name__)Úexc© r   ú1E:\soccer\ml_env\Lib\site-packages\nose/result.pyÚ_exception_detail   s    
r   c                   @   sf   e Zd ZdZddd„Zdd„ Zdd„ Zd	d
„ Zddd„Zdd„ Z	dd„ Z
dd„ Zdd„ Zddd„ZdS )r   z¿Text test result that extends unittest's default test result
    support for a configurable set of errorClasses (eg, Skip,
    Deprecated, TODO) that extend the errors/failures/success triad.Nc                 C   s@   |d u ri }|| _ |d u r tƒ }|| _t | |||¡ d t_d S ©N)ÚerrorClassesr   ÚconfigÚ_TextTestResultÚ__init__ZaddDuration)ÚselfÚstreamÚdescriptionsÚ	verbosityr   r   r   r   r   r      s    zTextTestResult.__init__c                 C   sJ   ddl m} || jv rF| j| \}}}| ||f¡ |  |||d f¡ d S )Nr   ©ÚSkipTest)Únose.plugins.skipr   r   ÚappendÚ
printLabel)r   ÚtestÚreasonr   ÚstorageÚlabelÚisfailr   r   r   ÚaddSkip'   s
    
zTextTestResult.addSkipc                 C   s¶   |\}}}z|   ||¡}W n ty6   |   |¡}Y n0 t| j ¡ ƒD ]J\}\}}	}
t|ƒrFt||ƒrF|
rpd|_| ||f¡ |  	|	|¡  dS qF| j
 ||f¡ d|_|  	d¡ dS )z:Overrides normal addError to add support for errorClasses.FNÚERROR)Ú_exc_info_to_stringÚ	TypeErrorÚlistr   Úitemsr   Ú
issubclassZpassedr   r   Úerrors)r   r   ÚerrÚecZevÚtbÚexc_infoÚclsr   r    r!   r   r   r   ÚaddError.   s    
zTextTestResult.addErrorc                 C   s"   | j r| ¡ pt|ƒS t|ƒS d S r   )r   ZshortDescriptionr   )r   r   r   r   r   ÚgetDescription@   s    zTextTestResult.getDescriptionc                 C   sl   t | dd ƒ}|d urh| jrP|g}|r>t|d ƒ}|r>| |¡ | d |¡¡ n| jrh| |d d… ¡ d S )Nr   é   z: )ÚgetattrÚshowAllr   r   ÚwritelnÚjoinÚdotsÚwrite)r   r    r*   r   ÚmessageÚdetailr   r   r   r   F   s    
zTextTestResult.printLabelc                 C   s\   t  | ¡ t| j ¡ ƒD ]$}| j| \}}}|r|  ||¡ qt| dƒrX| jj 	| j
¡ dS )z3Overrides to print all errorClasses errors as well.r   N)r   ÚprintErrorsr&   r   ÚkeysZprintErrorListÚhasattrr   ÚpluginsÚreportr   ©r   r.   r   r    r!   r   r   r   r:   S   s    

zTextTestResult.printErrorsc                 C   s”  | j j}| j j}t|| ƒ}| j}|dkr.dp0d}d}ttƒ�6 t ¡ j	}t
|tƒsZd}n|dk rfd}W d  ƒ n1 sz0    Y  d| }	||	dd… ƒ |d	|||f ƒ |ƒ  i }
t| j ¡ ƒ}|D ]*}| j| \}}}t|ƒ}|sìqÊ||
|< qÊt| jƒ�rt| jƒ|
d
< t| jƒ�r*t| jƒ|
d< |  ¡ �s>|dƒ n|dƒ t|
 ¡ ƒ}|�rŠ| ¡  |dƒ |d dd„ |D ƒ¡ƒ |dƒ n|ƒ  dS )z=Called by the test runner to print the final results summary.r1   ÚsÚ é(   é   Nú-éF   zRan %s test%s in %.3fsÚfailuresr)   ZFAILEDÚOKz (z, c                 S   s   g | ]\}}d ||f ‘qS )z%s=%sr   )Ú.0r    Úcountr   r   r   Ú
<listcomp>ƒ   s   ÿz/TextTestResult.printSummary.<locals>.<listcomp>ú))r   r7   r4   ÚfloatZtestsRunr   r   ÚosÚget_terminal_sizeÚcolumnsÚ
isinstanceÚintr&   r   r;   ÚlenrF   r)   ÚwasSuccessfulr'   Úsortr5   )r   ÚstartÚstopr7   r4   ZtakenÚrunÚpluralÚterminal_widthÚ	separatorÚsummaryZeckeysr.   r   r    r!   rI   r'   r   r   r   ÚprintSummary]   sP    


"


ÿ

zTextTestResult.printSummaryc                 C   sH   | j s| jrdS t| j ¡ ƒD ]$}| j| \}}}|s8q|r dS qdS )NFT)r)   rF   r&   r   r;   r?   r   r   r   rS   ‰   s    zTextTestResult.wasSuccessfulc                 C   sh   z|   ||¡}W n ty,   |   |¡}Y n0 | j ||f¡ | jrR| j d¡ n| jrd| j d¡ d S )Nr#   ÚE)r$   r%   r)   r   r3   r   r7   r6   )r   r   r*   r-   r   r   r   Ú	_addError”   s    zTextTestResult._addErrorc                 C   sf   ddl m} t|d ƒr2t|d |ƒr2t|d ƒS zt | ||¡W S  ty`   t | |¡ Y S 0 d S )Nr   r   r1   )r   r   r   r(   r   r   r$   r%   )r   r*   r   r   r   r   r   r$   Ÿ   s    z"TextTestResult._exc_info_to_string)NN)N)N)r
   Ú
__module__Ú__qualname__Ú__doc__r   r"   r/   r0   r   r:   r\   rS   r^   r$   r   r   r   r   r      s     ÿ


,r   c                  O   s$   ddl m} |dtƒ t| i |¤ŽS )Nr   )Úwarnz‚ln() has moved to nose.util from nose.result and will be removed from nose.result in a future release. Please update your imports )Úwarningsrb   ÚDeprecationWarningÚ_ln)ÚargÚkwrb   r   r   r   r   ©   s
    þr   )ra   ÚloggingrM   Ú
contextlibr   Zunittestr   r   Znose.configr   Z	nose.utilr   r   re   Ú	getLoggerÚlogr   r   r   r   r   Ú<module>   s   
 