+
    üÐjh  ã                   óö   € R t ^ RIt^ RIHtHt ^ RIHtHt ^ RIH	t	H
t
Ht R t ! R R4      t ! R R	]P                  4      t ! R
 R4      t ! R R]]P                  4      t ! R R]]P$                  4      tR# )zG
Test the interaction between trial and errors logged during test run.
N)ÚreactorÚtask)ÚfailureÚlog)Ú	_synctestÚreporterÚunittestc                 óh   €  ^^ ,           X #   \          d    \        P                  ! 4       p  T # i ; i)z"
Return a new, realistic failure.
)ÚZeroDivisionErrorr   ÚFailure)Úfs    Ú=/usr/lib/python3/dist-packages/twisted/trial/test/test_log.pyÚmakeFailurer      s7   € ðØ	ˆAŽð €Høô ô Ü�OŠOÓ‰Ø€Hðús   ‚	 � 1°1c                   ó†   € ] tR t^tRt ! R R4      t ! R R]]P                  4      t ! R R]]P                  4      t
RtR	# )
ÚMaskz7
Hide C{MockTest}s from Trial's automatic test finder.
c                   ó8   a € ] tR t^t o R tR tR tR tRtV t	R# )ÚMask.FailureLoggingMixinc                ó   € R# )z
Don't log any errors.
N© ©Úselfs   &r   Útest_silentÚ$Mask.FailureLoggingMixin.test_silent    s   ‚ ó    c                óB   € \         P                  ! \        4       4       R# )z
Log a single error.
N©r   Úerrr   r   s   &r   Útest_singleÚ$Mask.FailureLoggingMixin.test_single%   s   € ô �GŠG”K“MÖ"r   c                ó~   € \         P                  ! \        4       4       \         P                  ! \        4       4       R# )z
Log two errors.
Nr   r   s   &r   Útest_doubleÚ$Mask.FailureLoggingMixin.test_double+   s    € ô �GŠG”K“MÔ"Ü�GŠG”K“MÖ"r   c                óT   € \         P                  ! \        4       4       ^R,            R# )z 
Log a single error, then fail.
Nr   r   s   &r   Útest_singleThenFailÚ,Mask.FailureLoggingMixin.test_singleThenFail2   s   € ô �GŠG”K“MÔ"Ø��HˆHr   r   N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r    r#   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   ÚFailureLoggingMixinr      s   ø‡ € ò	ò
	#ò	#÷	ð 	r   r-   c                   ó   € ] tR t^9tRtR# )ÚMask.SynchronousFailureLoggingr   N)r%   r&   r'   r(   r)   r   r   r   ÚSynchronousFailureLoggingr/   9   s   † Ûr   r0   c                   ó&   a € ] tR t^<t o R tRtV tR# )ÚMask.AsynchronousFailureLoggingc                ó<   € \         P                  ! \        ^ R 4      # )z+
Log an error in an asynchronous callback.
c                  ó>   € \         P                  ! \        4       4      # ©Nr   r   r   r   Ú<lambda>ÚAMask.AsynchronousFailureLogging.test_inCallback.<locals>.<lambda>A   s   € ´s·w²w¼{»}Ô7Mr   )r   Ú
deferLaterr   r   s   &r   Útest_inCallbackÚ/Mask.AsynchronousFailureLogging.test_inCallback=   s   € ô —?’?¤7¨AÑ/MÓNÐNr   r   N)r%   r&   r'   r(   r9   r)   r*   r+   s   @r   ÚAsynchronousFailureLoggingr2   <   s   ø‡ € ÷	Oð 	Or   r;   r   N)r%   r&   r'   r(   Ú__doc__r-   r   ÚSynchronousTestCaser0   ÚTestCaser;   r)   r   r   r   r   r      sC   † ñ÷ñ ô4Ð$7¸×9UÑ9Uô ôOÐ%8¸(×:KÑ:K÷ Oð Or   r   c                   óT   a € ] tR t^Dt o RtR tR tR tR tR t	R t
R tR	 tR
tV tR# )ÚObserverTestszs
Tests for L{_synctest._LogObserver}, a helper for the implementation of
L{SynchronousTestCase.flushLoggedErrors}.
c                ón   € \         P                  ! 4       V n        \        P                  ! 4       V n        R # r5   )r   Ú
TestResultÚresultr   Ú_LogObserverÚobserverr   s   &r   ÚsetUpÚObserverTests.setUpJ   s"   € Ü×)Ò)Ó+ˆŒÜ!×.Ò.Ó0ˆŽr   c           
     óÆ   € V P                   P                  RRR\        P                  ! 4       R^ RR/4       V P                  V P                   P	                  4       . 4       R# )zG
