U
    2ÜŸjÁ*  ã                   @  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-4b529toj/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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 )zQ
        The body of a L{defer.inlineCallbacks} decorated test gets run.
        Útest_passInlineCallbacksr   N)rI   r    r!   r"   r#   r   rJ   ÚtouchedrN   r   r   r   rO   z   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   rQ   rN   r   r   r   rR   ‰   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   rS   �   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   rP   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 )NÚ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   rX   ¤   s    
zDeferredTests.test_threadN)r3   r4   r5   rG   rL   rO   r.   rR   rS   r2   rW   rX   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	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dœdd„Zddœd d!„Zd"S )#ÚTimeoutTestsrB   zdetests.TimeoutTestsrC   c                 C  s
   t  |¡S r   )r   rY   rF   r   r   r   rG   «   s    zTimeoutTests.getTestr   r   )ÚerrorÚexpectedMessager   c                 C  s.   |   | tj¡tj¡ |  ||jjd ¡ d S )Nr   )r"   r>   r   r?   ZassertInÚvalueÚargs)r   rZ   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  sj   |   d¡}|  | ¡ ¡ |  |jd¡ |  t|jƒd¡ t|jd d tƒsPt	‚|  
|jd d d¡ d S )NÚtest_timeoutr   r   z((test_timeout) still running at 0.1 secs©rI   r)   r!   r"   r#   r+   r-   r<   r   r=   r^   rN   r   r   r   r`   ¼   s    
 ÿzTimeoutTests.test_timeoutc                 C  sj   |   d¡}|  | ¡ ¡ |  |jd¡ |  t|jƒd¡ t|jd d tƒsPt	‚|  
|jd d d¡ d S )NÚtest_timeoutZeror   r   z,(test_timeoutZero) still running at 0.0 secsra   rN   r   r   r   rb   Æ   s    
 ÿzTimeoutTests.test_timeoutZeroc                 C  s*   |   d¡}|  | ¡ ¡ |  |jd¡ dS )z[
        See L{twisted.trial.test.detests.TimeoutTests.test_addCleanupPassDefault}
        Útest_addCleanupPassDefaultr   NrM   rN   r   r   r   rc   Ð   s    
z'TimeoutTests.test_addCleanupPassDefaultc                 C  sj   |   d¡}|  | ¡ ¡ |  |jd¡ |  t|jƒd¡ t|jd d tƒsPt	‚|  
|jd d d¡ dS )zÍ
        See L{twisted.trial.test.detests.TimeoutTests.test_addCleanupTimeout}

        TODO: current test does not mock reactor and thus the test spends real time
        until the timeout fires.
        Útest_addCleanupTimeoutr   r   z4(cleanup function cleanup) still running at 0.1 secsNra   rN   r   r   r   rd   Ø   s    
 ÿz#TimeoutTests.test_addCleanupTimeoutc                 C  s<   |   d¡}|  | ¡ ¡ |  |jd¡ |  t|jƒd¡ d S rT   )rI   r    r!   r"   r#   r+   r1   rN   r   r   r   r2   è   s    
zTimeoutTests.test_skipc                 C  sj   |   d¡}|  | ¡ ¡ |  |jd¡ |  t|jƒd¡ t|jd d tƒsPt	‚|  
|jd d d¡ d S )NrU   r   r   z0(test_expectedFailure) still running at 0.1 secs)rI   r    r!   r"   r#   r+   rV   r<   r   r=   r^   rN   r   r   r   rW   î   s    
þzTimeoutTests.test_todoc                 C  sJ   |   d¡}|  | ¡ ¡ |  |jd¡ tjjd k	s6t‚|  	tjjd¡ d S )NÚtest_errorPropagationr   z1(test_errorPropagation) still running at 0.1 secs)
rI   r)   r!   r"   r#   r   rY   ZtimedOutr=   r^   rN   r   r   r   re   ù   s    
þz"TimeoutTests.test_errorPropagationc                 C  sj   t  ¡ }| tj¡}t ¡ }| |¡ |  t	|j
ƒd¡ t|j
d d tƒsPt‚|  |j
d d d¡ d S )Nr   r   z&(testMethod) still running at 0.2 secs)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  st   ddl m} | d|j¡}|  d¡}| ¡ r4| ¡  |  | ¡ ¡ t	|j
d d tƒsZt‚|  |j
d d d¡ d S )Nr   )Úreactoré   Ztest_calledButNeverCallbackr   z7(test_calledButNeverCallback) still running at 0.1 secs)Útwisted.internetrg   Z	callLaterZcrashrI   ÚactiveÚcancelr)   r!   r<   r-   r   r=   r^   )r   rg   Úcallr%   r   r   r   Ú&test_callbackReturnsNonCallingDeferred  s    
þz3TimeoutTests.test_callbackReturnsNonCallingDeferredN)r3   r4   r5   rG   r^   rL   r_   r`   rb   rc   rd   r2   rW   re   rf   rm   r   r   r   r   rY   ª   s   


	rY   )Ú__doc__Ú
__future__r   r   r   ri   r   Ztwisted.python.failurer   Ztwisted.trialr   r   Ztwisted.trial.testr   ZTestCaser	   r6   rA   rJ   rY   r   r   r   r   Ú<module>   s   9
9t