a
    &RîhÈ4  ã                   @   sx   d dl Z ddlmZ ddlmZ dZdd„ ZG dd	„ d	eƒZG d
d„ deƒZG dd„ deƒZ	dd„ Z
G dd„ deƒZdS )é    Né   )Úcase)ÚutilTc                 C   s   t | |dd„ ƒ}|ƒ  d S )Nc                   S   s   d S ©N© r   r   r   ú6/opt/python-3.9.24/usr/lib/python3.9/unittest/suite.pyÚ<lambda>   ó    z!_call_if_exists.<locals>.<lambda>)Úgetattr)ÚparentÚattrÚfuncr   r   r   Ú_call_if_exists   s    r   c                   @   sj   e 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dd„ Zdd„ Zdd„ ZdS )ÚBaseTestSuiteTr   c                 C   s   g | _ d| _|  |¡ d S ©Nr   )Ú_testsÚ_removed_testsÚaddTests)ÚselfÚtestsr   r   r   Ú__init__   s    zBaseTestSuite.__init__c                 C   s   dt  | j¡t| ƒf S )Nz<%s tests=%s>)r   ÚstrclassÚ	__class__Úlist©r   r   r   r   Ú__repr__   s    zBaseTestSuite.__repr__c                 C   s    t || jƒstS t| ƒt|ƒkS r   )Ú
isinstancer   ÚNotImplementedr   )r   Úotherr   r   r   Ú__eq__   s    zBaseTestSuite.__eq__c                 C   s
   t | jƒS r   )Úiterr   r   r   r   r   Ú__iter__"   s    zBaseTestSuite.__iter__c                 C   s$   | j }| D ]}|r
|| ¡ 7 }q
|S r   )r   ÚcountTestCases)r   ZcasesÚtestr   r   r   r"   %   s
    zBaseTestSuite.countTestCasesc                 C   sL   t |ƒstd t|ƒ¡ƒ‚t|tƒr<t|tjt	fƒr<tdƒ‚| j
 |¡ d S )Nz{} is not callablezNTestCases and TestSuites must be instantiated before passing them to addTest())ÚcallableÚ	TypeErrorÚformatÚreprr   ÚtypeÚ
issubclassr   ZTestCaseÚ	TestSuiter   Úappend©r   r#   r   r   r   ÚaddTest,   s    ÿzBaseTestSuite.addTestc                 C   s*   t |tƒrtdƒ‚|D ]}|  |¡ qd S )Nz0tests must be an iterable of tests, not a string)r   Ústrr%   r-   )r   r   r#   r   r   r   r   6   s    
zBaseTestSuite.addTestsc                 C   s8   t | ƒD ]*\}}|jr q4||ƒ | jr|  |¡ q|S r   )Ú	enumerateÚ
shouldStopÚ_cleanupÚ_removeTestAtIndex)r   ÚresultÚindexr#   r   r   r   Úrun<   s    zBaseTestSuite.runc                 C   sL   z| j | }W n ty    Y n(0 t|dƒr>|  j| ¡ 7  _d | j |< d S )Nr"   )r   r%   Úhasattrr   r"   )r   r4   r#   r   r   r   r2   E   s    
z BaseTestSuite._removeTestAtIndexc                 O   s   | j |i |¤ŽS r   ©r5   )r   ÚargsÚkwdsr   r   r   Ú__call__S   s    zBaseTestSuite.__call__c                 C   s   | D ]}|  ¡  qd S r   )Údebugr,   r   r   r   r;   V   s    zBaseTestSuite.debugN)r   )Ú__name__Ú
__module__Ú__qualname__r1   r   r   r   r!   r"   r-   r   r5   r2   r:   r;   r   r   r   r   r      s   

	r   c                   @   sZ   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zddd„Zddd„Z	dd„ Z
dd„ ZdS )r*   Fc                 C   sÔ   d}t |ddƒdu rd |_}t| ƒD ]ˆ\}}|jr8 q°t|ƒrˆ|  ||¡ |  ||¡ |  ||¡ |j|_	t |jddƒs&t |ddƒrˆq&|s–||ƒ n| 
¡  | jr&|  |¡ q&|rÐ|  d |¡ |  |¡ d|_|S )NFÚ_testRunEnteredTÚ_classSetupFailedÚ_moduleSetUpFailed)r
   r?   r/   r0   Ú_isnotsuiteÚ_tearDownPreviousClassÚ_handleModuleFixtureÚ_handleClassSetUpr   Ú_previousTestClassr;   r1   r2   Ú_handleModuleTearDown)r   r3   r;   ZtopLevelr4   r#   r   r   r   r5   f   s2    

ÿ

zTestSuite.runc                 C   s   t ƒ }|  |d¡ d S )NT)Ú_DebugResultr5   )r   r;   r   r   r   r;   ‡   s    zTestSuite.debugc                 C   sZ  t |dd ƒ}|j}||krd S |jr(d S t |ddƒr8d S d}z
d|_W n tyX   Y n0 t |dd ƒ}t |dd ƒ}|d urVt|dƒ zÂz
|ƒ  W nl tyþ } zTt|tƒr®‚ d}z
d|_W n tyÎ   Y n0 t	 
|¡}	|  ||d|	¡ W Y d }~n
d }~0 0 |r<|d ur<|ƒ  |jD ]}
| j||
d d|	|
d	 qW t|d
ƒ nt|d
ƒ 0 d S )NrF   Ú__unittest_skip__FÚ
setUpClassÚdoClassCleanupsÚ_setupStdoutTr   ©ÚinfoÚ_restoreStdout)r
   r   rA   r@   r%   r   Ú	Exceptionr   rH   r   r   Ú"_createClassOrModuleLevelExceptionÚtearDown_exceptions)r   r#   r3   ÚpreviousClassÚcurrentClassZfailedrJ   rK   ÚeÚ	classNameÚexc_infor   r   r   rE   Ž   sR    






