???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3

  \ï(  ã               @   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.6/unittest/suite.pyÚ<lambda>   s    z!_call_if_exists.<locals>.<lambda>)Úgetattr)ÚparentÚattrÚfuncr   r   r   Ú_call_if_exists   s    r   c               @   sl   e Zd ZdZf f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 )ÚBaseTestSuiteTc             C   s   g | _ d| _| j|ƒ d S )Nr   )Ú_testsÚ_removed_testsÚaddTests)ÚselfÚtestsr   r   r   Ú__init__   s    zBaseTestSuite.__init__c             C   s   dt j| 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 )N)Ú
isinstancer   ÚNotImplementedr   )r   Úotherr   r   r   Ú__eq__   s    zBaseTestSuite.__eq__c             C   s
   t | jƒS )N)Úiterr   )r   r   r   r   Ú__iter__"   s    zBaseTestSuite.__iter__c             C   s(   | j }x| D ]}|r||jƒ 7 }qW |S )N)r   ÚcountTestCases)r   ZcasesÚtestr   r   r   r   %   s
    
zBaseTestSuite.countTestCasesc             C   sL   t |ƒstdjt|ƒƒƒ‚t|tƒr<t|tjt	fƒr<tdƒ‚| j
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ƒ‚x|D ]}| j|ƒ qW 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   s:   x4t | ƒD ](\}}|jrP ||ƒ | jr
| j|ƒ q
W |S )N)Ú	enumerateÚ
shouldStopÚ_cleanupÚ_removeTestAtIndex)r   ÚresultÚindexr   r   r   r   Úrun<   s    zBaseTestSuite.runc             C   sN   y| j | }W n tk
r"   Y n(X t|dƒr@|  j|jƒ 7  _d | j |< d S )Nr   )r   r!   Úhasattrr   r   )r   r/   r   r   r   r   r-   E   s    
z BaseTestSuite._removeTestAtIndexc             O   s   | j ||ŽS )N)r0   )r   ÚargsÚkwdsr   r   r   Ú__call__S   s    zBaseTestSuite.__call__c             C   s   x| D ]}|j ƒ  qW d S )N)Údebug)r   r   r   r   r   r5   V   s    
zBaseTestSuite.debugN)Ú__name__Ú
__module__Ú__qualname__r,   r   r   r   r   r   r(   r   r0   r-   r4   r5   r   r   r   r   r      s   
	r   c               @   sN   e 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S )r&   Fc             C   sÖ   d}t |ddƒdkrd |_}x’t| ƒD ]†\}}|jr8P t|ƒrˆ| j||ƒ | j||ƒ | j||ƒ |j|_	t |jddƒs(t |ddƒrˆq(|s–||ƒ n|j
ƒ  | jr(| j|ƒ q(W |rÒ| jd |ƒ | j|ƒ d|_|S )NFÚ_testRunEnteredTÚ_classSetupFailedÚ_moduleSetUpFailed)r   r9   r*   r+   Ú_isnotsuiteÚ_tearDownPreviousClassÚ_handleModuleFixtureÚ_handleClassSetUpr   Ú_previousTestClassr5   r,   r-   Ú_handleModuleTearDown)r   r.   r5   ZtopLevelr/   r   r   r   r   r0   f   s0    


zTestSuite.runc             C   s   t ƒ }| j|dƒ d S )NT)Ú_DebugResultr0   )r   r5   r   r   r   r5   ‡   s    zTestSuite.debugc       	       C   sì   t |dd ƒ}|j}||krd S |jr(d S t |ddƒr8d S y
d|_W n tk
rV   Y nX t |dd ƒ}|d k	rèt|dƒ zdy
|ƒ  W nT tk
rÖ } z8t|tƒr ‚ d|_t	j
|ƒ}d| }| j|||ƒ W Y d d }~X nX W d t|dƒ X d S )	Nr@   Ú__unittest_skip__FÚ
setUpClassÚ_setupStdoutTzsetUpClass (%s)Ú_restoreStdout)r   r   r;   r:   r!   r   Ú	Exceptionr   rB   r   r   Ú_addClassOrModuleLevelException)	r   r   r.   ÚpreviousClassÚcurrentClassrD   ÚeÚ	classNameÚ	errorNamer   r   r   r?   Ž   s2    




