U
    T‚gˆ&  ã                   @  s¬   d Z ddlmZ ddlZddlmZ ddlmZ ddl	m
Z
mZ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.
é    )ÚannotationsN)Údefer)ÚFailure)ÚreporterÚunittestÚutil)Údetestsc                   @  sb   e Zd Zdddœdd„Zddœdd	„Zddœd
d„Zddœdd„Zddœdd„Zddœdd„ZdS )Ú
SetUpTestsútype[pyunit.TestCase]ú,tuple[reporter.TestResult, pyunit.TestSuite]©ÚklassÚreturnc                 C  s"   t  ¡ }t ¡ }| |¡}||fS ©N©ÚpyunitÚ
TestLoaderr   Ú
TestResultÚloadTestsFromTestCase©Úselfr   ÚloaderÚrÚs© r   úD/tmp/pip-unpacked-wheel-1_7di8ic/twisted/trial/test/test_deferred.pyÚ
_loadSuite   s    
zSetUpTests._loadSuiteÚNone©r   c                 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_error4   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/   r0   r2   r   r   r   r   r	      s   


r	   c                   @  sF   e Zd Zddœdd„Zddœdd„Zddd	œd
d„Zddœdd„ZdS )ÚNeverFireTestsr   r   c                 C  s   t j| _dt _d S )Ngš™™™™™¹?)r   ÚDEFAULT_TIMEOUT_DURATIONÚ_oldTimeout©r   r   r   r   ÚsetUpK   s    zNeverFireTests.setUpc                 C  s   | j t_d S r   )r8   r   r7   r9   r   r   r   ÚtearDownO   s    zNeverFireTests.tearDownr
   r   r   c                 C  s"   t  ¡ }t ¡ }| |¡}||fS r   r   r   r   r   r   r   R   s    
zNeverFireTests._loadSuitec                 C  s¬   |   tjj¡ |  tj¡\}}||ƒ |   | ¡ ¡ |  |jd¡ |  t|j	ƒd¡ |  t|j
ƒd¡ |   tjj¡ t|j
d d tƒsŒt‚|  |j
d d  tj¡¡ d S r(   )r)   r   ZDeferredSetUpNeverFirer*   r   r!   r"   r#   r+   r,   r-   Ú
isinstancer   ÚAssertionErrorr    Úcheckr   ÚTimeoutErrorr$   r   r   r   Ú
test_setUpZ   s    zNeverFireTests.test_setUpN)r3   r4   r5   r:   r;   r   r@   r   r   r   r   r6   J   s   r6   c                   @  s,   e Zd Zdddœdd„Zdddœdd„Zd	S )
Ú
TestTesterÚstrzpyunit.TestCase©Únamer   c                 C  s   t dƒ‚d S )Nzmust override me)ÚNotImplementedError©r   rD   r   r   r   ÚgetTesth   s    zTestTester.getTestzreporter.TestResultc                 C  s   t  ¡ }|  |¡ |¡ |S r   )r   r   rG   Úrun)r   rD   r%   r   r   r   ÚrunTestk   s    zTestTester.runTestN)r3   r4   r5   rG   rI   r   r   r   r   rA   g   s   rA   c                   @  sª   e Zd Zdddœdd„Zddœdd	„Zddœd
d„Zejdd�ge_ddœdd„Z	ddœdd„Z
ddœdd„Zddœdd„Zddœdd„Zddœdd„Zddœdd„ZdS )ÚDeferredTestsrB   zdetests.DeferredTestsrC   c                 C  s
   t  |¡S r   )r   rJ   rF   r   r   r   rG   r   s    zDeferredTests.getTestr   r   c                 C  s*   |   d¡}|  | ¡ ¡ |  |jd¡ d S ©NÚ	test_passr   ©rI   r    r!   r"   r#   ©r   r%   r   r   r   rL   u   s    
