U
    
W[¹"  ã                   @   s¬   d Z ddlmZmZ ddlZddlmZ ddlmZm	Z	 ddlm
Z
 ddlmZ G dd	„ d	ejƒZG d
d„ dejƒZG dd„ dejƒZG dd„ deƒZG dd„ deƒZ[dS )z0
Tests for returning Deferreds from a TestCase.
é    )ÚdivisionÚabsolute_importN)Údefer)ÚunittestÚreporter)Úutil)Údetestsc                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )Ú
SetUpTestsc                 C   s"   t  ¡ }t ¡ }| |¡}||fS ©N©ÚpyunitÚ
TestLoaderr   Ú
TestResultÚloadTestsFromTestCase©ÚselfÚklassÚloaderÚrÚs© r   úB/usr/lib/python3/dist-packages/twisted/trial/test/test_deferred.pyÚ
_loadSuite   s    
zSetUpTests._loadSuitec                 C   s8   |   tj¡\}}||ƒ |  | ¡ ¡ |  |jd¡ d S )Né   )r   r   ZDeferredSetUpOKÚ
assertTrueÚwasSuccessfulÚassertEqualÚtestsRun©r   ÚresultÚsuiter   r   r   Útest_success   s    zSetUpTests.test_successc                 C   sx   |   tjj¡ |  tj¡\}}||ƒ |   | ¡ ¡ |  |jd¡ |  t|j	ƒd¡ |  t|j
ƒd¡ |   tjj¡ d S ©Nr   r   )ÚassertFalser   ZDeferredSetUpFailÚ
testCalledr   r   r   r   ÚlenÚfailuresÚerrorsr   r   r   r   Ú	test_fail   s    zSetUpTests.test_failc                 C   sx   |   tjj¡ |  tj¡\}}||ƒ |   | ¡ ¡ |  |jd¡ |  t|j	ƒd¡ |  t|j
ƒd¡ |   tjj¡ d S r"   )r#   r   ZDeferredSetUpCallbackFailr$   r   r   r   r   r%   r&   r'   r   r   r   r   Útest_callbackFail)   s    zSetUpTests.test_callbackFailc                 C   sx   |   tjj¡ |  tj¡\}}||ƒ |   | ¡ ¡ |  |jd¡ |  t|j	ƒd¡ |  t|j
ƒd¡ |   tjj¡ d S r"   )r#   r   ZDeferredSetUpErrorr$   r   r   r   r   r%   r&   r'   r   r   r   r   Ú
test_error3   s    zSetUpTests.test_errorc                 C   sŠ   |   tjj¡ |  tj¡\}}||ƒ |  | ¡ ¡ |  |jd¡ |  t	|j
ƒd¡ |  t	|jƒd¡ |  t	|jƒd¡ |   tjj¡ d S r"   )r#   r   ZDeferredSetUpSkipr$   r   r   r   r   r   r%   r&   r'   Úskipsr   r   r   r   Ú	test_skip=   s    zSetUpTests.test_skipN)	Ú__name__Ú
__module__Ú__qualname__r   r!   r(   r)   r*   r,   r   r   r   r   r	      s   


r	   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚNeverFireTestsc                 C   s   t j| _dt _d S )Ngš™™™™™¹?)r   ÚDEFAULT_TIMEOUT_DURATIONÚ_oldTimeout©r   r   r   r   ÚsetUpJ   s    zNeverFireTests.setUpc                 C   s   | j t_d S r
   )r2   r   r1   r3   r   r   r   ÚtearDownN   s    zNeverFireTests.tearDownc                 C   s"   t  ¡ }t ¡ }| |¡}||fS r
   r   r   r   r   r   r   Q   s    
zNeverFireTests._loadSuitec                 C   s”   |   tjj¡ |  tj¡\}}||ƒ |   | ¡ ¡ |  |jd¡ |  t|j	ƒd¡ |  t|j
ƒd¡ |   tjj¡ |  |j
d d  tj¡¡ d S r"   )r#   r   ZDeferredSetUpNeverFirer$   r   r   r   r   r%   r&   r'   r   Úcheckr   ÚTimeoutErrorr   r   r   r   Ú
test_setUpW   s    zNeverFireTests.test_setUpN)r-   r.   r/   r4   r5   r   r8   r   r   r   r   r0   I   s   r0   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú
TestTesterc                 C   s   t dƒ‚d S )Nzmust override me)ÚNotImplementedError©r   Únamer   r   r   ÚgetTestd   s    zTestTester.getTestc                 C   s   t  ¡ }|  |¡ |¡ |S r
   )r   r   r=   Úrun)r   r<   r   r   r   r   ÚrunTestg   s    zTestTester.runTestN)r-   r.   r/   r=   r?   r   r   r   r   r9   c   s   r9   c                   @   sl   e Zd Zdd„ Zdd„ Zdd„ Zejddge_d	d
„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚDeferredTestsc                 C   s
   t  |¡S r
   )r   r@   r;   r   r   r   r=   n   s    zDeferredTests.getTestc                 C   s*   |   d¡}|  | ¡ ¡ |  |jd¡ d S ©NÚ	test_passr   ©r?   r   r   r   r   ©r   r   r   r   r   rB   q   s    
zDeferredTests.test_passc                 C   s8   |   d¡}|  | ¡ ¡ |  |jd¡ |  tjj¡ d S )NÚtest_passGeneratedr   ©r?   r   r   r   r   r   r@   ÚtouchedrD   r   r   r   rE   v   s    
z DeferredTests.test_passGeneratedz6twisted.internet.defer.deferredGenerator is deprecated)Úmessagec                 C   s8   |   d¡}|  | ¡ ¡ |  |jd¡ |  tjj¡ dS )zQ
        The body of a L{defer.inlineCallbacks} decorated test gets run.
        Útest_passInlineCallbacksr   NrF   rD   r   r   r   rI      s    
