§
    Ètºfh  ã                   óö   — d Z ddlZddlmZmZ ddlmZmZ ddlm	Z	m
Z
mZ d„ Z G d„ d¦  «        Z G d	„ d
ej        ¦  «        Z G d„ d¦  «        Z G d„ deej        ¦  «        Z G d„ deej        ¦  «        ZdS )zG
Test the interaction between trial and errors logged during test run.
é    N)ÚreactorÚtask)ÚfailureÚlog)Ú	_synctestÚreporterÚunittestc                  óZ   — 	 ddz   n## t           $ r t          j        ¦   «         } Y nw xY w| S )z*
    Return a new, realistic failure.
    é   r   )ÚZeroDivisionErrorr   ÚFailure)Úfs    úZ/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/trial/test/test_log.pyÚmakeFailurer      sC   € ðØ	ˆA‰ˆˆøÝð ð ð ÝŒOÑÔˆˆˆðøøøà€Hs   ‚ ˆ(§(c                   ó|   — e Zd ZdZ G d„ d¦  «        Z G d„ deej        ¦  «        Z G d„ deej        ¦  «        Z	dS )	ÚMaskz?
    Hide C{MockTest}s from Trial's automatic test finder.
    c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )úMask.FailureLoggingMixinc                 ó   — dS )z/
            Don't log any errors.
            N© ©Úselfs    r   Útest_silentz$Mask.FailureLoggingMixin.test_silent    s   € € € ó    c                 óF   — t          j        t          ¦   «         ¦  «         dS )z-
            Log a single error.
            N©r   Úerrr   r   s    r   Útest_singlez$Mask.FailureLoggingMixin.test_single%   s   € õ ŒG•K‘M”MÑ"Ô"Ð"Ð"Ð"r   c                 ó†   — t          j        t          ¦   «         ¦  «         t          j        t          ¦   «         ¦  «         dS )z)
            Log two errors.
            Nr   r   s    r   Útest_doublez$Mask.FailureLoggingMixin.test_double+   s2   € õ ŒG•K‘M”MÑ"Ô"Ð"ÝŒG•K‘M”MÑ"Ô"Ð"Ð"Ð"r   c                 óP   — t          j        t          ¦   «         ¦  «         ddz    dS )z8
            Log a single error, then fail.
            r   Nr   r   s    r   Útest_singleThenFailz,Mask.FailureLoggingMixin.test_singleThenFail2   s%   € õ ŒG•K‘M”MÑ"Ô"Ð"Ø�‰HˆHˆHˆHr   N)Ú__name__Ú
__module__Ú__qualname__r   r   r    r"   r   r   r   ÚFailureLoggingMixinr      sP   € € € € € ð	ð 	ð 	ð
	#ð 	#ð 	#ð	#ð 	#ð 	#ð	ð 	ð 	ð 	ð 	r   r&   c                   ó   — e Zd ZdS )úMask.SynchronousFailureLoggingN)r#   r$   r%   r   r   r   ÚSynchronousFailureLoggingr(   9   s   € € € € € Øˆr   r)   c                   ó   — e Zd Zd„ ZdS )úMask.AsynchronousFailureLoggingc                 ó:   — t          j        t          dd„ ¦  «        S )zC
            Log an error in an asynchronous callback.
            r   c                  óB   — t          j        t          ¦   «         ¦  «        S ©Nr   r   r   r   ú<lambda>zAMask.AsynchronousFailureLogging.test_inCallback.<locals>.<lambda>A   s   € µs´w½{¹}¼}Ñ7MÔ7M€ r   )r   Ú
