
    Vh                        d dl mZ d dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZmZ d dlmZ d dlmZmZ  G d	 d
e      Z G d de      Zy)    )annotationsN)skipIf)implementer)Failure)	IReporter	ITestCase)pyunitcases)PyUnitResultAdapterSynchronousTestCasec                      e Zd ZddZddZy)PyUnitTestTestsc                l    t        j                  d      | _        t        | j                        | _        y )N	test_pass)r	   
PyUnitTestoriginalr   testselfs    T/home/dcms/DCMS/lib/python3.12/site-packages/twisted/trial/test/test_pyunitcompat.pysetUpzPyUnitTestTests.setUp   s$    #..{;dmm,	    c                h    | j                  t        | j                        | j                  d       y)zW
        Tests must be callable in order to be used with Python's unittest.py.
        z is not callable.N)
assertTruecallabler   r   s    r   test_callablezPyUnitTestTests.test_callable   s'     	+		}<M-NOr   NreturnNone)__name__
__module____qualname__r   r    r   r   r   r      s    -Pr   r   c                  v    e Zd ZdZ G d de      ZddZddZddZddZ	ddZ
dd	Zdd
ZddZddZddZy)PyUnitResultTestsz
    Tests to show that PyUnitResultAdapter wraps TestResult objects from the
    standard library 'unittest' module in such a way as to make them usable and
    useful from Trial.
    c                      e Zd ZdZdZddZy)PyUnitResultTests.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                    d| _         ddz   y)zR
            Set C{self.ran} to True and raise a C{ZeroDivisionError}
            T   r   Nranr   s    r   test_fooz$PyUnitResultTests.ErrorTest.test_foo0   s     DHEr   Nr   )r   r    r!   __doc__r*   r+   r"   r   r   	ErrorTestr&   '   s    	 	r   r-   c                    t        t               G d d             }| j                  d      } |       }|j                  |       | j	                  |j
                  d   t               y)z
        The L{PyUnitResultAdapter} is only used when the result passed to
        C{run} does *not* provide L{IReporter}.
        c                  0    e Zd ZdZddZddZddZd	dZy)
XPyUnitResultTests.test_dontUseAdapterWhenReporterProvidesIReporter.<locals>.StubReporterz
            A reporter which records data about calls made to it.

            @ivar errors: Errors passed to L{addError}.
            @ivar failures: Failures passed to L{addFailure}.
            c                     g | _         g | _        y )N)errorsfailuresr   s    r   __init__zaPyUnitResultTests.test_dontUseAdapterWhenReporterProvidesIReporter.<locals>.StubReporter.__init__F   s    -/,.r   c                     yz-
                Do nothing.
                Nr"   r   r   s     r   	startTestzbPyUnitResultTests.test_dontUseAdapterWhenReporterProvidesIReporter.<locals>.StubReporter.startTestJ       r   c                     yr6   r"   r7   s     r   stopTestzaPyUnitResultTests.test_dontUseAdapterWhenReporterProvidesIReporter.<locals>.StubReporter.stopTestO   r9   r   c                :    | j                   j                  |       y)z3
                Record the error.
                N)r2   append)r   r   errors      r   addErrorzaPyUnitResultTests.test_dontUseAdapterWhenReporterProvidesIReporter.<locals>.StubReporter.addErrorT   s     ""5)r   Nr   )r   objectr   r   )r   r@   r>   r   r   r   )r   r    r!   r,   r4   r8   r;   r?   r"   r   r   StubReporterr0   =   s    /

