+
    üÐjË  ã                   óÎ   € R t ^ RIHt ^ RIHt ^ RIHtHtHtH	t	H
t
Ht ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^RIHtHt ^R	IHt  ! R
 R]4      t ! R R]4      t ! R R4      tR# )z)
Test cases for L{twisted.logger._file}.
)ÚStringIO)ÚTracebackType)ÚIOÚAnyÚAnyStrÚOptionalÚTypeÚcast)ÚBrokenMethodImplementation)ÚverifyObject)ÚFailure)ÚTestCase)ÚFileLogObserverÚtextFileLogObserver)ÚILogObserverc                   ó�   a € ] tR t^t o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	V 3R lR lt
RtV tR# )ÚFileLogObserverTestsz
Tests for L{FileLogObserver}.
c                ó   <€ V ^8„  d   QhRR/# ©é   ÚreturnN© )ÚformatÚ__classdict__s   "€Ú?/usr/lib/python3/dist-packages/twisted/logger/test/test_file.pyÚ__annotate__Ú!FileLogObserverTests.__annotate__   s   ø€ ÷ 	ñ 	 ñ 	ó    c                óò   € \        4       ;_uu_ 4       p\        VR 4      p \        \        V4       RRR4       R#   \         d   pT P                  T4        Rp?L+Rp?ii ; i  + '       g   i     R# ; i)z+
L{FileLogObserver} is an L{ILogObserver}.
c                 ó   € \        V 4      # ©N©Ústr©Úes   &r   Ú<lambda>Ú5FileLogObserverTests.test_interface.<locals>.<lambda>   ó   € ¼SÀ¼Vr   N)r   r   r   r   r
   Úfail)ÚselfÚ
fileHandleÚobserverr$   s   &   r   Útest_interfaceÚ#FileLogObserverTests.test_interface   sY   € ô �ZŒZ˜:Ü& zÑ3CÓDˆHðÜœ\¨8Ô4÷ ‰Zøô .ô Ø—	‘	˜!—‘ûðú÷	 �ZˆZús,   “A%¢<¼A"ÁAÁA%ÁA"Á"A%Á%A6	c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   %   s   ø€ ÷ @ñ @ Dñ @r   c                óø   € \        4       ;_uu_ 4       p\        VR 4      p\        ^R7      pV! V4       V P                  VP	                  4       \        V4      4       RRR4       R#   + '       g   i     R# ; i)zF
L{FileLogObserver} writes to the given file when it observes events.
c                 ó   € \        V 4      # r    r!   r#   s   &r   r%   Ú9FileLogObserverTests.test_observeWrites.<locals>.<lambda>*   r'   r   ©ÚxN)r   r   ÚdictÚassertEqualÚgetvaluer"   ©r)   r*   r+   Úevents   &   r   Útest_observeWritesÚ'FileLogObserverTests.test_observeWrites%   sS   € ô �ZŒZ˜:Ü& zÑ3CÓDˆHÜ˜1”IˆEÙ�UŒOØ×Ñ˜Z×0Ñ0Ó2´C¸³JÔ?÷	 �Z�ZŠZúó   “AA(Á(A9	c                ó:   <€ V ^8„  d   QhRS[ S[,          RS[RR/# )r   ÚwhatÚcountr   N)r   r"   Úint)r   r   s   "€r   r   r   /   s&   ø€ ÷ 7ñ 7©±­ð 7¹cð 7Àdñ 7r   c                ó  a€ \        4       ;_uu_ 4       p\        \        \        \        ,          V4      V3R l4      p\        ^R7      pV! V4       V P                  VP                  V4       RRR4       R#   + '       g   i     R# ; i)zÈ
Verify that observer performs an expected number of writes when the
formatter returns a given value.

