§
    ÈtºfË  ã                   óà   — d Z ddlmZ ddlmZ ddlmZmZmZm	Z	m
Z
mZ ddlm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  G d„ de¦  «        Z G d„ de¦  «        Z G d„ d¦  «        ZdS )z)
Test cases for L{twisted.logger._file}.
é    )ÚStringIO)ÚTracebackType)ÚIOÚAnyÚAnyStrÚOptionalÚTypeÚcast)ÚBrokenMethodImplementation)ÚverifyObject)ÚFailure)ÚTestCaseé   )ÚFileLogObserverÚtextFileLogObserver)ÚILogObserverc                   óZ   — e Zd ZdZdd„Zdd„Zdee         deddfd„Z	dd	„Z
dd
„Zdd„ZdS )ÚFileLogObserverTestsz'
    Tests for L{FileLogObserver}.
    ÚreturnNc                 óü   — t          ¦   «         5 }t          |d„ ¦  «        }	 t          t          |¦  «         n,# t          $ r}|                      |¦  «         Y d}~nd}~ww xY wddd¦  «         dS # 1 swxY w Y   dS )z;
        L{FileLogObserver} is an L{ILogObserver}.
        c                 ó    — t          | ¦  «        S ©N©Ústr©Úes    ú\/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/logger/test/test_file.pyú<lambda>z5FileLogObserverTests.test_interface.<locals>.<lambda>   ó   € ½SÀ¹V¼V€ ó    N)r   r   r   r   r   Úfail)ÚselfÚ