deferLaterr   r   s    r   Útest_inCallbackz/Mask.AsynchronousFailureLogging.test_inCallback=   s   € õ ”?¥7¨AÐ/MÐ/MÑNÔNÐNr   N)r#   r$   r%   r1   r   r   r   ÚAsynchronousFailureLoggingr+   <   s(   € € € € € ð	Oð 	Oð 	Oð 	Oð 	Or   r2   N)
r#   r$   r%   Ú__doc__r&   r	   ÚSynchronousTestCaser)   ÚTestCaser2   r   r   r   r   r      s°   € € € € € ðð ðð ð ð ð ñ ô ð ð4ð ð ð ð Ð$7¸Ô9Uñ ô ð ðOð Oð Oð Oð OÐ%8¸(Ô:Kñ Oô Oð Oð Oð Or   r   c                   óB   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
S )ÚObserverTestsz
    Tests for L{_synctest._LogObserver}, a helper for the implementation of
    L{SynchronousTestCase.flushLoggedErrors}.
    c                 óf   — t          j        ¦   «         | _        t          j        ¦   «         | _        d S r.   )r   Ú
TestResultÚresultr   Ú_LogObserverÚobserverr   s    r   ÚsetUpzObserverTests.setUpJ   s&   € ÝÔ)Ñ+Ô+ˆŒÝ!Ô.Ñ0Ô0ˆŒˆˆr   c                 óÀ   — | j                              dt          j        ¦   «         dddœ¦  «         |                      | j                              ¦   «         g ¦  «         dS )zW
        Test that a standard log message doesn't go anywhere near the result.
        )zsome messager   ú-)ÚmessageÚtimeÚisErrorÚsystemN)r<   ÚgotEventrA   ÚassertEqualÚ	getErrorsr   s    r   Útest_msgzObserverTests.test_msgN   sf   € ð 	Œ×Òà,Ýœ	™œØØð	ð ñ	
ô 	
ð 	
ð 	×Ò˜œ×0Ò0Ñ2Ô2°BÑ7Ô7Ð7Ð7Ð7r   c           	      óâ   — t          ¦   «         }| j                             dt          j        ¦   «         dd|ddœ¦  «         |                      | j                             ¦   «         |g¦  «         dS )zF
        Test that an observed error gets added to the result
        r   r   r?   N©r@   rA   rB   rC   r   Úwhy)r   r<   rD   rA   rE   rF   ©r   r   s     r   Ú
test_errorzObserverTests.test_error\   sw   € õ ‰MŒMˆØŒ×ÒàÝœ	™œØØØØðð ñ		
ô 		
ð 		
ð 	×Ò˜œ×0Ò0Ñ2Ô2°Q°CÑ8Ô8Ð8Ð8Ð8r   c                 óf  — |                       ¦   «          | j                             ¦   «         }|                      | j                             ¦   «         g ¦  «         |                      t          |¦  «        d¦  «         |                      |d                              t          ¦  «        ¦  «         dS )zS
        Check that flushing the observer with no args removes all errors.
        r   r   N)	rL   r<   ÚflushErrorsrE   rF   ÚlenÚ
assertTrueÚcheckr   )r   Úflusheds     r   Ú
test_flushzObserverTests.test_flushm   s’   € ð 	�ŠÑÔÐØ”-×+Ò+Ñ-Ô-ˆØ×Ò˜œ×0Ò0Ñ2Ô2°BÑ7Ô7Ð7Ø×Ò�˜W™œ qÑ)Ô)Ð)Ø�Š˜ œ
×(Ò(Õ):Ñ;Ô;Ñ<Ô<Ð<Ð<Ð<r   c                 óD   — t          j        t          d¦  «        ¦  «        S )Nz
test error)r   r   ÚRuntimeErrorr   s    r   Ú_makeRuntimeFailurez!ObserverTests._makeRuntimeFailurew   s   € ÝŒ�|¨LÑ9Ô9Ñ:Ô:Ð:r   c           
      ó  — |                       ¦   «          |                      ¦   «         }| j                             t	          dt          j        ¦   «         dd|d¬¦  «        ¦  «         | j                             t          ¦  «        }|                      | j         	                    ¦   «         |g¦  «         |                      t          |¦  «        d¦  «         |                      |d                              t          ¦  «        ¦  «         dS )zY
        Check that flushing the observer remove all failures of the given type.
        r   r   r?   NrI   r   )rL   rV   r<   rD   ÚdictrA   rN   r   rE   rF   rO   rP   rQ   )r   r   rR   s      r   Útest_flushByTypezObserverTests.test_flushByTypez   sê   € ð 	�ŠÑÔÐØ×$Ò$Ñ&Ô&ˆØŒ×ÒÝØ¥¤¡¤°aÀÈQÐTXðñ ô ñ	
