o
    JAfs  ã                   @   sl   	 d dl Z d dlZd dlZddlmZ ddlmZ dZG dd„ deƒZ	G dd	„ d	ej
ƒZG d
d„ deƒZdS )é    Né   )Úresult)ÚregisterResultTc                   @   s(   e Zd Z	 dd„ Zdd„ Zddd„ZdS )	Ú_WritelnDecoratorc                 C   s
   || _ d S ©N)Ústream)Úselfr   © r	   ú&/usr/lib/python3.10/unittest/runner.pyÚ__init__   s   
z_WritelnDecorator.__init__c                 C   s   |dv rt |ƒ‚t| j|ƒS )N)r   Ú__getstate__)ÚAttributeErrorÚgetattrr   )r   Úattrr	   r	   r
   Ú__getattr__   s   z_WritelnDecorator.__getattr__Nc                 C   s   |r|   |¡ |   d¡ d S ©NÚ
)Úwrite)r   Úargr	   r	   r
   Úwriteln   s   
z_WritelnDecorator.writelnr   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r	   r	   r	   r
   r      s
    r   c                       s’   e Zd Z	 dZdZ‡ fdd„Z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‡ fdd„Zdd„ Zdd„ Z‡  ZS )ÚTextTestResultzF======================================================================zF----------------------------------------------------------------------c                    s8   t t| ƒ |||¡ || _|dk| _|dk| _|| _d S )Nr   )Úsuperr   r   r   ÚshowAllÚdotsÚdescriptions)r   r   r   Ú	verbosity©Ú	__class__r	   r
   r   %   s
   


zTextTestResult.__init__c                 C   s,   |  ¡ }| jr|rd t|ƒ|f¡S t|ƒS r   )ZshortDescriptionr   ÚjoinÚstr)r   ÚtestZdoc_first_liner	   r	   r
   ÚgetDescription,   s   
zTextTestResult.getDescriptionc                    sF   t t| ƒ |¡ | jr!| j |  |¡¡ | j d¡ | j ¡  d S d S )Nz ... )r   r   Ú	startTestr   r   r   r$   Úflush©r   r#   r   r	   r
   r%   3   s   ýzTextTestResult.startTestc                    óT   t t| ƒ |¡ | jr| j d¡ | j ¡  d S | jr(| j d¡ | j ¡  d S d S )NÚokÚ.)	r   r   Ú
addSuccessr   r   r   r&   r   r   r'   r   r	   r
   r+   :   ó   þzTextTestResult.addSuccessc                    óV   t t| ƒ ||¡ | jr| j d¡ | j ¡  d S | jr)| j d¡ | j ¡  d S d S )NÚERRORÚE)	r   r   ÚaddErrorr   r   r   r&   r   r   ©r   r#   Úerrr   r	   r
   r0   C   ó   þzTextTestResult.addErrorc                    r-   )NÚFAILÚF)	r   r   Ú
addFailurer   r   r   r&   r   r   r1   r   r	   r
   r6   L   r3   zTextTestResult.addFailurec                    s\   t t| ƒ ||¡ | jr| j d |¡¡ | j ¡  d S | jr,| j 	d¡ | j ¡  d S d S )Nzskipped {0!r}Ús)
r   r   ÚaddSkipr   r   r   Úformatr&   r   r   )r   r#   Úreasonr   r	   r
   r8   U   s   þzTextTestResult.addSkipc                    r-   )Nzexpected failureÚx)	r   r   ÚaddExpectedFailurer   r   r   r&   r   r   r1   r   r	   r
   r<   ^   r3   z!TextTestResult.addExpectedFailurec                    r(   )Nzunexpected successÚu)	r   r   ÚaddUnexpectedSuccessr   r   r   r&   r   r   r'   r   r	   r
   r>   g   r,   z#TextTestResult.addUnexpectedSuccessc                 C   s@   | j s| jr| j ¡  | j ¡  |  d| j¡ |  d| j¡ d S )Nr.   r4   )r   r   r   r   r&   ÚprintErrorListÚerrorsÚfailures©r   r	   r	   r
   ÚprintErrorsp   s
   

