
    Yf                        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dS )    )annotationsN)skipIf)implementer)Failure)	IReporter	ITestCase)pyunitcases)PyUnitResultAdapterSynchronousTestCasec                      e Zd ZddZddZdS )PyUnitTestTestsreturnNonec                j    t          j        d          | _        t          | j                  | _        d S )N	test_pass)r	   
PyUnitTestoriginalr   testselfs    V/var/www/html/env/lib/python3.11/site-packages/twisted/trial/test/test_pyunitcompat.pysetUpzPyUnitTestTests.setUp   s)    #.{;;dm,,			    c                f    |                      t          | j                  | j        d           dS )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   s3     	++	-N-N-NOOOOOr   Nr   r   )__name__
__module____qualname__r   r    r   r   r   r      sB        - - - -P P P P P Pr   r   c                  ~    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dS )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dS )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.
        Fr   r   c                    d| _         ddz   dS )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EEEEr   Nr   )r   r    r!   __doc__r*   r+   r"   r   r   	ErrorTestr&   '   s9        	 	 	 	 	 	 	 	r   r-   r   r   c                   t          t                     G d d                      }|                     d          } |            }|                    |           |                     |j        d         t                     dS )z
        The L{PyUnitResultAdapter} is only used when the result passed to
        C{run} does *not* provide L{IReporter}.
        c                  2    e Zd ZdZddZddZddZddZdS )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}.
            r   r   c                "    g | _         g | _        d S )N)errorsfailuresr   s    r   __init__zaPyUnitResultTests.test_dontUseAdapterWhenReporterProvidesIReporter.<locals>.StubReporter.__init__F   s    -/,.r   r   objectc                    dS z-
                Do nothing.
                Nr"   r   r   s     r   	startTestzbPyUnitResultTests.test_dontUseAdapterWhenReporterProvidesIReporter.<locals>.StubReporter.startTestJ         r   c                    dS r7   r"   r8   s     r   stopTestzaPyUnitResultTests.test_dontUseAdapterWhenReporterProvidesIReporter.<locals>.StubReporter.stopTestO   r:   r   errorr   c                :    | j                             |           dS )z3
                Record the error.
                N)r2   append)r   r   r=   s      r   addErrorzaPyUnitResultTests.test_dontUseAdapterWhenReporterProvidesIReporter.<locals>.StubReporter.addErrorT   s      ""5)))))r   Nr   )r   r5   r   r   )r   r5   r=   r   r   r   )r   r    r!   r,   r4   r9   r<   r@   r"   r   r   StubReporterr0   =   sn         / / / /   
   
