U
    n5{iü  ã                   @  sâ   d Z ddlmZ ddlmZ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
jƒ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
jƒZG dd„ de
jƒZdS )zD
Tests for Deferred handling by L{twisted.trial.unittest.TestCase}.
é    )Úannotations)ÚdeferÚreactorÚthreads)ÚFailure)Úunittestc                   @  s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚDeferredSetUpOKc                 C  s   t  d¡}| | j¡ |S ©NÚvalue©r   ÚsucceedÚaddCallbackÚ_cb_setUpCalled©ÚselfÚd© r   ú>/tmp/pip-unpacked-wheel-mnhg7r0q/twisted/trial/test/detests.pyÚsetUp   s    
zDeferredSetUpOK.setUpc                 C  s
   d| _ d S ©NT)Ú_setUpCalled©r   Zignoredr   r   r   r      s    zDeferredSetUpOK._cb_setUpCalledc                 C  s   |   | j¡ d S ©N)Ú
assertTruer   ©r   r   r   r   Útest_ok   s    zDeferredSetUpOK.test_okN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r      s   r   c                   @  s    e Zd ZdZdd„ Zdd„ ZdS )ÚDeferredSetUpFailFc                 C  s   t  t d¡¡S )Nzi fail)r   Úfailr   ZFailTestr   r   r   r   r      s    zDeferredSetUpFail.setUpc                 C  s   dt _|  d¡ d S )NTzI should not get called)r   Ú
testCalledr    r   r   r   r   r   !   s    zDeferredSetUpFail.test_okN©r   r   r   r!   r   r   r   r   r   r   r      s   r   c                   @  s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚDeferredSetUpCallbackFailFc                 C  s   t  d¡}| | j¡ |S r	   r   r   r   r   r   r   )   s    
zDeferredSetUpCallbackFail.setUpc                 C  s   |   d¡ d S )Nzdeliberate failure©r    r   r   r   r   r   .   s    z)DeferredSetUpCallbackFail._cb_setUpCalledc                 C  s
   dt _d S r   )r#   r!   r   r   r   r   r   1   s    z!DeferredSetUpCallbackFail.test_okN)r   r   r   r!   r   r   r   r   r   r   r   r#   &   s   r#   c                   @  s    e Zd ZdZdd„ Zdd„ ZdS )ÚDeferredSetUpErrorFc                 C  s   t  tdƒ¡S )Nzdeliberate error)r   r    ÚRuntimeErrorr   r   r   r   r   8   s    zDeferredSetUpError.setUpc                 C  s
   dt _d S r   )r%   r!   r   r   r   r   r   ;   s    zDeferredSetUpError.test_okNr"   r   r   r   r   r%   5   s   r%   c                   @  s    e Zd ZdZdd„ Zdd„ ZdS )ÚDeferredSetUpNeverFireFc                 C  s   t  ¡ S r   ©r   ÚDeferredr   r   r   r   r   B   s    zDeferredSetUpNeverFire.setUpc                 C  s
   dt _d S r   )r'   r!   r   r   r   r   r   E   s    zDeferredSetUpNeverFire.test_okNr"   r   r   r   r   r'   ?   s   r'   c                   @  s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚDeferredSetUpSkipFc                 C  s   t  d¡}| | j¡ |S r	   )r   r   r   Ú_cb1r   r   r   r   r   L   s    
zDeferredSetUpSkip.setUpc                 C  s   t  d¡‚d S )Nzskip me©r   ZSkipTestr   r   r   r   r+   Q   s    zDeferredSetUpSkip._cb1c                 C  s
   dt _d S r   )r*   r!   r   r   r   r   r   T   s    zDeferredSetUpSkip.test_okN)r   r   r   r!   r   r+   r   r   r   r   r   r*   I   s   r*   c                   @  s„   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	e
jdd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zde_dS )ÚDeferredTestsFc                 C  s   |   |¡ d S r   r$   ©r   Úreasonr   r   r   Ú_cb_fail[   s    zDeferredTests._cb_failc                 C  s   t |ƒ‚d S r   )r&   r.   r   r   r   Ú	_cb_error^   s    zDeferredTests._cb_errorc                 C  s   t  |¡‚d S r   r,   r.   r   r   r   Ú_cb_skipa   s    zDeferredTests._cb_skipc                 C  s   d| j _d S r   ©Ú	__class__Útouchedr   r   r   r   Ú_touchClassd   s    zDeferredTests._touchClassc                 C  s   d| j _d S )NFr3   r   r   r   r   r   g   s    zDeferredTests.setUpc                 C  s
   t  d¡S )NÚsuccess)r   r   r   r   r   r   Ú	test_passj   s    zDeferredTests.test_passc                 c  s   |   d¡ dV  dS )zL
        Test case that is decorated with L{defer.inlineCallbacks}.
        N)r6   r   r   r   r   Útest_passInlineCallbacksm   s    
