
    Yf                         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    O/var/www/html/env/lib/python3.11/site-packages/twisted/logger/test/test_file.py<lambda>z5FileLogObserverTests.test_interface.<locals>.<lambda>       SVV     N)r   r   r   r   r   fail)self
fileHandleobserverr   s       r   test_interfacez#FileLogObserverTests.test_interface   s     ZZ 	:&z3C3CDDH\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     ZZ 	@:&z3C3CDDH1IIIEHUOOOZ0022CJJ???		@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@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     [[ 	7J&tBsGZ'@'@....QQH1IIIEHUOOO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    CPQFF r    r(   r)   N)r6   r   r
   r   r   r+   r,   flushesr.   s       r   test_observeFlushesz(FileLogObserverTests.test_observeFlushesK   s    
 [[ 	4J&tBsGZ'@'@BRBRSSH1IIIEHUOOO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 7c 7d 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     ZZ 	=:*:66H!!(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     ZZ 	9:*:66HMM(+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XYZZYgm@)
log_formatlog_timez600000 [-#-] XYZZY
N)r   r   r+   r,   r-   rN   s      r   test_timeFormatz(TextFileLogObserverTests.test_timeFormatl   s     ZZ 	L:*:$GGGHHTWx@@@AAAZ00224J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)   
 ZZ 	:*:66H$A$ $ $ $!))$ W---EHUOOO((**FOOT""1%00@@d6ll    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	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     ZZ 	,:*:66HVXX...EHUOOO((**F@HMM(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 ?48 ?4 ?4 ?4D>, >, >, >, >,x >, >, >,B                   r    