* * * * * *r   rA   r+   r   N)r   r   r-   runassertIsInstancer2   r   )r   rA   r   results       r   0test_dontUseAdapterWhenReporterProvidesIReporterzBPyUnitResultTests.test_dontUseAdapterWhenReporterProvidesIReporter7   s     
Y			* 	* 	* 	* 	* 	* 	* 
 		*8 ~~j))fmA.88888r   c                J    G d dt                     } |d          }t          j                    }|                    |           |                     |j                   |                     d|j                   |                     |                                           d S )Nc                      e Zd ZdZddZdS )3PyUnitResultTests.test_success.<locals>.SuccessTestFr   r   c                    d| _         d S 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_   s    	 	 	 	 	- 	 	 	 {:&&"$$!!!FO,,,,,../////r   c                    G d dt                     } |d          }t          j                    }|                    |           |                     |j                   |                     d|j                   |                     dt          |j	                             | 
                    |                                           d S )Nc                      e Zd ZdZddZdS )3PyUnitResultTests.test_failure.<locals>.FailureTestFr   r   c                >    d| _         |                     d           d S )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    	  	  	  	  	 - 	  	  	  {:&&"$$!!!FO,,,C00111--//00000r   c                   |                      d          }t          j                    }|                    |           |                     |j                   |                     d|j                   |                     dt          |j	                             | 
                    |                                           d S )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))"$$!!!FO,,,C..///--//00000r   c                    G d dt                     } |d          }t          j                    }|                    |           |                     |j                   |                     d|j                   |                     dt          |j	                             |                     |
                                           d S )Nc                  "    e Zd ZdZddZddZdS )4PyUnitResultTests.test_setUpError.<locals>.ErrorTestFr   r   c                    ddz   d S Nr(   r   r"   r   s    r   r   z:PyUnitResultTests.test_setUpError.<locals>.ErrorTest.setUp   s    Ar   c                    d| _         d S 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      sA        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    	 	 	 	 	+ 	 	 	 y$$"$$"""FO,,,C..///--//00000r   c                r   	 ddz   n1# t           $ r$ t          j                    }t                      }Y nw xY wt	          j                    }t          |          }|                    | |           |                     |j	        d         d         d
                    t          j        |                      dS )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    
	EEE  	 	 	|~~H		AAA	 $&&$X..a   OAq!2779+Ex+P#Q#Q	
 	
 	
 	
 	
    +66c                (    G d dt                     } |d          }t          j                    }|                    |           |j        J d                    t          j        |j        d                             }d                    |j        d         d	         	                                dd
                   }| 
                    |                                |t          |           d                                                    dS )zG
        As test_tracebackFromFailure, but covering more code.
        c                      e Zd ZdZddZdS )3PyUnitResultTests.test_traceback.<locals>.ErrorTestNr   r   c                `    	 ddz   d S # 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?    EEEE(   $'LNNDMs   	 $-r   )r   r    r!   rl   r+   r"   r   r   r-   rv      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   
	 	 	 	 	+ 	 	 	 y$$"$$ }(((!4T]15E!F!FGG6=#3A#6#A#A#C#CCRC#HII  ""NC4G4G3G3I3I$J$P$P$R$R	
 	
 	
 	
 	
r   c                   	 ddz   n1# t           $ r$ t          j                    }t                      }Y nw xY w|                                 t          j                    }t          |          }|                    | |           d	                    t          j        |           }|                     |j        d         d                             d          |                    d                     dS )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    	EEE  	 	 	|~~H		AAA	 	
$&&$X..a   	2H=>>OAq!**+RSSNNBCC	
 	
 	
 	
 	
rs   c                     G d dt                     } |d          }t          j                    }|                    |           |                     |j        |dfg           dS )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dS )2PyUnitResultTests.test_trialSkip.<locals>.SkipTestTLet's skip!r   r   c                    ddz   d S 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?        VD-((   )(  r   r   r   r   Nr   rP   rQ   rB   rR   skippedr   r   r   rD   s       r   test_trialSkipz PyUnitResultTests.test_trialSkip   s    	 	 	 	 	* 	 	 	
 x$$"$$4*?)@AAAAAr   c                     G d dt                     } |d          }t          j                    }|                    |           |                     |j        |dfg           dS )zx
        Skips using pyunit's skipping functionality are reported as skips in
        the L{pyunit.TestResult}.
        c                  B    e Zd Z ej        d          dd            ZdS )3PyUnitResultTests.test_pyunitSkip.<locals>.SkipTestskippyr   r   c                    ddz   d S 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   s    	 	 	 	 	* 	 	 	
 x$$"$$4*:);<<<<<r   Nr   )r   r    r!   r,   r   r-   rE   rU   r^   r`   rg   rr   r   r   r   r   r"   r   r   r$   r$      s            '    &9 &9 &9 &9P0 0 0 01 1 1 1"1 1 1 11 1 1 1&
 
 
 
"
 
 
 
B
 
 
 
*B B 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      s$   # " " " " " 



               & & & & & & * * * * * * 5 5 5 5 5 5 5 5 * * * * * * K K K K K K K K	P 	P 	P 	P 	P) 	P 	P 	Pc= c= c= c= c=+ c= c= c= c= c=r   