ô 	
ð 	
ð
 ”-×+Ò+Õ,=Ñ>Ô>ˆØ×Ò˜œ×0Ò0Ñ2Ô2°Q°CÑ8Ô8Ð8Ø×Ò�˜W™œ qÑ)Ô)Ð)Ø�Š˜ œ
×(Ò(Õ):Ñ;Ô;Ñ<Ô<Ð<Ð<Ð<r   c           	      ó  — | j                              t          ¦  «         t          ¦   «         }| j                              dt          j        ¦   «         dd|ddœ¦  «         |                      | j                              ¦   «         g ¦  «         dS )zS
        Check that C{_ignoreErrors} actually causes errors to be ignored.
        r   r   r?   NrI   )r<   Ú_ignoreErrorsr   r   rD   rA   rE   rF   rK   s     r   Útest_ignoreErrorszObserverTests.test_ignoreErrorsŠ   sŒ   € ð 	Œ×#Ò#Õ$5Ñ6Ô6Ð6Ý‰MŒMˆØŒ×ÒàÝœ	™œØØØØðð ñ		
ô 		
ð 		
ð 	×Ò˜œ×0Ò0Ñ2Ô2°BÑ7Ô7Ð7Ð7Ð7r   c           	      óR  — | j                              t          ¦  «         | j                              ¦   «          t	          ¦   «         }| j                              dt          j        ¦   «         dd|ddœ¦  «         |                      | j                              ¦   «         |g¦  «         dS )zj
        Check that C{_clearIgnores} ensures that previously ignored errors
        get captured.
        r   r   r?   NrI   )	r<   r[   r   Ú_clearIgnoresr   rD   rA   rE   rF   rK   s     r   Útest_clearIgnoreszObserverTests.test_clearIgnoresœ   s¢   € ð
 	Œ×#Ò#Õ$5Ñ6Ô6Ð6ØŒ×#Ò#Ñ%Ô%Ð%Ý‰MŒMˆØŒ×ÒàÝœ	™œØØØØðð ñ		
ô 		
ð 		
ð 	×Ò˜œ×0Ò0Ñ2Ô2°Q°CÑ8Ô8Ð8Ð8Ð8r   N)r#   r$   r%   r3   r=   rG   rL   rS   rV   rY   r\   r_   r   r   r   r7   r7   D   s–   € € € € € ðð ð
1ð 1ð 1ð8ð 8ð 8ð9ð 9ð 9ð"=ð =ð =ð;ð ;ð ;ð=ð =ð =ð 8ð 8ð 8ð$9ð 9ð 9ð 9ð 9r   r7   c                   ó<   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚLogErrorsMixinzb
    High-level tests demonstrating the expected behaviour of logged errors
    during tests.
    c                 ó6   — t          j        ¦   «         | _        d S r.   )r   r9   r:   r   s    r   r=   zLogErrorsMixin.setUp·   s   € ÝÔ)Ñ+Ô+ˆŒˆˆr   c                 ó:   — |                       t          ¦  «         d S r.   )ÚflushLoggedErrorsr   r   s    r   ÚtearDownzLogErrorsMixin.tearDownº   s   € Ø×ÒÕ0Ñ1Ô1Ð1Ð1Ð1r   c                 óž  — |                       d¦  «        } || j        ¦  «         |                      t          | j        j        ¦  «        d¦  «         |                      | j        j        d         d                              t          ¦  «        | j        j        d         d         ¦  «         |                      d| j        j        ¦  «         dS )zI
        Test that a logged error gets reported as a test error.
        r   r   r   N)	ÚMockTestr:   rE   rO   ÚerrorsrP   rQ   r   Ú	successes©r   Útests     r   Útest_singleErrorzLogErrorsMixin.test_singleError½   s·   € ð �}Š}˜]Ñ+Ô+ˆØˆˆTŒ[ÑÔÐØ×Ò�˜Tœ[Ô/Ñ0Ô0°!Ñ4Ô4Ð4Ø�ŠØŒKÔ˜qÔ! !Ô$×*Ò*Õ+<Ñ=Ô=¸t¼{Ô?QÐRSÔ?TÐUVÔ?Wñ	
ô 	
ð 	
ð 	×Ò˜˜DœKÔ1Ñ2Ô2Ð2Ð2Ð2r   c                 óê   — |                       d¦  «        } || j        ¦  «         |                      t          | j        j        ¦  «        d¦  «         |                      d| j        j        ¦  «         dS )zf
        Test that when two errors get logged, they both get reported as test
        errors.
        r    é   r   N©rg   r:   rE   rO   rh   ri   rj   s     r   Útest_twoErrorszLogErrorsMixin.test_twoErrorsÉ   sk   € ð
 �}Š}˜]Ñ+Ô+ˆØˆˆTŒ[ÑÔÐØ×Ò�˜Tœ[Ô/Ñ0Ô0°!Ñ4Ô4Ð4Ø×Ò˜˜DœKÔ1Ñ2Ô2Ð2Ð2Ð2r   c                 óŒ  — |                       d¦  «        }|                       d¦  «        } || j        ¦  «          || j        ¦  «         |                      t          | j        j        ¦  «        d¦  «         |                      | j        j        d         d         |¦  «         |                      d| j        j        ¦  «         dS )zT
        Check that an error logged in one test doesn't fail the next test.
        r   r   r   r   Nro   ©r   Út1Út2s      r   Útest_errorsIsolatedz"LogErrorsMixin.test_errorsIsolatedÓ   s­   € ð �]Š]˜=Ñ)Ô)ˆØ�]Š]˜=Ñ)Ô)ˆØ