z&DeferredTests.test_passInlineCallbacksc                 C  s   t  |  d¡¡S )NzI fail)r   r    ZfailureExceptionr   r   r   r   Ú	test_failu   s    zDeferredTests.test_failc                 C  s   t  d¡}| | j¡ |S )Nr    )r   r   r   r0   r   r   r   r   Útest_failureInCallbackx   s    
z$DeferredTests.test_failureInCallbackc                 C  s   t  d¡}| | j¡ |S )NÚerror©r   r   r   r1   r   r   r   r   Útest_errorInCallback}   s    
z"DeferredTests.test_errorInCallbackc                 C  s&   t  d¡}| | j¡ | | j¡ |S )NÚskip)r   r   r   r2   r6   r   r   r   r   Ú	test_skip‚   s    
zDeferredTests.test_skipc                 C  s   t  dd„ ¡S )Nc                   S  s   d S r   r   r   r   r   r   Ú<lambda>‰   ó    z+DeferredTests.test_thread.<locals>.<lambda>)r   ZdeferToThreadr   r   r   r   Útest_threadˆ   s    zDeferredTests.test_threadc                 C  s   t  d¡}| | j¡ |S )NÚtodor=   r   r   r   r   Útest_expectedFailure‹   s    
z"DeferredTests.test_expectedFailurezExpected failureN)r   r   r   r5   r0   r1   r2   r6   r   r8   r   ZinlineCallbacksr9   r:   r;   r>   r@   rC   rE   rD   r   r   r   r   r-   X   s    
r-   c                   @  s¦   e Zd ZU dZded< dd„ Zde_dd„ Zd	d
„ Zde_dd„ Z	de	_dd„ Z
dd„ Zde_dd„ Zde_de_dd„ Zde_de_dd„ Zde_dd„ Zde_dS )ÚTimeoutTestsNzFailure | NoneÚtimedOutc                 C  s   t  ¡ }t d|jd¡ |S ©Nr   zhoorj!©r   r)   r   Z	callLaterÚcallbackr   r   r   r   r8   –   s    zTimeoutTests.test_passé   c                 C  s   t  ¡ }t d|jd¡ |S rH   rI   r   r   r   r   Útest_passDefault�   s    zTimeoutTests.test_passDefaultc                 C  s   t  ¡ S r   r(   r   r   r   r   Útest_timeout£   s    zTimeoutTests.test_timeoutgš™™™™™¹?c                 C  s   t  ¡ S r   r(   r   r   r   r   Útest_timeoutZero¨   s    zTimeoutTests.test_timeoutZeror   c                 C  s   dd„ }|   |¡ dS )zÍ
        A cleanup can return a deferred.
        The cleanup is successuful as long as the deferred is resolve sooner than the default
        test case timeout (DEFAULT_TIMEOUT_DURATION seconds)
        c                  S  s   t  ¡ } t d| jd¡ | S )Nr   r7   rI   )r   r   r   r   Úcleanup´   s    z8TimeoutTests.test_addCleanupPassDefault.<locals>.cleanupN©Z
addCleanup©r   rO   r   r   r   Útest_addCleanupPassDefault­   s    z'TimeoutTests.test_addCleanupPassDefaultc                 C  s   dd„ }|   |¡ dS )zº
        A cleanup can return a deferred.
        When the deferred returned by addCleanup is not resolved sooner than the
        test's timeout, the test is considered failed.
        c                   S  s   t  ¡ S r   r(   r   r   r   r   rO   Â   s    z4TimeoutTests.test_addCleanupTimeout.<locals>.cleanupNrP   rQ   r   r   r   Útest_addCleanupTimeout»   s    z#TimeoutTests.test_addCleanupTimeoutc                 C  s   t  ¡ S r   r(   r   r   r   r   rE   É   s    z!TimeoutTests.test_expectedFailurezi will get it right, eventuallyc                 C  s   t  ¡ S r   r(   r   r   r   r   r@   Ï   s    zTimeoutTests.test_skipc                   s"   ‡ fdd„}t  ¡ }| |¡ |S )Nc                   s   | ˆ j _| S r   )r4   rG   )Úerrr   r   r   rG   Ö   s    z4TimeoutTests.test_errorPropagation.<locals>.timedOut)r   r)   Z
addErrback)r   rG   r   r   r   r   Útest_errorPropagationÕ   s    
z"TimeoutTests.test_errorPropagationc                 C  s(   t  ¡ }dd„ }| |¡ | d¡ |S )Nc                 S  s   t  ¡ S r   r(   )Úrr   r   r   Ú	neverFireã   s    z;TimeoutTests.test_calledButNeverCallback.<locals>.neverFireé   )r   r)   r   rJ   )r   r   rW   r   r   r   Útest_calledButNeverCallbackà   s
    

z(TimeoutTests.test_calledButNeverCallback)r   r   r   rG   Ú__annotations__r8   ÚtimeoutrL   rM   rN   rR   rS   rE   rD   r@   r?   rU   rY   r   r   r   r   rF   “   s*   
	
rF   c                   @  s    e Zd ZdZdd„ Zdd„ ZdS )ÚTestClassTimeoutAttributegš™™™™™É?c                 C  s   t  ¡ | _d S r   )r   r)   r   r   r   r   r   r   ð   s    zTestClassTimeoutAttribute.setUpc                 C  s   d| _ | jS r   )ZmethodCalledr   r   r   r   r   Ú
testMethodó   s    z$TestClassTimeoutAttribute.testMethodN)r   r   r   r[   r   r]   r   r   r   r   r\   í   s   r\   N)Ú__doc__Ú
__future__r   Ztwisted.internetr   r   r   Ztwisted.python.failurer   Ztwisted.trialr   ZTestCaser   r   r#   r%   r'   r*   r-   rF   r\   r   r   r   r   Ú<module>   s   

;Z