Ë
    ojƒ  ã                  ó¤   — 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    úF/usr/lib/python3/dist-packages/twisted/trial/test/test_pyunitcompat.pyÚsetUpzPyUnitTestTests.setUp   s$   € Ü#×.Ñ.¨{Ó;ˆŒÜ˜dŸm™mÓ,ˆ�	ó    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   € ð ˆDŒHØ�‹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Ó)ˆÙ“ˆØ�‰�ÔØ×Ñ˜fŸm™m¨AÑ.´Õ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   € ô	Ô-ô 	ñ ˜:Ó&ˆÜ×"Ñ"Ó$ˆØ�‰�Ôà�‰˜Ÿ™Ô!Ø×Ñ˜˜FŸO™OÔ,Ø�‰˜×,Ñ,Ó.Õ/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‰   € ô	 Ô-ô 	 ñ ˜:Ó&ˆÜ×"Ñ"Ó$ˆØ�‰�Ôà�‰˜Ÿ™Ô!Ø×Ñ˜˜FŸO™OÔ,Ø×Ñ˜œ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Ó)ˆÜ×"Ñ"Ó$ˆØ�‰�Ôà�‰˜Ÿ™Ô!Ø×Ñ˜˜FŸO™OÔ,Ø×Ñ˜œ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‹   € ô	Ô+ô 	ñ ˜Ó$ˆÜ×"Ñ"Ó$ˆØ�‰�Ôà×Ñ˜Ÿ™Ô"Ø×Ñ˜˜FŸO™OÔ,Ø×Ñ˜œ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Ô Ø×ÑØ�O‰O˜AÑ˜qÑ! 2§7¡7¬9×+EÑ+EÀxÐ+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øÜ(ò Ü$'§L¡L£N�D”MØðú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Ñ!4°T·]±]À1Ñ5EÓ!FÓGˆØŸ™ 6§=¡=°Ñ#3°AÑ#6×#AÑ#AÓ#CÀCÀRÐ#HÓIˆà×ÑØ× Ñ Ó" N´C¸Ó4GÐ3GÐ3IÐ$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Ñ2°HÐ=Ó>ˆØ×ÑØ�O‰O˜AÑ˜qÑ!×*Ñ*Ð+RÓSØ�N‰NÐ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   „ ñôÐ'ô ó &9óP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   