Test that a standard log message doesn't go anywhere near the result.
ÚmessageÚtimeÚisErrorÚsystemÚ-N)zsome message)rE   ÚgotEventrJ   ÚassertEqualÚ	getErrorsr   s   &r   Útest_msgÚObserverTests.test_msgN   sU   € ð 	�‰×ÑàÐ,ØœŸ	š	›Ø˜1Ø˜#ð	ô	
ð 	×Ñ˜Ÿ™×0Ñ0Ó2°BÖ7r   c                óä   € \        4       pV P                  P                  RR	R\        P                  ! 4       R^RRRVRR/4       V P	                  V P                  P                  4       V.4       R# )
z6
Test that an observed error gets added to the result
rI   rJ   rK   rL   rM   r   ÚwhyNr   )r   rE   rN   rJ   rO   rP   ©r   r   s   & r   Ú
test_errorÚObserverTests.test_error\   sg   € ô ‹MˆØ�‰×Ñà˜2ØœŸ	š	›Ø˜1Ø˜#Ø˜1Ø�tðô		
ð 	×Ñ˜Ÿ™×0Ñ0Ó2°Q°CÖ8r   c                ó:  € V P                  4        V P                  P                  4       pV P                  V P                  P	                  4       . 4       V P                  \        V4      ^4       V P                  V^ ,          P                  \        4      4       R# )zC
Check that flushing the observer with no args removes all errors.
N)	rV   rE   ÚflushErrorsrO   rP   ÚlenÚ
assertTrueÚcheckr
   )r   Úflusheds   & r   Ú
test_flushÚObserverTests.test_flushm   sm   € ð 	�‰ÔØ—-‘-×+Ñ+Ó-ˆØ×Ñ˜Ÿ™×0Ñ0Ó2°BÔ7Ø×Ñœ˜W› qÔ)Ø�‰˜ �
×(Ñ(Ô):Ó;Ö<r   c                ó@   € \         P                  ! \        R 4      4      # )z
test error)r   r   ÚRuntimeErrorr   s   &r   Ú_makeRuntimeFailureÚ!ObserverTests._makeRuntimeFailurew   s   € Ü�Šœ|¨LÓ9Ó:Ð:r   c                óà  € V P                  4        V P                  4       pV P                  P                  \	        R\
        P
                  ! 4       ^RVRR7      4       V P                  P                  \        4      pV P                  V P                  P                  4       V.4       V P                  \        V4      ^4       V P                  V^ ,          P                  \        4      4       R# )zI
Check that flushing the observer remove all failures of the given type.
rM   N)rI   rJ   rK   rL   r   rT   r   )rV   rb   rE   rN   ÚdictrJ   rY   r
   rO   rP   rZ   r[   r\   )r   r   r]   s   &  r   Útest_flushByTypeÚObserverTests.test_flushByTypez   s°   € ð 	�‰ÔØ×$Ñ$Ó&ˆØ�‰×ÑÜØ¤§¢£°aÀÈQÐTXôô	
ð
 —-‘-×+Ñ+Ô,=Ó>ˆØ×Ñ˜Ÿ™×0Ñ0Ó2°Q°CÔ8Ø×Ñœ˜W› qÔ)Ø�‰˜ �
×(Ñ(Ô):Ó;Ö<r   c                ó   € V P                   P                  \        4       \        4       pV P                   P	                  RR	R\
        P
                  ! 4       R^RRRVRR/4       V P                  V P                   P                  4       . 4       R# )
zC
Check that C{_ignoreErrors} actually causes errors to be ignored.
rI   rJ   rK   rL   rM   r   rT   Nr   )rE   Ú_ignoreErrorsr
   r   rN   rJ   rO   rP   rU   s   & r   Útest_ignoreErrorsÚObserverTests.test_ignoreErrorsŠ   sx   € ð 	�‰×#Ñ#Ô$5Ô6Ü‹MˆØ�‰×Ñà˜2ØœŸ	š	›Ø˜1Ø˜#Ø˜1Ø�tðô		
