o
    JAf                      @   sZ   	 d dl Z d dlZd dlZddlmZ d dlmZ dZdd ZdZ	d	Z
G d
d deZdS )    N   )utilwrapsTc                    s   t   fdd}|S )Nc                    s*   t | ddr
|    | g|R i |S )NfailfastF)getattrstop)selfargskwmethod &/usr/lib/python3.10/unittest/result.pyinner   s   zfailfast.<locals>.innerr   )r   r   r   r   r   r      s   r   z
Stdout:
%sz
Stderr:
%sc                   @   s   e Zd Z	 dZdZdZd/ddZdd Zdd Zd	d
 Z	dd Z
dd Zdd Zdd Zedd Zedd Zdd Zdd Zdd Zdd Zedd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. ZdS )0
TestResultNFc                 C   sb   d| _ g | _g | _d| _g | _g | _g | _d| _d| _d| _	d | _
d | _tj| _tj| _d| _d S )NFr   )r   failureserrorstestsRunskippedexpectedFailuresunexpectedSuccesses
shouldStopbuffer	tb_locals_stdout_buffer_stderr_buffersysstdout_original_stdoutstderr_original_stderr_mirrorOutput)r	   streamZdescriptions	verbosityr   r   r   __init__&   s   
zTestResult.__init__c                 C      d S Nr   r	   r   r   r   printErrors7      zTestResult.printErrorsc                 C   s"   	 |  j d7  _ d| _|   d S )Nr   F)r   r"   _setupStdoutr	   testr   r   r   	startTest:   s   zTestResult.startTestc                 C   s<   | j r| jd u rt | _t | _| jt_| jt_d S d S r'   )r   r   ioStringIOr   r   r   r    r(   r   r   r   r+   @   s   


zTestResult._setupStdoutc                 C   r&   r'   r   r(   r   r   r   startTestRunH   r*   zTestResult.startTestRunc                 C   s   	 |    d| _d S )NF)_restoreStdoutr"   r,   r   r   r   stopTestN   s   
zTestResult.stopTestc                 C   s   | j rV| jr6tj }tj }|r#|ds|d7 }| jt	|  |r6|ds.|d7 }| j
t|  | jt_| j
t_| jd | j  | jd | j  d S d S )N
r   )r   r"   r   r   getvaluer    endswithr   writeSTDOUT_LINEr!   STDERR_LINEr   seektruncater   )r	   outputerrorr   r   r   r2   S   s&   




zTestResult._restoreStdoutc                 C   r&   r'   r   r(   r   r   r   stopTestRunh   r*   zTestResult.stopTestRunc                 C   $   	 | j || ||f d| _d S NT)r   append_exc_info_to_stringr"   r	   r-   errr   r   r   addErrorn   s   
zTestResult.addErrorc                 C   r?   r@   )r   rA   rB   r"   rC   r   r   r   
addFailurev   s   
zTestResult.addFailurec                 C   s`   	 |d ur.t | ddr|   t|d |jr| j}n| j}||| ||f d| _d S d S )Nr   Fr   T)	r   r   
issubclassfailureExceptionr   r   rA   rB   r"   )r	   r-   ZsubtestrD   r   r   r   r   
addSubTest}   s   
zTestResult.addSubTestc                 C   s   	 d S r'   r   r,   r   r   r   
addSuccess   s   zTestResult.addSuccessc                 C   s   	 | j ||f d S r'   )r   rA   )r	   r-   reasonr   r   r   addSkip   s   zTestResult.addSkipc                 C   s   	 | j || ||f d S r'   )r   rA   rB   rC   r   r   r   addExpectedFailure   s   zTestResult.addExpectedFailurec                 C   s   	 | j | d S r'   )r   rA   r,   r   r   r   addUnexpectedSuccess   s   zTestResult.addUnexpectedSuccessc                 C   s@   	 t | jt | j  kodkn  ot| d pt | jdkS )Nr   r   )lenr   r   hasattrr   r(   r   r   r   wasSuccessful   s
   $zTestResult.wasSuccessfulc                 C   s   	 d| _ d S r@   )r   r(   r   r   r   r      s   
zTestResult.stopc           
      C   s   	 |\}}}|  ||||}tj|||| jdd}t| }| jrPtj	 }tj
	 }	|r>|ds7|d7 }|t|  |	rP|	dsI|	d7 }	|t|	  d|S )NT)capture_localscompactr4    )_clean_tracebacks	tracebackTracebackExceptionr   listformatr   r   r   r5   r    r6   rA   r8   r9   join)
r	   rD   r-   exctypevaluetbZtb_eZmsgLinesr<   r=   r   r   r   rB      s(   





zTestResult._exc_info_to_stringc           	      C   s   d }d}|||fg}|rV|  \}}}|r$| |r$|j}|r$| |s||ju r.| | |r5|}d}n||_|d urT|j|jfD ]}|d urS|t	|||jf qB|s|S )NTF)
pop_is_relevant_tb_leveltb_nextrH   _remove_unittest_tb_frames__traceback__	__cause____context__rA   type)	r	   r[   r\   r]   r-   retfirstZexcscr   r   r   rU      s*   

zTestResult._clean_tracebacksc                 C   s   d|j jv S )N
__unittest)tb_frame	f_globals)r	   r]   r   r   r   r_      s   z TestResult._is_relevant_tb_levelc                 C   sB   	 d }|r|  |s|}|j}|r|  |r
|d urd |_d S d S r'   )r_   r`   )r	   r]   prevr   r   r   ra      s   
z%TestResult._remove_unittest_tb_framesc                 C   s&   dt | j| jt| jt| jf S )Nz!<%s run=%i errors=%i failures=%i>)r   Zstrclass	__class__r   rO   r   r   r(   r   r   r   __repr__   s
   zTestResult.__repr__)NNN)__name__
__module____qualname__Z_previousTestClassZ_testRunEnteredZ_moduleSetUpFailedr%   r)   r.   r+   r1   r3   r2   r>   r   rE   rF   rI   rJ   rL   rM   rN   rQ   r   rB   rU   r_   ra   rn   r   r   r   r   r      s<    




	r   )r/   r   rV   rT   r   	functoolsr   ri   r   r8   r9   objectr   r   r   r   r   <module>   s    