@param what: the value for the formatter to return.
@param count: the expected number of writes.
c                 ó   <€ S# r    r   )r$   r=   s   &€r   r%   Ú:FileLogObserverTests._test_observeWrites.<locals>.<lambda>8   s   ø€ ÉDr   r2   N)Ú	DummyFiler   r	   r   r   r4   r5   Úwrites)r)   r=   r>   r*   r+   r8   s   &f&   r   Ú_test_observeWritesÚ(FileLogObserverTests._test_observeWrites/   sW   ø€ ô �[Œ[˜JÜ&¤t¬B¬s­G°ZÓ'@Ä.ÓQˆHÜ˜1”IˆEÙ�UŒOØ×Ñ˜Z×.Ñ.°Ô6÷	 �[�[Š[ús   ”AA8Á8B		c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   =   s   ø€ ÷ *ñ *¨ñ *r   c                ó*   € V P                  R^ 4       R# )zq
L{FileLogObserver} does not write to the given file when it observes
events and C{formatEvent} returns L{None}.
N©rE   ©r)   s   &r   Útest_observeWritesNoneÚ+FileLogObserverTests.test_observeWritesNone=   s   € ð
 	× Ñ   qÖ)r   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   D   s   ø€ ÷ (ñ (¨ñ (r   c                ó*   € V P                  R^ 4       R# )zo
L{FileLogObserver} does not write to the given file when it observes
events and C{formatEvent} returns C{""}.
Ú NrI   rJ   s   &r   Útest_observeWritesEmptyÚ,FileLogObserverTests.test_observeWritesEmptyD   s   € ð
 	× Ñ   QÖ'r   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   K   s   ø€ ÷ 	4ñ 	4 Tñ 	4r   c                ó  € \        4       ;_uu_ 4       p\        \        \        \        ,          V4      R 4      p\        ^R7      pV! V4       V P                  VP                  ^4       RRR4       R#   + '       g   i     R# ; i)zT
L{FileLogObserver} calles C{flush()} on the output file when it
observes an event.
c                 ó   € \        V 4      # r    r!   r#   s   &r   r%   Ú:FileLogObserverTests.test_observeFlushes.<locals>.<lambda>Q   s	   € ÌCÐPQÌFr   r2   N)rC   r   r	   r   r   r4   r5   Úflushesr7   s   &   r   Útest_observeFlushesÚ(FileLogObserverTests.test_observeFlushesK   sW   € ô
 �[Œ[˜JÜ&¤t¬B¬s­G°ZÓ'@ÑBRÓSˆHÜ˜1”IˆEÙ�UŒOØ×Ñ˜Z×/Ñ/°Ô3÷	 �[�[Š[ús   “AA4Á4B	r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r,   r9   rE   rK   rP   rW   Ú__static_attributes__Ú__classdictcell__©r   s   @r   r   r      sH   ø‡ € ñ÷	ð 	÷@ð @÷7ð 7÷*ð *÷(ð (÷	4ö 	4r   r   c                   ó~   a € ] tR t^Wt o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	Rt
V tR# )ÚTextFileLogObserverTestsz#
Tests for L{textFileLogObserver}.
c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   Ú%TextFileLogObserverTests.__annotate__\   s   ø€ ÷ =ñ =¨Tñ =r   c                ó¦   € \        4       ;_uu_ 4       p\        V4      pV P                  V\        4       RRR4       R#   + '       g   i     R# ; i)z6
L{textFileLogObserver} returns a L{FileLogObserver}.
N)r   r   ÚassertIsInstancer   ©r)   r*   r+   s   &  r   Útest_returnsFileLogObserverÚ4TextFileLogObserverTests.test_returnsFileLogObserver\   s3   € ô �ZŒZ˜:Ü*¨:Ó6ˆHØ×!Ñ! (¬OÔ<÷ �Z�ZŠZús	   “"?¿A	c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   rd   d   s   ø€ ÷ 9ñ 9˜dñ 9r   c                ó²   € \        4       ;_uu_ 4       p\        V4      pV P                  VP                  V4       RRR4       R#   + '       g   i     R# ; i)ú6
Returned L{FileLogObserver} has the correct outFile.
N)r   r   ÚassertIsÚ_outFilerg   s   &  r   Útest_outFileÚ%TextFileLogObserverTests.test_outFiled   s7   € ô �ZŒZ˜:Ü*¨:Ó6ˆHØ�M‰M˜(×+Ñ+¨ZÔ8÷ �Z�ZŠZús   “(AÁA	c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   rd   l   s   ø€ ÷ Lñ L ñ Lr   c           	     óä   € \        4       ;_uu_ 4       p\        VRR7      pV! \        RRR7      4       V P                  VP	                  4       R4       RRR4       R#   + '       g   i     R# ; i)rl   z%f)Ú
timeFormatÚXYZZYgš™™™™mû@)Ú
log_formatÚlog_timez600000 [-#-] XYZZY
N)r   r   r4   r5   r6   rg   s   &  r   Útest_timeFormatÚ(TextFileLogObserverTests.test_timeFormatl   sN   € ô �ZŒZ˜:Ü*¨:À$ÔGˆHÙ”T W°xÔ@ÔAØ×Ñ˜Z×0Ñ0Ó2Ð4JÔK÷ �Z�ZŠZús   “AAÁA/	c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   rd   u   s   ø€ ÷ ñ  Tñ r   c                óŽ  € \        4       ;_uu_ 4       p\        V4      p ^^ ,           \	        XR7      pV! V4       VP                  4       pV P                  VP                  R4      ^,          P                  R4      \        V4      R7       RRR4       R#   \         d    \        4       p L†i ; i  + '       g   i     R# ; i)zm
If the C{"log_failure"} key exists in an event, the observer appends
the failure's traceback to the output.
©Úlog_failureÚ
z	Traceback )ÚmsgN)
r   r   ÚZeroDivisionErrorr   r4   r6   Ú
assertTrueÚsplitÚ
startswithÚrepr)r)   r*   r+   Úfailurer8   Úoutputs   &     r   Útest_observeFailureÚ,TextFileLogObserverTests.test_observeFailureu   s    € ô
 �ZŒZ˜:Ü*¨:Ó6ˆHð$Ø�A–ô  WÔ-ˆEÙ�UŒOØ×(Ñ(Ó*ˆFØ�O‰OØ—‘˜TÓ" 1Õ%×0Ñ0°Ó@ÄdÈ6Ãlð ô ÷ ‰Zøô
 %ô $Ü!›)’ð$ú÷ �ZˆZús.   “B3 	B©A%B3ÂB0Â-B3Â/B0Â0B3Â3C	c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   rd   ‰   s   ø€ ÷ ,ñ ,¸Tñ ,r   c                óø   € \        4       ;_uu_ 4       p\        V4      p\        \        4       R7      pV! V4       VP	                  4       pRpV P                  WT4       RRR4       R#   + '       g   i     R# ; i)zÅ
If the C{"log_failure"} key exists in an event, and contains an object
that raises when you call its C{getTraceback()}, then the observer
appends a message noting the problem, instead of raising.
r{   z'(UNABLE TO OBTAIN TRACEBACK FROM EVENT)N)r   r   r4   Úobjectr6   ÚassertIn)r)   r*   r+   r8   r…   Úexpecteds   &     r   Ú+test_observeFailureThatRaisesInGetTracebackÚDTextFileLogObserverTests.test_observeFailureThatRaisesInGetTraceback‰   sU   € ô �ZŒZ˜:Ü*¨:Ó6ˆHÜ¤V£XÔ.ˆEÙ�UŒOØ×(Ñ(Ó*ˆFØ@ˆHØ�M‰M˜(Ô+÷ �Z�ZŠZúr;   r   N)rY   rZ   r[   r\   r]   rh   ro   rw   r†   r�   r^   r_   r`   s   @r   rb   rb   W   s>   ø‡ € ñ÷=ð =÷9ð 9÷Lð L÷ð ÷(,ö ,r   rb   c                   ó~   a € ] tR t^˜t o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	Rt
V tR# )rC   z&
File that counts writes and flushes.
c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   ÚDummyFile.__annotate__�   s   ø€ ÷ ñ ˜$ñ r   c                ó"   € ^ V n         ^ V n        R# )é    N)rD   rV   rJ   s   &r   Ú__init__ÚDummyFile.__init__�   s   € ØˆŒØˆŽr   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   Údatar   N)r   )r   r   s   "€r   r   r‘   ¡   s   ø€ ÷ ñ ™&ð  Tñ r   c                ó8   € V ;P                   ^,          un         R# )z 
Write data.

@param data: data
N)rD   )r)   r—   s   &&r   ÚwriteÚDummyFile.write¡   s   € ð 	�Š�qÕ�r   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r‘   ©   s   ø€ ÷ ñ �tñ r   c                ó8   € V ;P                   ^,          un         R# )z
Flush buffers.
N)rV   rJ   s   &r   ÚflushÚDummyFile.flush©   s   € ð 	�Š˜Õ�r   c                ó   <€ V ^8„  d   QhRR/# )r   r   rC   r   )r   r   s   "€r   r   r‘   ¯   s   ø€ ÷ ñ ˜;ñ r   c                ó   € V # r    r   rJ   s   &r   Ú	__enter__ÚDummyFile.__enter__¯   s   € Øˆr   c          	      ó‚   <€ V ^8„  d   QhRS[ S[S[,          ,          RS[ S[,          RS[ S[,          RS[ S[,          /# )r   Úexc_typeÚ	exc_valueÚ	tracebackr   )r   r   ÚBaseExceptionr   Úbool)r   r   s   "€r   r   r‘   ²   sK   ø€ ÷ ñ á™4¡Õ.Õ/ðñ ™MÕ*ðñ ™MÕ*ð	ñ
 
‘$�ñr   c                ó   € R # r    r   )r)   r¤   r¥   r¦   s   &&&&r   Ú__exit__ÚDummyFile.__exit__²   s   € ñ 	r   )rV   rD   N)rY   rZ   r[   r\   r]   r”   r™   r�   r¡   rª   r^   r_   r`   s   @r   rC   rC   ˜   s<   ø‡ € ñ÷ð ÷ð ÷ð ÷ð ÷ö r   rC   N)r]   Úior   Útypesr   Útypingr   r   r   r   r   r	   Úzope.interface.exceptionsr
   Úzope.interface.verifyr   Útwisted.python.failurer   Útwisted.trial.unittestr   Ú_filer   r   Ú_interfacesr   r   rb   rC   r   r   r   Ú<module>rµ      sN   ðñõ Ý ß 8× 8å @Ý .å *Ý +ß 8Ý &ô?4˜8ô ?4ôD>,˜xô >,÷B ó  r   