ð 	×Ñ˜Ÿ™×0Ñ0Ó2°BÖ7r   c                óV  € V P                   P                  \        4       V P                   P                  4        \	        4       pV P                   P                  RR	R\        P                  ! 4       R^RRRVRR/4       V P                  V P                   P                  4       V.4       R# )
zR
Check that C{_clearIgnores} ensures that previously ignored errors
get captured.
rI   rJ   rK   rL   rM   r   rT   Nr   )	rE   ri   r
   Ú_clearIgnoresr   rN   rJ   rO   rP   rU   s   & r   Útest_clearIgnoresÚObserverTests.test_clearIgnoresœ   sŠ   € ð
 	�‰×#Ñ#Ô$5Ô6Ø�‰×#Ñ#Ô%Ü‹MˆØ�‰×Ñà˜2ØœŸ	š	›Ø˜1Ø˜#Ø˜1Ø�tðô		
ð 	×Ñ˜Ÿ™×0Ñ0Ó2°Q°CÖ8r   )rE   rC   N)r%   r&   r'   r(   r<   rF   rQ   rV   r^   rb   rf   rj   rn   r)   r*   r+   s   @r   r@   r@   D   s7   ø‡ € ñò
1ò8ò9ò"=ò;ò=ò 8÷$9ð 9r   r@   c                   óN   a € ] tR t^±t o RtR tR tR tR tR t	R t
R tR	tV tR
# )ÚLogErrorsMixinzV
High-level tests demonstrating the expected behaviour of logged errors
during tests.
c                ó:   € \         P                  ! 4       V n        R # r5   )r   rB   rC   r   s   &r   rF   ÚLogErrorsMixin.setUp·   s   € Ü×)Ò)Ó+ˆŽr   c                ó0   € V P                  \        4       R # r5   )ÚflushLoggedErrorsr
   r   s   &r   ÚtearDownÚLogErrorsMixin.tearDownº   s   € Ø×ÑÔ0Ö1r   c                óÈ  € V P                  R4      pV! V P                  4       V P                  \        V P                  P                  4      ^4       V P                  V P                  P                  ^ ,          ^,          P                  \        4      V P                  P                  ^ ,          ^,          4       V P                  ^ V P                  P                  4       R# )z9