fileHandleÚobserverr   s       r   Útest_interfacez#FileLogObserverTests.test_interface   sÒ   € õ ‰ZŒZð 	˜:Ý& zÐ3CÐ3CÑDÔDˆHðÝ�\¨8Ñ4Ô4Ð4Ð4øÝ-ð ð ð Ø—	’	˜!‘”������øøøøðøøøð		ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s7   �A1¢8·A1¸
A!ÁAÁA1ÁA!Á!A1Á1A5Á8A5c                 ó  — t          ¦   «         5 }t          |d„ ¦  «        }t          d¬¦  «        } ||¦  «         |                      |                     ¦   «         t          |¦  «        ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zV
        L{FileLogObserver} writes to the given file when it observes events.
        c                 ó    — t          | ¦  «        S r   r   r   s    r   r   z9FileLogObserverTests.test_observeWrites.<locals>.<lambda>*   r   r    é   ©ÚxN)r   r   ÚdictÚassertEqualÚgetvaluer   ©r"   r#   r$   Úevents       r   Útest_observeWritesz'FileLogObserverTests.test_observeWrites%   s×   € õ ‰ZŒZð 	@˜:Ý& zÐ3CÐ3CÑDÔDˆHÝ˜1�I‘I”IˆEØˆH�U‰OŒOˆOØ×Ò˜Z×0Ò0Ñ2Ô2µC¸±J´JÑ?Ô?Ð?ð		@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð 	@ð 	@s   �A"A>Á>BÂBÚwhatÚcountc                 ó$  ‡— t          ¦   «         5 }t          t          t          t                   |¦  «        ˆfd„¦  «        }t          d¬¦  «        } ||¦  «         |                      |j        |¦  «         ddd¦  «         dS # 1 swxY w Y   dS )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   r1   s    €r   r   z:FileLogObserverTests._test_observeWrites.<locals>.<lambda>8   s   ø€ ÈD€ r    r(   r)   N)Ú	DummyFiler   r
   r   r   r+   r,   Úwrites)r"   r1   r2   r#   r$   r/   s    `    r   Ú_test_observeWritesz(FileLogObserverTests._test_observeWrites/   sÆ   ø€ õ ‰[Œ[ð 	7˜JÝ&¥t­B­s¬G°ZÑ'@Ô'@À.À.À.À.ÑQÔQˆHÝ˜1�I‘I”IˆEØˆH�U‰OŒOˆOØ×Ò˜ZÔ.°Ñ6Ô6Ð6ð		7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7ð 	7ð 	7s   �A(BÂB	ÂB	c                 ó2   — |                       dd¦  «         dS )z‰
        L{FileLogObserver} does not write to the given file when it observes
        events and C{formatEvent} returns L{None}.
        Nr   ©r8   ©r"   s    r   Útest_observeWritesNonez+FileLogObserverTests.test_observeWritesNone=   s    € ð
 	× Ò   qÑ)Ô)Ð)Ð)Ð)r    c                 ó2   — |                       dd¦  «         dS )z‡
        L{FileLogObserver} does not write to the given file when it observes
        events and C{formatEvent} returns C{""}.
        Ú r   Nr:   r;   s    r   Útest_observeWritesEmptyz,FileLogObserverTests.test_observeWritesEmptyD   s    € ð
 	× Ò   QÑ'Ô'Ð'Ð'Ð'r    c                 ó  — t          ¦   «         5 }t          t          t          t                   |¦  «        d„ ¦  «        }t          d¬¦  «        } ||¦  «         |                      |j        d¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zl
        L{FileLogObserver} calles C{flush()} on the output file when it
        observes an event.
        c                 ó    — t          | ¦  «        S r   r   r   s    r   r   z:FileLogObserverTests.test_observeFlushes.<locals>.<lambda>Q   s   € ÍCÐPQÉFÌF€ r    r(   r)   N)r6   r   r
   r   r   r+   r,   Úflushesr.   s       r   Útest_observeFlushesz(FileLogObserverTests.test_observeFlushesK   sÃ   € õ
 ‰[Œ[ð 	4˜JÝ&¥t­B­s¬G°ZÑ'@Ô'@ÐBRÐBRÑSÔSˆHÝ˜1�I‘I”IˆEØˆH�U‰OŒOˆOØ×Ò˜ZÔ/°Ñ3Ô3Ð3ð		4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4ð 	4ð 	4s   �A&BÂBÂ	B©r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r%   r0   r   r   Úintr8   r<   r?   rC   r5   r    r   r   r      s³   € € € € € ðð ð	ð 	ð 	ð 	ð@ð @ð @ð @ð7¨°¬ð 7¸cð 7Àdð 7ð 7ð 7ð 7ð*ð *ð *ð *ð(ð (ð (ð (ð	4ð 	4ð 	4ð 	4ð 	4ð 	4r    r   c                   ó:   — e Zd ZdZd	d„Zd	d„Zd	d„Zd	d„Zd	d„ZdS )
ÚTextFileLogObserverTestsz+
    Tests for L{textFileLogObserver}.
    r   Nc                 ó¨   — t          ¦   «         5 }t          |¦  «        }|                      |t          ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zF
        L{textFileLogObserver} returns a L{FileLogObserver}.
        N)r   r   ÚassertIsInstancer   ©r"   r#   r$   s      r   Útest_returnsFileLogObserverz4TextFileLogObserverTests.test_returnsFileLogObserver\   s’   € õ ‰ZŒZð 	=˜:Ý*¨:Ñ6Ô6ˆHØ×!Ò! (­OÑ<Ô<Ð<ð	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ó   �+AÁAÁAc                 ó¨   — t          ¦   «         5 }t          |¦  «        }|                      |j        |¦  «         ddd¦  «         dS # 1 swxY w Y   dS )úF
        Returned L{FileLogObserver} has the correct outFile.
        N)r   r   ÚassertIsÚ_outFilerN   s      r   Útest_outFilez%TextFileLogObserverTests.test_outFiled   s“   € õ ‰ZŒZð 	9˜:Ý*¨:Ñ6Ô6ˆHØ�MŠM˜(Ô+¨ZÑ8Ô8Ð8ð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9ð 	9ð 	9rP   c                 óú   — t          ¦   «         5 }t          |d¬¦  «        } |t          dd¬¦  «        ¦  «         |                      |                     ¦   «         d¦  «         ddd¦  «         dS # 1 swxY w Y   dS )rR   z%f)Ú
timeFormatÚXYZZYgš™™™™mû@)Ú
log_formatÚlog_timez600000 [-#-] XYZZY
N)r   r   r+   r,   r-   rN   s      r   Útest_timeFormatz(TextFileLogObserverTests.test_timeFormatl   sÔ   € õ ‰ZŒZð 	L˜:Ý*¨:À$ÐGÑGÔGˆHØˆH•T W°xÐ@Ñ@Ô@ÑAÔAÐAØ×Ò˜Z×0Ò0Ñ2Ô2Ð4JÑKÔKÐKð	Lð 	Lð 	Lñ 	Lô 	Lð 	Lð 	Lð 	Lð 	Lð 	Lð 	Lð 	Løøøð 	Lð 	Lð 	Lð 	Lð 	Lð 	Ls   �AA0Á0A4Á7A4c                 óº  — t          ¦   «         5 }t          |¦  «        }	 ddz   n# t          $ r t          ¦   «         }Y nw xY wt	          |¬¦  «        } ||¦  «         |                     ¦   «         }|                      |                     d¦  «        d                              d¦  «        t          |¦  «        ¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z…
        If the C{"log_failure"} key exists in an event, the observer appends
        the failure's traceback to the output.
        r(   r   ©Úlog_failureú
z	Traceback )ÚmsgN)
r   r   ÚZeroDivisionErrorr   r+   r-   Ú
assertTrueÚsplitÚ
startswithÚrepr)r"   r#   r$   Úfailurer/   Úoutputs         r   Útest_observeFailurez,TextFileLogObserverTests.test_observeFailureu   s)  € õ
 ‰ZŒZð 	˜:Ý*¨:Ñ6Ô6ˆHð$Ø�A‘��øÝ$ð $ð $ð $Ý!™)œ)���ð$øøøõ  WÐ-Ñ-Ô-ˆEØˆH�U‰OŒOˆOØ×(Ò(Ñ*Ô*ˆFØ�OŠOØ—’˜TÑ"Ô" 1Ô%×0Ò0°Ñ@Ô@ÅdÈ6ÁlÄlð ñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s1   �C &¥C¦A¾CÁ AÁBCÃCÃCc                 ó  — t          ¦   «         5 }t          |¦  «        }t          t          ¦   «         ¬¦  «        } ||¦  «         |                     ¦   «         }d}|                      ||¦  «         ddd¦  «         dS # 1 swxY w Y   dS )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   r+   Úobjectr-   ÚassertIn)r"   r#   r$   r/   rg   Úexpecteds         r   Ú+test_observeFailureThatRaisesInGetTracebackzDTextFileLogObserverTests.test_observeFailureThatRaisesInGetTraceback‰   sÇ   € õ ‰ZŒZð 	,˜:Ý*¨:Ñ6Ô6ˆHÝ¥V¡X¤XÐ.Ñ.Ô.ˆEØˆH�U‰OŒOˆOØ×(Ò(Ñ*Ô*ˆFØ@ˆHØ�MŠM˜( FÑ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,ð 	,ð 	,s   �A#A?Á?BÂBrD   )	rE   rF   rG   rH   rO   rU   r[   rh   rm   r5   r    r   rK   rK   W   s†   € € € € € ðð ð=ð =ð =ð =ð9ð 9ð 9ð 9ðLð Lð Lð Lðð ð ð ð(,ð ,ð ,ð ,ð ,ð ,r    rK   c            	       óŽ   — e Zd ZdZdd„Zdeddfd„Zdd„Zdd„Zd	e	e