*r   rA   r+   r   N)r   r   r-   runassertIsInstancer2   r   )r   rA   r   results       r   0test_dontUseAdapterWhenReporterProvidesIReporterzBPyUnitResultTests.test_dontUseAdapterWhenReporterProvidesIReporter7   s\     
Y		* 	* 
 	*8 ~~j)fmmA.8r   c                (    G d dt               } |d      }t        j                         }|j                  |       | j	                  |j
                         | j                  d|j                         | j	                  |j                                y )Nc                      e Zd ZdZddZy)3PyUnitResultTests.test_success.<locals>.SuccessTestFc                    d| _         y NTr)   ss    r   r+   z<PyUnitResultTests.test_success.<locals>.SuccessTest.test_fooc   	    r   Nr   r   r    r!   r*   r+   r"   r   r   SuccessTestrH   `   s    Cr   rO   r+   r(   )	r   pyunit
TestResultrB   r   r*   assertEqualtestsRunwasSuccessful)r   rO   r   rD   s       r   test_successzPyUnitResultTests.test_success_   sn    	- 	 :&""$!FOO,,,./r   c                r    G d dt               } |d      }t        j                         }|j                  |       | j	                  |j
                         | j                  d|j                         | j                  dt        |j                               | j                  |j                                y )Nc                      e Zd ZdZddZy)3PyUnitResultTests.test_failure.<locals>.FailureTestFc                4    d| _         | j                  d       y )NTzboom!)r*   failrK   s    r   r+   z<PyUnitResultTests.test_failure.<locals>.FailureTest.test_foor   s    wr   Nr   rN   r"   r   r   FailureTestrX   o   s    C r   r[   r+   r(   )r   rP   rQ   rB   r   r*   rR   rS   lenr3   assertFalserT   )r   r[   r   rD   s       r   test_failurezPyUnitResultTests.test_failuren   s    	 - 	  :&""$!FOO,C01--/0r   c                f   | j                  d      }t        j                         }|j                  |       | j	                  |j
                         | j                  d|j                         | j                  dt        |j                               | j                  |j                                y )Nr+   r(   )r-   rP   rQ   rB   r   r*   rR   rS   r\   r2   r]   rT   )r   r   rD   s      r   
test_errorzPyUnitResultTests.test_error   s~    ~~j)""$!FOO,C./--/0r   c                r    G d dt               } |d      }t        j                         }|j                  |       | j	                  |j
                         | j                  d|j                         | j                  dt        |j                               | j	                  |j                                y )Nc                       e Zd ZdZddZddZy)4PyUnitResultTests.test_setUpError.<locals>.ErrorTestFc                    ddz   y Nr(   r   r"   r   s    r   r   z:PyUnitResultTests.test_setUpError.<locals>.ErrorTest.setUp   s	    Ar   c                    d| _         y rJ   r)   rK   s    r   r+   z=PyUnitResultTests.test_setUpError.<locals>.ErrorTest.test_foo   rM   r   Nr   )r   r    r!   r*   r   r+   r"   r   r   r-   rc      s    Cr   r-   r+   r(   )r   rP   rQ   rB   r]   r*   rR   rS   r\   r2   rT   )r   r-   r   rD   s       r   test_setUpErrorz!PyUnitResultTests.test_setUpError   s    	+ 	 $""$"FOO,C./--/0r   c                N   	 ddz   t	        j
                         }t        |      }|j                  |        | j                  |j                  d   d   dj                  t        j                                y# t         $ r! t        j                         }t               }Y w xY w)z
        Errors added through the L{PyUnitResultAdapter} have the same traceback
        information as if there were no adapter at all.
        r(   r    N)ZeroDivisionErrorsysexc_infor   rP   rQ   r
   r?   rR   r2   join	tracebackformat_exception)r   rl   fpyresultrD   s        r   test_tracebackFromFailurez+PyUnitResultTests.test_tracebackFromFailure   s    
	E $$&$X.a OOAq!2779+E+Ex+P#Q	
 ! 	||~H	A	s   A: :'B$#B$c                    G d dt               } |d      }t        j                         }|j                  |       |j                  J dj                  t        j                  |j                  d               }dj                  |j                  d   d	   j                         dd
       }| j                  |j                         |t        |       d j                                y)zG
        As test_tracebackFromFailure, but covering more code.
        c                      e Zd ZdZddZy)3PyUnitResultTests.test_traceback.<locals>.ErrorTestNc                ^    	 ddz   y # t         $ r t        j                         | _         w xY wre   )rj   rk   rl   r   s    r   r+   z<PyUnitResultTests.test_traceback.<locals>.ErrorTest.test_foo   s-    E( $'LLNDMs    $,r   )r   r    r!   rl   r+   r"   r   r   r-   ru      s    Hr   r-   r+   Nri      
