U
     T‚g€  ã                   @  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
 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)ÚrunWithWarningsSuppressed)Úunittest)Úsuppressc                   @  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-1_7di8ic/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   0   s    z)DeferredSetUpCallbackFail._cb_setUpCalledc                 C  s
   dt _d S r   )r%   r#   r   r   r   r   r   3   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   :   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'   7   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   D   s    zDeferredSetUpNeverFire.setUpc                 C  s
   dt _d S r   )r)   r#   r   r   r   r   r   G   s    zDeferredSetUpNeverFire.test_okNr$   r   r   r   r   r)   A   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   N   s    
zDeferredSetUpSkip.setUpc                 C  s   t  d¡‚d S )Nzskip me©r   ZSkipTestr   r   r   r   r-   S   s    zDeferredSetUpSkip._cb1c                 C  s
   dt _d S r   )r,   r#   r   r   r   r   r   V   s    zDeferredSetUpSkip.test_okN)r   r   r    r#   r   r-   r   r   r   r   r   r,   K   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	dd„ Z
eedd�geje
ƒ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(   r0   r   r   r   Ú	_cb_error`   s    zDeferredTests._cb_errorc                 C  s   t  |¡‚d S r   r.   r0   r   r   r   Ú_cb_skipc   s    zDeferredTests._cb_skipc                 C  s   d| j _d S r   ©Ú	__class__Útouchedr   r   r   r   Ú_touchClassf   s    zDeferredTests._touchClassc                 C  s   d| j _d S )NFr5   r   r   r   r   r   i   s    zDeferredTests.setUpc                 C  s
   t  d¡S )NÚsuccess)r   r   r   r   r   r   Ú	test_passl   s    zDeferredTests.test_passc                 c  s   |   d ¡ d V  d S r   ©r8   r   r   r   r   Útest_passGeneratedo   s    
z DeferredTests.test_passGeneratedz7twisted.internet.defer.deferredGenerator was deprecated)Úmessagec                 c  s   |   d¡ dV  dS )zL
        Test case that is decorated with L{defer.inlineCallbacks}.
        Nr;   r   r   r   r   Útest_passInlineCallbacks}   s    
z&DeferredTests.test_passInlineCallbacksc                 C  s   t  |  d¡¡S )NzI fail)r   r"   ZfailureExceptionr   r   r   r   Ú	test_fail…   s    zDeferredTests.test_failc                 C  s   t  d¡}| | j¡ |S )Nr"   )r   r   r   r2   r   r   r   r   Útest_failureInCallbackˆ   s    
z$DeferredTests.test_failureInCallbackc                 C  s   t  d¡}| | j¡ |S )NÚerror©r   r   r   r3   r   r   r   r   Útest_errorInCallback�   s    
z"DeferredTests.test_errorInCallbackc                 C  s&   t  d¡}| | j¡ | | j¡ |S )NÚskip)r   r   r   r4   r8   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ÚtodorB   r   r   r   r   Útest_expectedFailure›   s    
z"DeferredTests.test_expectedFailurezExpected failureN)r   r   r    r7   r2   r3   r4   r8   r   r:   r<   r   ÚSUPPRESSr   ZdeferredGeneratorZinlineCallbacksr>   r?   r@   rC   rE   rH   rJ   rI   r   r   r   r   r/   Z   s2   ÿÿù

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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   r:   ¦   s    zTimeoutTests.test_passé   c                 C  s   t  ¡ }t d|jd¡ |S rN   rO   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   t  ¡ S r   r*   r   r   r   r   rJ   ½   s    z!TimeoutTests.test_expectedFailurezi will get it right, eventuallyc                 C  s   t  ¡ S r   r*   r   r   r   r   rE   Ã   s    zTimeoutTests.test_skipc                   s"   ‡ fdd„}t  ¡ }| |¡ |S )Nc                   s   | ˆ j _| S r   )r6   rM   )Úerrr   r   r   rM   Ê   s    z4TimeoutTests.test_errorPropagation.<locals>.timedOut)r   r+   Z
addErrback)r   rM   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   rP   )r   r   rX   r   r   r   Útest_calledButNeverCallbackÔ   s
    

z(TimeoutTests.test_calledButNeverCallback)r   r   r    rM   Ú__annotations__r:   ÚtimeoutrR   rS   rT   rJ   rI   rE   rD   rV   rZ   r   r   r   r   rL   £   s$   
	
rL   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.python.utilr   Ztwisted.trialr   Ztwisted.trial.utilr	   rK   ZTestCaser
   r!   r%   r'   r)   r,   r/   rL   r]   r   r   r   r   Ú<module>   s   

I>