zTextTestResult.printErrorsc                 C   sb   |D ],\}}| j  | j¡ | j  d||  |¡f ¡ | j  | j¡ | j  d| ¡ | j  ¡  qd S )Nz%s: %sz%s)r   r   Ú
separator1r$   Ú
separator2r&   )r   Úflavourr@   r#   r2   r	   r	   r
   r?   w   s   ûzTextTestResult.printErrorList)r   r   r   rD   rE   r   r$   r%   r+   r0   r6   r8   r<   r>   rC   r?   Ú__classcell__r	   r	   r   r
   r      s    						r   c                   @   s6   e Zd Z	 eZ		dddœdd„Zdd	„ Zd
d„ ZdS )ÚTextTestRunnerNTr   F)Ú	tb_localsc          	      C   sT   	 |d u rt j}t|ƒ| _|| _|| _|| _|| _|| _|| _	|d ur(|| _
d S d S r   )ÚsysÚstderrr   r   r   r   ÚfailfastÚbufferrI   ÚwarningsÚresultclass)	r   r   r   r   rL   rM   rO   rN   rI   r	   r	   r
   r   ˆ   s   

ÿzTextTestRunner.__init__c                 C   s   |   | j| j| j¡S r   )rO   r   r   r   rB   r	   r	   r
   Ú_makeResultœ   s   zTextTestRunner._makeResultc                 C   s`  	 |   ¡ }t|ƒ | j|_| j|_| j|_t ¡ V | jr0t | j¡ | jdv r0tjdt	dd t
 ¡ }t|dd ƒ}|d urA|ƒ  z||ƒ W t|dd ƒ}|d urT|ƒ  nt|dd ƒ}|d urc|ƒ  w w t
 ¡ }W d   ƒ n1 srw   Y  || }| ¡  t|dƒr‹| j |j¡ |j}| j d||d	kr™d
pšd|f ¡ | j ¡  d }	 }
}ztt|j|j|jfƒ}W n	 tyÀ   Y nw |\}	}
}g }| ¡ sð| j d¡ t|jƒt|jƒ}}|ræ| d| ¡ |rï| d| ¡ n| j d¡ |rÿ| d| ¡ |	r	| d|	 ¡ |
r| d|
 ¡ |r#| j dd |¡f ¡ n| j d¡ | j ¡  |S )N)ÚdefaultÚalwaysÚmodulezPlease use assert\w+ instead.)ÚcategoryÚmessageÚstartTestRunÚstopTestRunrE   zRan %d test%s in %.3fsr   r7   Ú r   ZFAILEDzfailures=%dz	errors=%dZOKz
skipped=%dzexpected failures=%dzunexpected successes=%dz (%s)z, r   ) rP   r   rL   rM   rI   rN   Úcatch_warningsÚsimplefilterÚfilterwarningsÚDeprecationWarningÚtimeÚperf_counterr   rC   Úhasattrr   r   rE   ZtestsRunÚmapÚlenZexpectedFailuresÚunexpectedSuccessesÚskippedr   ZwasSuccessfulr   rA   r@   Úappendr!   r&   )r   r#   r   Z	startTimerV   rW   ZstopTimeZ	timeTakenÚrunZexpectedFailsrb   rc   ÚresultsZinfosZfailedZerroredr	   r	   r
   re   Ÿ   sŒ   

þ
€þÿ
é
ÿ

þÿ
€
zTextTestRunner.run)NTr   FFNN)r   r   r   r   rO   r   rP   re   r	   r	   r	   r
   rH   €   s    ÿþrH   )rJ   r]   rN   rX   r   Zsignalsr   Z
__unittestÚobjectr   Z
TestResultr   rH   r	   r	   r	   r
   Ú<module>   s    c