e                  d
e	e         de	e         de	e         fd„ZdS )r6   z.
    File that counts writes and flushes.
    r   Nc                 ó"   — d| _         d| _        d S )Nr   )r7   rB   r;   s    r   Ú__init__zDummyFile.__init__�   s   € ØˆŒØˆŒˆˆr    Údatac                 ó&   — | xj         dz  c_         dS )z8
        Write data.

        @param data: data
        r(   N)r7   )r"   rq   s     r   ÚwritezDummyFile.write¡   s   € ð 	ˆŒ�qÑˆŒˆˆr    c                 ó&   — | xj         dz  c_         dS )z 
        Flush buffers.
        r(   N)rB   r;   s    r   ÚflushzDummyFile.flush©   s   € ð 	ˆŒ˜ÑˆŒˆˆr    c                 ó   — | S r   r5   r;   s    r   Ú	__enter__zDummyFile.__enter__¯   s   € Øˆr    Úexc_typeÚ	exc_valueÚ	tracebackc                 ó   — d S r   r5   )r"   rx   ry   rz   s       r   Ú__exit__zDummyFile.__exit__²   s	   € ð 	ˆr    rD   )r   r6   )rE   rF   rG   rH   rp   r   rs   ru   rw   r   r	   ÚBaseExceptionr   Úboolr|   r5   r    r   r6   r6   ˜   sÎ   € € € € € ðð ðð ð ð ð˜&ð  Tð ð ð ð ðð ð ð ðð ð ð ðà˜4 Ô.Ô/ðð ˜MÔ*ðð ˜MÔ*ð	ð
 
�$Œðð ð ð ð ð r    r6   N)rH   Úior   Útypesr   Útypingr   r   r   r   r	   r
   Úzope.interface.exceptionsr   Úzope.interface.verifyr   Útwisted.python.failurer   Útwisted.trial.unittestr   Ú_filer   r   Ú_interfacesr   r   rK   r6   r5   r    r   ú<module>rˆ      s_  ððð ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8à @Ð @Ð @Ð @Ð @Ð @Ø .Ð .Ð .Ð .Ð .Ð .à *Ð *Ð *Ð *Ð *Ð *Ø +Ð +Ð +Ð +Ð +Ð +Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø &Ð &Ð &Ð &Ð &Ð &ð?4ð ?4ð ?4ð ?4ð ?4˜8ñ ?4ô ?4ð ?4ðD>,ð >,ð >,ð >,ð >,˜xñ >,ô >,ð >,ðB ð  ð  ð  ð  ñ  ô  ð  ð  ð  r    