þ
þzTestSuite._handleClassSetUpc                 C   s"   d }t |dd ƒ}|d ur|j}|S )NrF   )r
   r=   )r   r3   ÚpreviousModulerS   r   r   r   Ú_get_previous_module¼   s
    zTestSuite._get_previous_modulec              
   C   s0  |   |¡}|jj}||krd S |  |¡ d|_ztj| }W n tyP   Y d S 0 t|dd ƒ}|d ur,t	|dƒ z¬z
|ƒ  W nF t
yÄ } z.t|tƒrš‚ d|_|  ||d|¡ W Y d }~n
d }~0 0 |jrzt ¡  W n6 t
y } z|  ||d|¡ W Y d }~n
d }~0 0 W t	|dƒ nt	|dƒ 0 d S )NFÚsetUpModulerL   TrO   )rY   r   r=   rG   rA   ÚsysÚmodulesÚKeyErrorr
   r   rP   r   rH   rQ   r   ÚdoModuleCleanups)r   r#   r3   rX   ZcurrentModuleÚmodulerZ   rU   r   r   r   rD   Ä   sB    





þþzTestSuite._handleModuleFixtureNc                 C   s$   |› d|› d}|   ||||¡ d S )Nz (ú))Ú_addClassOrModuleLevelException)r   r3   ÚexcZmethod_namer   rN   Ú	errorNamer   r   r   rQ   é   s    z,TestSuite._createClassOrModuleLevelExceptionc                 C   s^   t |ƒ}t|dd ƒ}|d ur8t|tjƒr8||t|ƒƒ n"|sN| |t ¡ ¡ n| ||¡ d S )NÚaddSkip)	Ú_ErrorHolderr
   r   r   ZSkipTestr.   ZaddErrorr[   rW   )r   r3   Ú	exceptionrc   rN   Úerrorrd   r   r   r   ra   î   s    z)TestSuite._addClassOrModuleLevelExceptionc              
   C   s  |   |¡}|d u rd S |jr d S ztj| }W n tyB   Y d S 0 t|dƒ z¾t|dd ƒ}|d ur°z
|ƒ  W n@ ty® } z(t|t	ƒrŠ‚ |  
||d|¡ W Y d }~n
d }~0 0 zt ¡  W nB t yþ } z(t|t	ƒrÚ‚ |  
||d|¡ W Y d }~n
d }~0 0 W t|dƒ nt|dƒ 0 d S )NrL   ÚtearDownModulerO   )rY   rA   r[   r\   r]   r   r
   rP   r   rH   rQ   r   r^   )r   r3   rX   r_   rh   rU   r   r   r   rG   ú   s@    



þ
þzTestSuite._handleModuleTearDownc           
   
   C   s^  t |dd ƒ}|j}||ks"|d u r&d S t |ddƒr6d S t |ddƒrFd S t |ddƒrVd S t |dd ƒ}t |dd ƒ}|d u r‚|d u r‚d S t|dƒ zÀ|d urìz
|ƒ  W nJ tyê } z2t|tƒr¼‚ t |¡}|  ||d|¡ W Y d }~n
d }~0 0 |d ur@|ƒ  |j	D ]<}	t|tƒr|	d	 ‚t |¡}| j||	d	 d||	d
 qW t|dƒ nt|dƒ 0 d S )NrF   r@   FrA   rI   ÚtearDownClassrK   rL   r   rM   rO   )
r
   r   r   rP   r   rH   r   r   rQ   rR   )
r   r#   r3   rS   rT   ri   rK   rU   rV   rW   r   r   r   rC     sN    



þ


ýz TestSuite._tearDownPreviousClass)F)N)N)r<   r=   r>   r5   r;   rE   rY   rD   rQ   ra   rG   rC   r   r   r   r   r*   \   s   

!.& ÿ
 ÿ
#r*   c                   @   sP   e Zd ZdZ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 )re   Nc                 C   s
   || _ d S r   ©Údescription)r   rk   r   r   r   r   T  s    z_ErrorHolder.__init__c                 C   s   | j S r   rj   r   r   r   r   ÚidW  s    z_ErrorHolder.idc                 C   s   d S r   r   r   r   r   r   ÚshortDescriptionZ  s    z_ErrorHolder.shortDescriptionc                 C   s   d| j f S )Nz<ErrorHolder description=%r>rj   r   r   r   r   r   ]  s    z_ErrorHolder.__repr__c                 C   s   |   ¡ S r   )rl   r   r   r   r   Ú__str__`  s    z_ErrorHolder.__str__c                 C   s   d S r   r   ©r   r3   r   r   r   r5   c  s    z_ErrorHolder.runc                 C   s
   |   |¡S r   r7   ro   r   r   r   r:   h  s    z_ErrorHolder.__call__c                 C   s   dS r   r   r   r   r   r   r"   k  s    z_ErrorHolder.countTestCases)r<   r=   r>   ZfailureExceptionr   rl   rm   r   rn   r5   r:   r"   r   r   r   r   re   H  s   
re   c                 C   s&   zt | ƒ W n ty    Y dS 0 dS )NTF)r    r%   )r#   r   r   r   rB   n  s
    rB   c                   @   s   e Zd ZdZdZdZdS )rH   NF)r<   r=   r>   rF   rA   r0   r   r   r   r   rH   w  s   rH   )r[   Ú r   r   Z
__unittestr   Úobjectr   r*   re   rB   rH   r   r   r   r   Ú<module>   s   L m&	