o
    b                     @   s  d Z ddlmZ ddlmZmZmZ ddlmZmZ G dd de	Z
G dd dZG d	d
 d
eejZG dd deejZG dd dZG dd deejZG dd deejZG dd dZG dd deejZG dd deejZG dd dejZG dd dejZG dd dejZedd 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+d, Zd-S ).a  
Definitions of test cases with various interesting error-related behaviors, to
be used by test modules to exercise different features of trial's test runner.

See the L{twisted.trial.test.test_tests} module docstring for details about how
this code is arranged.
    )skipIf)deferprotocolreactor)unittestutilc                   @      e Zd ZdS )FoolishErrorN__name__
__module____qualname__ r   r   >/usr/lib/python3/dist-packages/twisted/trial/test/erroneous.pyr	          r	   c                   @      e Zd Zdd Zdd ZdS )FailureInSetUpMixinc                 C      t d)NzI am a broken setUp methodr	   selfr   r   r   setUp      zFailureInSetUpMixin.setUpc                 C      d S Nr   r   r   r   r   	test_noop      zFailureInSetUpMixin.test_noopN)r   r   r   r   r   r   r   r   r   r          r   c                   @   r   )SynchronousTestFailureInSetUpNr
   r   r   r   r   r       r   r   c                   @   r   )AsynchronousTestFailureInSetUpNr
   r   r   r   r   r   $   r   r   c                   @   r   )FailureInTearDownMixinc                 C   r   )NzI am a broken tearDown methodr   r   r   r   r   tearDown)   r   zFailureInTearDownMixin.tearDownc                 C   r   r   r   r   r   r   r   r   ,   r   z FailureInTearDownMixin.test_noopN)r   r   r   r!   r   r   r   r   r   r    (   r   r    c                   @   r   ) SynchronousTestFailureInTearDownNr
   r   r   r   r   r"   0       r"   c                   @   r   )!AsynchronousTestFailureInTearDownNr
   r   r   r   r   r$   6   r   r$   c                   @   s$   e Zd ZdZdZdd Zdd ZdS )FailureButTearDownRunsMixinz7
    A test fails, but its L{tearDown} still runs.
    Fc                 C   s
   d| _ d S NT)tornDownr   r   r   r   r!   A      
z$FailureButTearDownRunsMixin.tearDownc                 C   r   )z$
        A test that fails.
        zI am a broken testr   r   r   r   r   
test_failsD      z&FailureButTearDownRunsMixin.test_failsN)r   r   r   __doc__r'   r!   r)   r   r   r   r   r%   :   s
    r%   c                   @   r   )%SynchronousTestFailureButTearDownRunsNr
   r   r   r   r   r,   K   r#   r,   c                   @   r   )&AsynchronousTestFailureButTearDownRunsNr
   r   r   r   r   r-   Q   r#   r-   c                   @   $   e Zd Zdd Zdd Zdd ZdS )TestRegularFailc                 C      |  d d S )NI failfailr   r   r   r   	test_failX      zTestRegularFail.test_failc                 C   s   |    d S r   )
subroutiner   r   r   r   test_subfail[      zTestRegularFail.test_subfailc                 C   r0   )NzI fail insider2   r   r   r   r   r6   ^   r5   zTestRegularFail.subroutineN)r   r   r   r4   r7   r6   r   r   r   r   r/   W   s    r/   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	TestAsynchronousFailz?
    Test failures for L{unittest.TestCase} based classes.
    c                 C   s(   t  }|| j td|jd |S )zW
        A test which fails in the callback of the returned L{defer.Deferred}.
        r   N)r   DeferredaddCallback_laterr   	callLatercallbackr   dr   r   r   r4   g   s   zTestAsynchronousFail.test_failc                 C   r0   )NzI fail laterr2   )r   resr   r   r   r<   p   r5   zTestAsynchronousFail._laterc                 C   r   )zA
        A test which raises an exception synchronously.
        r1   )	Exceptionr   r   r   r   test_exceptions   r*   z#TestAsynchronousFail.test_exceptionN)r   r   r   r+   r4   r<   rC   r   r   r   r   r9   b   s
    	r9   c                   @   s   e Zd ZdZdZdd ZdS )	ErrorTestz
    A test case which has a L{test_foo} which will raise an error.

    @ivar ran: boolean indicating whether L{test_foo} has been run.
    Fc                 C   s   d| _ dd  dS )zJ
        Set C{self.ran} to True and raise a C{ZeroDivisionError}
        T   r   N)ranr   r   r   r   test_foo   s   zErrorTest.test_fooN)r   r   r   r+   rF   rG   r   r   r   r   rD   z   s    rD   Tzskipping this testc                   @   r   )TestSkipTestCaseNr
   r   r   r   r   rH      s    rH   c                   @   s2   e Zd ZdZdd Zdd Zejdedge_dS )	DelayedCallzsomething blew upc                 C   s
   t | jr   )RuntimeErrorhiddenExceptionMsgr   r   r   r   go   r(   zDelayedCall.goc                 C   s&   t d| j t d | d dS )a  
        What happens if an error is raised in a DelayedCall and an error is
        also raised in the test?

        L{test_reporter.ErrorReportingTests.testHiddenException} checks that
        both errors get reported.

        Note that this behaviour is deprecated. A B{real} test would return a
        Deferred that got triggered by the callLater. This would guarantee the
        delayed call error gets reported.
        r   g{Gz?z/Deliberate failure to mask the hidden exceptionN)r   r=   rL   iterater3   r   r   r   r   testHiddenException   s   
zDelayedCall.testHiddenExceptionz!reactor\.iterate cannot be used.*)messagecategoryN)	r   r   r   rK   rL   rN   r   suppressDeprecationWarningr   r   r   r   rI      s    
rI   c                   @      e Zd Zdd ZdS )ReactorCleanupTestsc                 C   s   dd }t d| d S )Nc                   S   s   t d d S )Nzfoo!)printr   r   r   r   _   r8   z8ReactorCleanupTests.test_leftoverPendingCalls.<locals>._g     @)r   r=   )r   rV   r   r   r   test_leftoverPendingCalls   s   z-ReactorCleanupTests.test_leftoverPendingCallsN)r   r   r   rW   r   r   r   r   rT          rT   c                   @   rS   )SocketOpenTestc                 C   s    t  }t j|_ td| d S )Nr   )r   FactoryProtocolr   	listenTCP)r   fr   r   r   test_socketsLeftOpen   s   z#SocketOpenTest.test_socketsLeftOpenN)r   r   r   r^   r   r   r   r   rY      rX   rY   c                   @   r.   )TimingOutDeferredc                 C   r   r   r   r   r   r   r   
test_alpha   r   zTimingOutDeferred.test_alphac                 C   s   d| _ t }|S r&   )methodCalledr   r:   r?   r   r   r   test_deferredThatNeverFires   s   z-TimingOutDeferred.test_deferredThatNeverFiresc                 C   r   r   r   r   r   r   r   
test_omega   r   zTimingOutDeferred.test_omegaN)r   r   r   r`   rb   rc   r   r   r   r   r_      s    r_   c                 C   s   dS )zci will raise an unexpected exception...
    ... *CAUSE THAT'S THE KINDA GUY I AM*

    >>> 1/0
    Nr   r   r   r   r   unexpectedException   s    rd   N)r+   r   r   twisted.internetr   r   r   twisted.trialr   rB   r	   r   SynchronousTestCaser   TestCaser   r    r"   r$   r%   r,   r-   r/   r9   rD   rH   rI   rT   rY   r_   rd   r   r   r   r   <module>   s<   	