ˆˆ4Œ;‰ŒˆØ
ˆˆ4Œ;‰ŒˆØ×Ò�˜Tœ[Ô/Ñ0Ô0°!Ñ4Ô4Ð4Ø×Ò˜œÔ+¨AÔ.¨qÔ1°2Ñ6Ô6Ð6Ø×Ò˜˜DœKÔ1Ñ2Ô2Ð2Ð2Ð2r   c                 ó¤  — |                       d¦  «        }|                       d¦  «        } || j        ¦  «          || j        ¦  «         |                      t          | j        j        ¦  «        d¦  «         |                      | j        j        d         d         |¦  «         | j        j        d         d                              t          ¦  «         |                      | j        j        d         d         |¦  «         | j        j        d         d                              t          ¦  «         |                      d| j        j        ¦  «         dS )zN
        An error logged in a failed test doesn't fail the next test.
        r"   r   rn   r   r   N)	rg   r:   rE   rO   rh   ÚtrapÚ	TypeErrorr   ri   rr   s      r   Ú test_errorsIsolatedWhenTestFailsz/LogErrorsMixin.test_errorsIsolatedWhenTestFailsß   s  € ð �]Š]Ð0Ñ1Ô1ˆØ�]Š]˜=Ñ)Ô)ˆØ
ˆˆ4Œ;‰ŒˆØ
ˆˆ4Œ;‰Œˆà×Ò�˜Tœ[Ô/Ñ0Ô0°!Ñ4Ô4Ð4Ø×Ò˜œÔ+¨AÔ.¨qÔ1°2Ñ6Ô6Ð6ØŒÔ˜1Ô˜aÔ ×%Ò%¥iÑ0Ô0Ð0à×Ò˜œÔ+¨AÔ.¨qÔ1°2Ñ6Ô6Ð6ØŒÔ˜1Ô˜aÔ ×%Ò%Õ&7Ñ8Ô8Ð8à×Ò˜˜DœKÔ1Ñ2Ô2Ð2Ð2Ð2r   c                 ó(  — t          j        ¦   «         }|                      t           d|¦  «         t          j        j        dd…         }|                      ¦   «         } || j        ¦  «         |                      |t          j        j        ¦  «         dS )zE
        There are no extra log observers after a test runs.
        Ú_logObserverN)	r   r;   Úpatchr   ÚtheLogPublisherÚ	observersrg   r:   rE   )r   r<   r~   rk   s       r   Útest_boundedObserversz$LogErrorsMixin.test_boundedObserversñ   s}   € õ
 Ô)Ñ+Ô+ˆØ�
