???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................U
    e5d2                     @   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   &/usr/lib64/python3.8/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   sN   z| j | }W n tk
r"   Y n(X 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 ||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krd |_}t| D ]\}}|jr8 qt|r| || | || | || |j|_	t |jdds&t |ddrq&|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   s2  t |dd }|j}||krd S |jr(d S t |ddr8d S z
d|_W n tk
rV   Y nX t |dd }|d k	r.t|d z^z
|  W nN t
k
r } z0t|tr d|_t|}| 	||d| W 5 d }~X Y nX W 5 t|d |jdkr,|  t|jdkr,|jD ]}| j	||d	 d||d
 qX d S )NrF   __unittest_skip__F
setUpClass_setupStdout_restoreStdoutTr   r   info)r
   r   rA   r@   r%   r   doClassCleanupslentearDown_exceptions"_createClassOrModuleLevelException	Exceptionr   rH   r   r   )	r   r#   r3   previousClasscurrentClassrJ   exc	classNameer   r   r   rE      sL    







   zTestSuite._handleClassSetUpc                 C   s"   d }t |dd }|d k	r|j}|S )NrF   )r
   r=   )r   r3   previousModulerT   r   r   r   _get_previous_module   s
    zTestSuite._get_previous_modulec           	      C   s  |  |}|jj}||krd S | | d|_ztj| }W n tk
rR   Y d S X t|dd }|d k	rt	|d zz
|  W n t
k
r } zfzt  W n2 t
k
r } z| ||d| W 5 d }~X Y nX t|tr d|_| ||d| W 5 d }~X Y nX W 5 t	|d X d S )NFsetUpModulerK   rL   T)rZ   r   r=   rG   rA   sysmodulesKeyErrorr
   r   rS   r   doModuleCleanupsrR   r   rH   )	r   r#   r3   rY   ZcurrentModulemoduler[   rX   rV   r   r   r   rD      s>    





zTestSuite._handleModuleFixtureNc                 C   s$   | d| d}|  |||| d S )Nz ())_addClassOrModuleLevelException)r   r3   rV   Zmethod_namer   rN   	errorNamer   r   r   rR      s    z,TestSuite._createClassOrModuleLevelExceptionc                 C   s^   t |}t|dd }|d k	r8t|tjr8||t| n"|sN||t  n||| d S )NaddSkip)	_ErrorHolderr
   r   r   ZSkipTestr.   ZaddErrorr\   exc_info)r   r3   Z	exceptionrc   rN   errorrd   r   r   r   rb      s    z)TestSuite._addClassOrModuleLevelExceptionc                 C   s  |  |}|d krd S |jr d S ztj| }W n tk
rD   Y d S X t|dd }|d k	rt|d zNz
|  W n> t	k
r } z t|tr | 
||d| W 5 d }~X Y nX W 5 t|d zt  W n4 t	k
r  } z| 
||d| W 5 d }~X Y nX X d S )NtearDownModulerK   rL   )rZ   rA   r\   r]   r^   r
   r   r   r_   rS   rR   r   rH   )r   r3   rY   r`   rh   rX   r   r   r   rG      s:    





zTestSuite._handleModuleTearDownc           	      C   s  t |dd }|j}||krd S t |ddr.d S t |ddr>d S t |ddrNd S t |dd }|d k	rt|d zXz
|  W nH t	k
r } z*t
|tr t|}| ||d| W 5 d }~X Y nX W 5 t|d |  t|jd	kr|jD ]&}t|}| j||d
 d||d qX d S )NrF   r@   FrA   rI   tearDownClassrK   rL   r   r   rM   )r
   r   r   rO   rP   rQ   r   r   rR   rS   r   rH   )	r   r#   r3   rT   rU   ri   rV   rW   rX   r   r   r   rC     sB    







z TestSuite._tearDownPreviousClass)F)N)N)r<   r=   r>   r5   r;   rE   rZ   rD   rR   rb   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   B  s    z_ErrorHolder.__init__c                 C   s   | j S r   rj   r   r   r   r   idE  s    z_ErrorHolder.idc                 C   s   d S r   r   r   r   r   r   shortDescriptionH  s    z_ErrorHolder.shortDescriptionc                 C   s   d| j f S )Nz<ErrorHolder description=%r>rj   r   r   r   r   r   K  s    z_ErrorHolder.__repr__c                 C   s   |   S r   )rl   r   r   r   r   __str__N  s    z_ErrorHolder.__str__c                 C   s   d S r   r   r   r3   r   r   r   r5   Q  s    z_ErrorHolder.runc                 C   s
   |  |S r   r7   ro   r   r   r   r:   V  s    z_ErrorHolder.__call__c                 C   s   dS r   r   r   r   r   r   r"   Y  s    z_ErrorHolder.countTestCases)r<   r=   r>   ZfailureExceptionr   rl   rm   r   rn   r5   r:   r"   r   r   r   r   re   6  s   
re   c                 C   s(   zt |  W n tk
r"   Y dS X dS )NTF)r    r%   )r#   r   r   r   rB   \  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   e  s   rH   )r\    r   r   Z
__unittestr   objectr   r*   re   rB   rH   r   r   r   r   <module>   s   L [&	