Test that a logged error gets reported as a test error.
r   N)	ÚMockTestrC   rO   rZ   Úerrorsr[   r\   r
   Ú	successes©r   Útests   & r   Útest_singleErrorÚLogErrorsMixin.test_singleError½   s    € ð �}‰}˜]Ó+ˆÙˆT�[‰[ÔØ×Ñœ˜TŸ[™[×/Ñ/Ó0°!Ô4Ø�‰Ø�K‰K×Ñ˜qÕ! !Õ$×*Ñ*Ô+<Ó=¸t¿{¹{×?QÑ?QÐRSÕ?TÐUVÕ?Wô	
ð 	×Ñ˜˜DŸK™K×1Ñ1Ö2r   c                óö   € V P                  R4      pV! V P                  4       V P                  \        V P                  P                  4      ^4       V P                  ^ V P                  P
                  4       R# )zN
Test that when two errors get logged, they both get reported as test
errors.
r    N©ry   rC   rO   rZ   rz   r{   r|   s   & r   Útest_twoErrorsÚLogErrorsMixin.test_twoErrorsÉ   sW   € ð
 �}‰}˜]Ó+ˆÙˆT�[‰[ÔØ×Ñœ˜TŸ[™[×/Ñ/Ó0°!Ô4Ø×Ñ˜˜DŸK™K×1Ñ1Ö2r   c                ó¤  € V P                  R4      pV P                  R4      pV! V P                  4       V! V P                  4       V P                  \        V P                  P                  4      ^4       V P                  V P                  P                  ^ ,          ^ ,          V4       V P                  ^V P                  P
                  4       R# )zD
Check that an error logged in one test doesn't fail the next test.
r   r   Nr�   ©r   Út1Út2s   &  r   Útest_errorsIsolatedÚ"LogErrorsMixin.test_errorsIsolatedÓ   s“   € ð �]‰]˜=Ó)ˆØ�]‰]˜=Ó)ˆÙ
ˆ4�;‰;ŒÙ
ˆ4�;‰;ŒØ×Ñœ˜TŸ[™[×/Ñ/Ó0°!Ô4Ø×Ñ˜Ÿ™×+Ñ+¨AÕ.¨qÕ1°2Ô6Ø×Ñ˜˜DŸK™K×1Ñ1Ö2r   c                óè  € V P                  R4      pV P                  R4      pV! V P                  4       V! V P                  4       V P                  \        V P                  P                  4      ^4       V P                  V P                  P                  ^ ,          ^ ,          V4       V P                  P                  ^ ,          ^,          P                  \        4       V P                  V P                  P                  ^,          ^ ,          V4       V P                  P                  ^,          ^,          P                  \        4       V P                  ^V P                  P                  4       R# )z>
An error logged in a failed test doesn't fail the next test.
r#   r   N)	ry   rC   rO   rZ   rz   ÚtrapÚ	TypeErrorr
   r{   r…   s   &  r   Ú test_errorsIsolatedWhenTestFailsÚ/LogErrorsMixin.test_errorsIsolatedWhenTestFailsß   sý   € ð �]‰]Ð0Ó1ˆØ�]‰]˜=Ó)ˆÙ
ˆ4�;‰;ŒÙ
ˆ4�;‰;Œà×Ñœ˜TŸ[™[×/Ñ/Ó0°!Ô4Ø×Ñ˜Ÿ™×+Ñ+¨AÕ.¨qÕ1°2Ô6Ø�‰×Ñ˜1Õ˜aÕ ×%Ñ%¤iÔ0à×Ñ˜Ÿ™×+Ñ+¨AÕ.¨qÕ1°2Ô6Ø�‰×Ñ˜1Õ˜aÕ ×%Ñ%Ô&7Ô8à×Ñ˜˜DŸK™K×1Ñ1Ö2r   c                ó8  € \         P                  ! 4       pV P                  \         RV4       \        P                  P
                  R,          pV P                  4       pV! V P                  4       V P                  V\        P                  P
                  4       R# )z5
There are no extra log observers after a test runs.
Ú_logObserver:NNNN)	r   rD   Úpatchr   ÚtheLogPublisherÚ	observersry   rC   rO   )r   rE   r“   r}   s   &   r   Útest_boundedObserversÚ$LogErrorsMixin.test_boundedObserversñ   sk   € ô
 ×)Ò)Ó+ˆØ�
‰
”9˜n¨hÔ7Ü×'Ñ'×1Ñ1°!Õ4ˆ	Ø�}‰}‹ˆÙˆT�[‰[ÔØ×Ñ˜¤C×$7Ñ$7×$AÑ$AÖBr   )rC   N)r%   r&   r'   r(   r<   rF   rv   r~   r‚   rˆ   r�   r”   r)   r*   r+   s   @r   rq   rq   ±   s4   ø‡ € ñò
,ò2ò
3ò3ò
3ò3÷$
Cð 
Cr   rq   c                   ó.   € ] tR t^þt]P
                  tRtR# )ÚSynchronousLogErrorsTestsr   N)r%   r&   r'   r(   r   r0   ry   r)   r   r   r   r—   r—   þ   s   † Ø×-Ñ-„Hr   r—   c                   ó>   a € ] tR tRt o ]P
                  tR tRtV t	R# )ÚAsynchronousLogErrorsTestsi  c                ó|  € V P                  R4      pV! V P                  4       V P                  \        V P                  P                  4      ^4       V P                  V P                  P                  ^ ,          ^,          P                  \        4      V P                  P                  ^ ,          ^,          4       R# )zC
Test that errors logged in callbacks get reported as test errors.
r9   N)ry   rC   rO   rZ   rz   r[   r\   r
   r|   s   & r   r9   Ú*AsynchronousLogErrorsTests.test_inCallback  s…   € ð �}‰}Ð.Ó/ˆÙˆT�[‰[ÔØ×Ñœ˜TŸ[™[×/Ñ/Ó0°!Ô4Ø�‰Ø�K‰K×Ñ˜qÕ! !Õ$×*Ñ*Ô+<Ó=¸t¿{¹{×?QÑ?QÐRSÕ?TÐUVÕ?Wö	
r   r   N)
r%   r&   r'   r(   r   r;   ry   r9   r)   r*   r+   s   @r   r™   r™     s   ø‡ € Ø×.Ñ.€H÷	
ð 	
r   r™   )r<   rJ   Útwisted.internetr   r   Útwisted.pythonr   r   Útwisted.trialr   r   r   r   r   r=   r@   rq   r—   r>   r™   r   r   r   Ú<module>rŸ      sy   ðñó ç *ß 'ß 7Ñ 7ò÷'Oñ 'OôTj9�H×0Ñ0ô j9÷ZJCñ JCôZ. °×0LÑ0Lô .ô
 °×1BÑ1Bö 
r   