r   r(   )r   rP   rQ   rB   rl   rm   rn   	format_tbr2   
splitlinesrR   stripr\   )r   r-   r   rD   expected_stackobserved_stacks         r   test_tracebackz PyUnitResultTests.test_traceback   s    
	+ 	 $""$ }}(((!4!4T]]15E!FG6==#3A#6#A#A#CCR#HI  "NC4G3G3I$J$P$P$R	
r   c                   	 ddz   j	                          t        j                         }t        |      }|j                  | |       dj                  t        j                         }| j                  |j                  d   d   j                  d      |j                  d             y# t         $ r! t        j                         }t               }Y w xY w)z
        Errors added through the L{PyUnitResultAdapter} have the same
        traceback information as if there were no adapter at all, even
        if the Failure that held the information has been cleaned.
        r(   r   ri   z$ZeroDivisionError: division by zero
N)rj   rk   rl   r   cleanFailurerP   rQ   r
   r?   rm   rn   ro   rR   r2   endswith)r   rl   rp   rq   rD   tbacks         r   test_tracebackFromCleanFailurez0PyUnitResultTests.test_tracebackFromCleanFailure   s    	E 	
$$&$X.a 	22H=>OOAq!**+RSNNBC	
 ! 	||~H	A	s   B* *'CCc                     G d dt               } |d      }t        j                         }|j                  |       | j	                  |j
                  |dfg       y)zw
        Skips using trial's skipping functionality are reported as skips in
        the L{pyunit.TestResult}.
        c                  ,    e Zd Z edd      dd       Zy)2PyUnitResultTests.test_trialSkip.<locals>.SkipTestTLet's skip!c                    ddz   y re   r"   r   s    r   	test_skipz<PyUnitResultTests.test_trialSkip.<locals>.SkipTest.test_skip   	    Ar   Nr   )r   r    r!   r   r   r"   r   r   SkipTestr      s    D-( )r   r   r   r   Nr   rP   rQ   rB   rR   skippedr   r   r   rD   s       r   test_trialSkipz PyUnitResultTests.test_trialSkip   sQ    	* 	
 $""$4*?)@Ar   c                     G d dt               } |d      }t        j                         }|j                  |       | j	                  |j
                  |dfg       y)zx
        Skips using pyunit's skipping functionality are reported as skips in
        the L{pyunit.TestResult}.
        c                  >    e Zd Z ej                  d      dd       Zy)3PyUnitResultTests.test_pyunitSkip.<locals>.SkipTestskippyc                    ddz   y re   r"   r   s    r   r   z=PyUnitResultTests.test_pyunitSkip.<locals>.SkipTest.test_skip   r   r   Nr   )r   r    r!   rP   skipr   r"   r   r   r   r      s    V[[" #r   r   r   r   Nr   r   s       r   test_pyunitSkipz!PyUnitResultTests.test_pyunitSkip   sQ    	* 	
 $""$4*:);<r   Nr   )r   r    r!   r,   r   r-   rE   rU   r^   r`   rg   rr   r   r   r   r   r"   r   r   r$   r$      sI    '  &9P01"11&
"
B
*B =r   r$   )
__future__r   rk   rn   unittestrP   r   zope.interfacer   twisted.python.failurer   twisted.trial.itrialr   r   twisted.trial.testr	   twisted.trial.unittestr
   r   r   r$   r"   r   r   <module>r      sC    # 
    & * 5 * K	P) 	Pc=+ c=r   