z&DeferredTests.test_passInlineCallbacksc                 C   s<   |   d¡}|  | ¡ ¡ |  |jd¡ |  t|jƒd¡ d S )Nr(   r   ©r?   r#   r   r   r   r%   r&   rD   r   r   r   r(   ˆ   s    
zDeferredTests.test_failc                 C   s<   |   d¡}|  | ¡ ¡ |  |jd¡ |  t|jƒd¡ d S )NÚtest_failureInCallbackr   rJ   rD   r   r   r   rK   Ž   s    
z$DeferredTests.test_failureInCallbackc                 C   s<   |   d¡}|  | ¡ ¡ |  |jd¡ |  t|jƒd¡ d S )NÚtest_errorInCallbackr   )r?   r#   r   r   r   r%   r'   rD   r   r   r   rL   ”   s    
z"DeferredTests.test_errorInCallbackc                 C   sJ   |   d¡}|  | ¡ ¡ |  |jd¡ |  t|jƒd¡ |  tj	j
¡ d S ©Nr,   r   )r?   r   r   r   r   r%   r+   r#   r   r@   rG   rD   r   r   r   r,   š   s
    
zDeferredTests.test_skipc                 C   s`   |   d¡}|  | ¡ ¡ |  |jd¡ |  t|jƒd¡ |  t|jƒd¡ |  t|jƒd¡ d S ©NZtest_expectedFailurer   r   )	r?   r   r   r   r   r%   r'   r&   ÚexpectedFailuresrD   r   r   r   Ú	test_todo¡   s    
zDeferredTests.test_todoc                 C   s.   |   d¡}|  |jd¡ |  | ¡ |j¡ d S )NÚtest_threadr   )r?   r   r   r   r   r'   rD   r   r   r   rQ   ©   s    
zDeferredTests.test_threadN)r-   r.   r/   r=   rB   rE   r   ÚsuppressZsupressrI   r(   rK   rL   r,   rP   rQ   r   r   r   r   r@   m   s   ÿ
	r@   c                   @   sd   e 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d„ Zdd„ Zdd„ ZdS )ÚTimeoutTestsc                 C   s
   t  |¡S r
   )r   rS   r;   r   r   r   r=   ±   s    zTimeoutTests.getTestc                 C   s   |   | tj¡tj¡ d S r
   )r   r6   r   r7   )r   Úerrorr   r   r   Ú_wasTimeout´   s    ÿzTimeoutTests._wasTimeoutc                 C   s*   |   d¡}|  | ¡ ¡ |  |jd¡ d S rA   rC   rD   r   r   r   rB   ¸   s    
zTimeoutTests.test_passc                 C   s*   |   d¡}|  | ¡ ¡ |  |jd¡ d S )NÚtest_passDefaultr   rC   rD   r   r   r   rV   ½   s    
zTimeoutTests.test_passDefaultc                 C   sP   |   d¡}|  | ¡ ¡ |  |jd¡ |  t|jƒd¡ |  |jd d ¡ d S )NÚtest_timeoutr   r   ©r?   r#   r   r   r   r%   r'   rU   rD   r   r   r   rW   Â   s
    
zTimeoutTests.test_timeoutc                 C   sP   |   d¡}|  | ¡ ¡ |  |jd¡ |  t|jƒd¡ |  |jd d ¡ d S )NÚtest_timeoutZeror   r   rX   rD   r   r   r   rY   É   s
    
zTimeoutTests.test_timeoutZeroc                 C   s<   |   d¡}|  | ¡ ¡ |  |jd¡ |  t|jƒd¡ d S rM   )r?   r   r   r   r   r%   r+   rD   r   r   r   r,   Ð   s    
zTimeoutTests.test_skipc                 C   sP   |   d¡}|  | ¡ ¡ |  |jd¡ |  t|jƒd¡ |  |jd d ¡ d S rN   )r?   r   r   r   r   r%   rO   rU   rD   r   r   r   rP   Ö   s
    
zTimeoutTests.test_todoc                 C   s8   |   d¡}|  | ¡ ¡ |  |jd¡ |  tjj¡ d S )NÚtest_errorPropagationr   )	r?   r#   r   r   r   rU   r   rS   ZtimedOutrD   r   r   r   rZ   Ý   s    
z"TimeoutTests.test_errorPropagationc                 C   sP   t  ¡ }| tj¡}t ¡ }| |¡ |  t	|j
ƒd¡ |  |j
d d ¡ d S r"   )r   r   r   r   ZTestClassTimeoutAttributer   r   r>   r   r%   r'   rU   )r   r   r    r   r   r   r   Útest_classTimeoutã   s    
zTimeoutTests.test_classTimeoutc                 C   sZ   ddl m} | d|j¡}|  d¡}| ¡ r4| ¡  |  | ¡ ¡ |  	|j
d d ¡ d S )Nr   )Úreactoré   Ztest_calledButNeverCallbackr   )Útwisted.internetr\   Z	callLaterZcrashr?   ZactiveZcancelr#   r   rU   r'   )r   r\   Úcallr   r   r   r   Ú&test_callbackReturnsNonCallingDeferredë   s    
z3TimeoutTests.test_callbackReturnsNonCallingDeferredN)r-   r.   r/   r=   rU   rB   rV   rW   rY   r,   rP   rZ   r[   r`   r   r   r   r   rS   °   s   rS   )Ú__doc__Z
__future__r   r   r   r   r^   r   Ztwisted.trialr   r   Ztwisted.trial.testr   ZTestCaser	   r0   r9   r@   rS   r   r   r   r   Ú<module>   s   7
CH