$zTestSuite._handleClassSetUpc             C   s"   d }t |dd ƒ}|d k	r|j}|S )Nr@   )r   r7   )r   r.   ÚpreviousModulerI   r   r   r   Ú_get_previous_module®   s
    zTestSuite._get_previous_modulec       	       C   sÜ   | j |ƒ}|jj}||krd S | j|ƒ d|_ytj| }W n tk
rP   d S X t|dd ƒ}|d k	rØt	|dƒ zZy
|ƒ  W nJ t
k
rÆ } z.t|tƒrš‚ d|_d| }| j|||ƒ W Y d d }~X nX W d t	|dƒ X d S )NFÚsetUpModulerE   TzsetUpModule (%s)rF   )rO   r   r7   rA   r;   ÚsysÚmodulesÚKeyErrorr   r   rG   r   rB   rH   )	r   r   r.   rN   ZcurrentModuleÚmodulerP   rK   rM   r   r   r   r>   ¶   s,    




$zTestSuite._handleModuleFixturec             C   sL   t |ƒ}t|dd ƒ}|d k	r8t|tjƒr8||t|ƒƒ n|j|tjƒ ƒ d S )NÚaddSkip)	Ú_ErrorHolderr   r   r   ZSkipTestr)   ZaddErrorrQ   Úexc_info)r   r.   Z	exceptionrM   ÚerrorrU   r   r   r   rH   Ò   s
    z)TestSuite._addClassOrModuleLevelExceptionc              C   sÈ   | j |ƒ}|d krd S |jr d S ytj| }W n tk
rB   d S X t|dd ƒ}|d k	rÄt|dƒ zTy
|ƒ  W nD tk
r² } z(t|t	ƒrŒ‚ d| }| j
|||ƒ W Y d d }~X nX W d t|dƒ X d S )NÚtearDownModulerE   ztearDownModule (%s)rF   )rO   r;   rQ   rR   rS   r   r   rG   r   rB   rH   )r   r.   rN   rT   rY   rK   rM   r   r   r   rA   Ú   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ƒ z^y
|ƒ  W nN tk
rÆ } z2t|tƒr–‚ tj|ƒ}d| }| j|||ƒ W Y d d }~X nX W d t|d	ƒ X d S )
Nr@   r:   Fr;   rC   ÚtearDownClassrE   ztearDownClass (%s)rF   )	r   r   r   rG   r   rB   r   r   rH   )	r   r   r.   rI   rJ   rZ   rK   rL   rM   r   r   r   r=   ó   s,    



$z TestSuite._tearDownPreviousClassN)F)r6   r7   r8   r0   r5   r?   rO   r>   rH   rA   r=   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 )rV   Nc             C   s
   || _ d S )N)Údescription)r   r[   r   r   r   r     s    z_ErrorHolder.__init__c             C   s   | j S )N)r[   )r   r   r   r   Úid  s    z_ErrorHolder.idc             C   s   d S )Nr   )r   r   r   r   ÚshortDescription   s    z_ErrorHolder.shortDescriptionc             C   s   d| j f S )Nz<ErrorHolder description=%r>)r[   )r   r   r   r   r   #  s    z_ErrorHolder.__repr__c             C   s   | j ƒ S )N)r\   )r   r   r   r   Ú__str__&  s    z_ErrorHolder.__str__c             C   s   d S )Nr   )r   r.   r   r   r   r0   )  s    z_ErrorHolder.runc             C   s
   | j |ƒS )N)r0   )r   r.   r   r   r   r4   .  s    z_ErrorHolder.__call__c             C   s   dS )Nr   r   )r   r   r   r   r   1  s    z_ErrorHolder.countTestCases)r6   r7   r8   ZfailureExceptionr   r\   r]   r   r^   r0   r4   r   r   r   r   r   rV     s   
rV   c             C   s&   yt | ƒ W n tk
r    dS X dS )NTF)r   r!   )r   r   r   r   r<   4  s
    r<   c               @   s   e Zd ZdZdZdZdS )rB   NF)r6   r7   r8   r@   r;   r+   r   r   r   r   rB   =  s   rB   )rQ   Ú r   r   Z
__unittestr   Úobjectr   r&   rV   r<   rB   r   r   r   r   Ú<module>   s   L 3&	