Š
•9˜n¨hÑ7Ô7Ð7ÝÔ'Ô1°!°!°!Ô4ˆ	Ø�}Š}‰ŒˆØˆˆTŒ[ÑÔÐØ×Ò˜¥CÔ$7Ô$AÑBÔBÐBÐBÐBr   N)r#   r$   r%   r3   r=   re   rl   rp   ru   ry   r   r   r   r   ra   ra   ±   sŒ   € € € € € ðð ð
,ð ,ð ,ð2ð 2ð 2ð
3ð 
3ð 
3ð3ð 3ð 3ð
3ð 
3ð 
3ð3ð 3ð 3ð$
Cð 
Cð 
Cð 
Cð 
Cr   ra   c                   ó   — e Zd Zej        ZdS )ÚSynchronousLogErrorsTestsN)r#   r$   r%   r   r)   rg   r   r   r   r�   r�   þ   s   € € € € € ØÔ-€H€H€Hr   r�   c                   ó"   — e Zd Zej        Zd„ ZdS )ÚAsynchronousLogErrorsTestsc                 ó^  — |                       d¦  «        } || j        ¦  «         |                      t          | j        j        ¦  «        d¦  «         |                      | j        j        d         d                              t          ¦  «        | j        j        d         d         ¦  «         dS )zS
        Test that errors logged in callbacks get reported as test errors.
        r1   r   r   N)rg   r:   rE   rO   rh   rP   rQ   r   rj   s     r   r1   z*AsynchronousLogErrorsTests.test_inCallback  sŸ   € ð �}Š}Ð.Ñ/Ô/ˆØˆˆTŒ[ÑÔÐØ×Ò�˜Tœ[Ô/Ñ0Ô0°!Ñ4Ô4Ð4Ø�ŠØŒKÔ˜qÔ! !Ô$×*Ò*Õ+<Ñ=Ô=¸t¼{Ô?QÐRSÔ?TÐUVÔ?Wñ	
ô 	
ð 	
ð 	
ð 	
r   N)r#   r$   r%   r   r2   rg   r1   r   r   r   rƒ   rƒ     s+   € € € € € ØÔ.€Hð	
ð 	
ð 	
ð 	
ð 	
r   rƒ   )r3   rA   Útwisted.internetr   r   Útwisted.pythonr   r   Útwisted.trialr   r   r	   r   r   r4   r7   ra   r�   r5   rƒ   r   r   r   ú<module>rˆ      s  ððð ð €€€à *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7ðð ð ð'Oð 'Oð 'Oð 'Oð 'Oñ 'Oô 'Oð 'OðTj9ð j9ð j9ð j9ð j9�HÔ0ñ j9ô j9ð j9ðZJCð JCð JCð JCð JCñ JCô JCð JCðZ.ð .ð .ð .ð . °Ô0Lñ .ô .ð .ð
ð 
ð 
ð 
ð 
 °Ô1Bñ 
ô 
ð 
ð 
ð 
r   