zDeferredTests.test_passc                 C  s8   |   d¡}|  | ¡ ¡ |  |jd¡ |  tjj¡ d S )NÚtest_passGeneratedr   ©rI   r    r!   r"   r#   r   rJ   ÚtouchedrN   r   r   r   rO   z   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   NrP   rN   r   r   r   rS   „   s    
z&DeferredTests.test_passInlineCallbacksc                 C  s<   |   d¡}|  | ¡ ¡ |  |jd¡ |  t|jƒd¡ d S )Nr.   r   ©rI   r)   r!   r"   r#   r+   r,   rN   r   r   r   r.   �   s    
zDeferredTests.test_failc                 C  s<   |   d¡}|  | ¡ ¡ |  |jd¡ |  t|jƒd¡ d S )NÚtest_failureInCallbackr   rT   rN   r   r   r   rU   “   s    
z$DeferredTests.test_failureInCallbackc                 C  s<   |   d¡}|  | ¡ ¡ |  |jd¡ |  t|jƒd¡ d S )NÚtest_errorInCallbackr   )rI   r)   r!   r"   r#   r+   r-   rN   r   r   r   rV   ™   s    
z"DeferredTests.test_errorInCallbackc                 C  sJ   |   d¡}|  | ¡ ¡ |  |jd¡ |  t|jƒd¡ |  tj	j
¡ d S ©Nr2   r   )rI   r    r!   r"   r#   r+   r1   r)   r   rJ   rQ   rN   r   r   r   r2   Ÿ   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   )	rI   r    r!   r"   r#   r+   r-   r,   ÚexpectedFailuresrN   r   r   r   Ú	test_todo¦   s    
zDeferredTests.test_todoc                 C  s.   |   d¡}|  |jd¡ |  | ¡ |j¡ d S )NÚtest_threadr   )rI   r"   r#   r    r!   r-   rN   r   r   r   r[   ®   s    
zDeferredTests.test_threadN)r3   r4   r5   rG   rL   rO   r   ÚsuppressZsupressrS   r.   rU   rV   r2   rZ   r[   r   r   r   r   rJ   q   s   
ÿ	rJ   c                   @  sª   e Zd Zdddœdd„Zdddœd	d
„Zddœdd„Zddœdd„Zddœdd„Zddœdd„Zddœdd„Z	ddœdd„Z
ddœdd„Zddœdd„Zddœdd„ZdS )ÚTimeoutTestsrB   zdetests.TimeoutTestsrC   c                 C  s
   t  |¡S r   )r   r]   rF   r   r   r   rG   µ   s    zTimeoutTests.getTestr   r   )Úerrorr   c                 C  s   |   | tj¡tj¡ d S r   )r"   r>   r   r?   )r   r^   r   r   r   Ú_wasTimeout¸   s    zTimeoutTests._wasTimeoutr   c                 C  s*   |   d¡}|  | ¡ ¡ |  |jd¡ d S rK   rM   rN   r   r   r   rL   »   s    
zTimeoutTests.test_passc                 C  s*   |   d¡}|  | ¡ ¡ |  |jd¡ d S )NÚtest_passDefaultr   rM   rN   r   r   r   r`   À   s    
zTimeoutTests.test_passDefaultc                 C  sh   |   d¡}|  | ¡ ¡ |  |jd¡ |  t|jƒd¡ t|jd d tƒsPt	‚|  
|jd d ¡ d S )NÚtest_timeoutr   r   ©rI   r)   r!   r"   r#   r+   r-   r<   r   r=   r_   rN   r   r   r   ra   Å   s    
zTimeoutTests.test_timeoutc                 C  sh   |   d¡}|  | ¡ ¡ |  |jd¡ |  t|jƒd¡ t|jd d tƒsPt	‚|  
|jd d ¡ d S )NÚtest_timeoutZeror   r   rb   rN   r   r   r   rc   Í   s    
zTimeoutTests.test_timeoutZeroc                 C  s<   |   d¡}|  | ¡ ¡ |  |jd¡ |  t|jƒd¡ d S rW   )rI   r    r!   r"   r#   r+   r1   rN   r   r   r   r2   Õ   s    
zTimeoutTests.test_skipc                 C  sh   |   d¡}|  | ¡ ¡ |  |jd¡ |  t|jƒd¡ t|jd d tƒsPt	‚|  
|jd d ¡ d S rX   )rI   r    r!   r"   r#   r+   rY   r<   r   r=   r_   rN   r   r   r   rZ   Û   s    
zTimeoutTests.test_todoc                 C  sH   |   d¡}|  | ¡ ¡ |  |jd¡ tjjd k	s6t‚|  	tjj¡ d S )NÚtest_errorPropagationr   )
rI   r)   r!   r"   r#   r   r]   ZtimedOutr=   r_   rN   r   r   r   rd   ã   s
    
z"TimeoutTests.test_errorPropagationc                 C  sh   t  ¡ }| tj¡}t ¡ }| |¡ |  t	|j
ƒd¡ t|j
d d tƒsPt‚|  |j
d d ¡ d S r(   )r   r   r   r   ZTestClassTimeoutAttributer   r   rH   r"   r+   r-   r<   r   r=   r_   )r   r   r&   r%   r   r   r   Útest_classTimeoutê   s    
zTimeoutTests.test_classTimeoutc                 C  sr   ddl m} | d|j¡}|  d¡}| ¡ r4| ¡  |  | ¡ ¡ t	|j
d d tƒsZt‚|  |j
d d ¡ d S )Nr   )Úreactoré   Ztest_calledButNeverCallbackr   )Útwisted.internetrf   Z	callLaterZcrashrI   ÚactiveÚcancelr)   r!   r<   r-   r   r=   r_   )r   rf   Úcallr%   r   r   r   Ú&test_callbackReturnsNonCallingDeferredó   s    
z3TimeoutTests.test_callbackReturnsNonCallingDeferredN)r3   r4   r5   rG   r_   rL   r`   ra   rc   r2   rZ   rd   re   rl   r   r   r   r   r]   ´   s   	r]   )Ú__doc__Ú
__future__r   r   r   rh   r   Ztwisted.python.failurer   Ztwisted.trialr   r   Ztwisted.trial.testr   ZTestCaser	   r6   rA   rJ   r]   r   r   r   r   Ú<module>   s   9
CN