ó
    Ö›‘h*  ã                   ó¢   • S r SSKJrJrJrJr  SSKJr  SSKJ	r	  SSK
Jr  SSKJr  SSKJrJr  SS	KJr  SS
KJr   " S S\R*                  5      rg)z-
Test cases for L{twisted.logger._observer}.
é    )ÚDictÚListÚTupleÚcast)Úimplementer)ÚBrokenMethodImplementation)ÚverifyObject)Úunittesté   )ÚILogObserverÚLogEvent)ÚLogger)ÚLogPublisherc                   ó|   • \ rS rSrSrSS jrSS jrSS jrSS jrSS jr	SS	 jr
SS
 jrSS jrSS jrSS jrSrg)ÚLogPublisherTestsé   z
Tests for L{LogPublisher}.
Nc                 óŠ   • [        5       n [        [        U5        g! [         a  nU R	                  U5         SnAgSnAff = f)z(
L{LogPublisher} is an L{ILogObserver}.
N)r   r	   r   r   Úfail)ÚselfÚ	publisherÚes      ÚeC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/logger/test/test_observer.pyÚtest_interfaceÚ LogPublisherTests.test_interface   s7   € ô !“Nˆ	ð	Üœ yÕ1øÜ)ó 	Ø�I‰I�a�L‰Lûð	ús   Œ �
A§=½Ac                 óª   • [        [        S 5      n[        [        S 5      n[        X5      nU R                  X1[	        UR
                  5      5        g)z2
L{LogPublisher.observers} returns the observers.
c                 ó   • g ©N© ©r   s    r   Ú<lambda>Ú2LogPublisherTests.test_observers.<locals>.<lambda>'   ó   € ¨$ó    c                 ó   • g r   r   r   s    r   r    r!   (   r"   r#   N)r   r   r   ÚassertEqualÚsetÚ
_observers)r   Úo1Úo2r   s       r   Útest_observersÚ LogPublisherTests.test_observers#   sC   € ô ”,¡Ó/ˆÜ”,¡Ó/ˆä  Ó(ˆ	Ø×Ñ˜"˜¤3 y×';Ñ';Ó#<Õ=r#   c                 óð   • [        [        S 5      n[        [        S 5      n[        [        S 5      n[        X5      nUR                  U5        U R	                  XU1[        UR                  5      5        g)z/
L{LogPublisher.addObserver} adds an observer.
c                 ó   • g r   r   r   s    r   r    Ú4LogPublisherTests.test_addObserver.<locals>.<lambda>1   r"   r#   c                 ó   • g r   r   r   s    r   r    r.   2   r"   r#   c                 ó   • g r   r   r   s    r   r    r.   3   r"   r#   N)r   r   r   ÚaddObserverr%   r&   r'   ©r   r(   r)   Úo3r   s        r   Útest_addObserverÚ"LogPublisherTests.test_addObserver-   s_   € ô ”,¡Ó/ˆÜ”,¡Ó/ˆÜ”,¡Ó/ˆä  Ó(ˆ	Ø×Ñ˜bÔ!Ø×Ñ˜" "˜¤s¨9×+?Ñ+?Ó'@ÕAr#   c                 ój   • [        5       nU R                  [        UR                  [	        5       5        g)zM
L{LogPublisher.addObserver} refuses to add an observer that's
not callable.
N)r   ÚassertRaisesÚ	TypeErrorr1   Úobject)r   r   s     r   Útest_addObserverNotCallableÚ-LogPublisherTests.test_addObserverNotCallable9   s%   € ô
 !“Nˆ	Ø×Ñœ) Y×%:Ñ%:¼F»HÕEr#   c                 óð   • [        [        S 5      n[        [        S 5      n[        [        S 5      n[        XU5      nUR                  U5        U R	                  X1[        UR                  5      5        g)z5
L{LogPublisher.removeObserver} removes an observer.
c                 ó   • g r   r   r   s    r   r    Ú7LogPublisherTests.test_removeObserver.<locals>.<lambda>E   r"   r#   c                 ó   • g r   r   r   s    r   r    r>   F   r"   r#   c                 ó   • g r   r   r   s    r   r    r>   G   r"   r#   N©r   r   r   ÚremoveObserverr%   r&   r'   r2   s        r   Útest_removeObserverÚ%LogPublisherTests.test_removeObserverA   s_   € ô ”,¡Ó/ˆÜ”,¡Ó/ˆÜ”,¡Ó/ˆä  ¨Ó,ˆ	Ø× Ñ  Ô$Ø×Ñ˜"˜¤3 y×';Ñ';Ó#<Õ=r#   c                 óî   • [        [        S 5      n[        [        S 5      n[        [        S 5      n[        X5      nUR                  U5        U R	                  X1[        UR                  5      5        g)zL
L{LogPublisher.removeObserver} removes an observer that is not
registered.
c                 ó   • g r   r   r   s    r   r    ÚDLogPublisherTests.test_removeObserverNotRegistered.<locals>.<lambda>R   r"   r#   c                 ó   • g r   r   r   s    r   r    rG   S   r"   r#   c                 ó   • g r   r   r   s    r   r    rG   T   r"   r#   NrA   r2   s        r   Ú test_removeObserverNotRegisteredÚ2LogPublisherTests.test_removeObserverNotRegisteredM   s]   € ô
 ”,¡Ó/ˆÜ”,¡Ó/ˆÜ”,¡Ó/ˆä  Ó(ˆ	Ø× Ñ  Ô$Ø×Ñ˜"˜¤3 y×';Ñ';Ó#<Õ=r#   c                 óN  • [        SSS9n/ n/ n/ n[        [        UR                  5      n[        [        UR                  5      n[        [        UR                  5      n[	        XVU5      nU" U5        U R                  X5        U R                  X5        U R                  X5        g)z&
L{LogPublisher} calls its observers.
é   r   ©ÚfooÚbarN)Údictr   r   Úappendr   ÚassertIn)	r   ÚeventÚevents1Úevents2Úevents3r(   r)   r3   r   s	            r   Útest_fanOutÚLogPublisherTests.test_fanOutZ   s‡   € ô ˜ Ñ"ˆà"$ˆØ"$ˆØ"$ˆä”, §¡Ó/ˆÜ”, §¡Ó/ˆÜ”, §¡Ó/ˆä  ¨Ó,ˆ	Ù�%ÔØ�‰�eÔ%Ø�‰�eÔ%Ø�‰�eÕ%r#   c                 óê  ^^• [        SSS9n[        S5      m/ m[        [        5      S[        SS4UU4S jj5       n/ n[        U[        [        UR                  5      5      nU" U5        U R                  UT5        U Vs/ s H  nS	U;   d  M  US	   PM     nnU R                  [        U5      S5        U R                  US
   R                  T5        U R                  [        T5      S5        gs  snf )ze
Observer raises an exception during fan out: a failure is logged, but
not re-raised.  Life goes on.
rM   r   rN   úARGH! EVIL DEATH!rT   ÚreturnNc                 óH   >• T(       + nTR                  U 5        U(       a  Teg r   )rR   )rT   ÚshouldRaiseÚeventsÚ	exceptions     €€r   ÚobserverÚ7LogPublisherTests.test_observerRaises.<locals>.observerx   s#   ø€ à$œ*ˆKØ�M‰M˜%Ô ÞØ�ð r#   Úlog_failurer   )rQ   ÚRuntimeErrorr   r   r   r   r   rR   rS   r%   ÚlenÚassertIsÚvalue)	r   rT   ra   Ú	collectorr   r   Úerrorsr_   r`   s	          @@r   Útest_observerRaisesÚ%LogPublisherTests.test_observerRaisesn   sç   ù€ ô
 ˜ Ñ"ˆÜ Ð!4Ó5ˆ	à!#ˆä	”\Ó	"ð	 œHð 	 ¨÷ 	 ó 
#ð	 ð %'ˆ	ä  ¬4´¸i×>NÑ>NÓ+OÓPˆ	Ù�%Ôð 	�‰�e˜VÔ$ñ -6ÓLªI q¸È!Ñ9KÓ"�!�MÔ"©IˆÐLØ×Ñœ˜V› aÔ(Ø�‰�f˜Q‘i—o‘o yÔ1à×Ñœ˜V› aÕ(ùò	 Ms   Â
C0Â	C0c                 óÐ   ^• [        SSS9n[        S5      m[        [        5      S[        SS4S j5       n " U4S	 jS
[
        5      n[        U5      nU" 5       Ul        U" U5        g)z¢
Observer raises an exception during fan out and the publisher's Logger
pukes when the failure is reported.  The exception does not propagate
back to the caller.
rM   r   rN   r[   rT   r\   Nc                 ó   • [        S5      e)Nz	Sad panda)rd   )rT   s    r   ra   ÚGLogPublisherTests.test_observerRaisesAndLoggerHatesMe.<locals>.observer—   s   € ä˜{Ó+Ð+r#   c                   ó2   >• \ rS rSrS\S\SS4U 4S jjrSrg)ÚILogPublisherTests.test_observerRaisesAndLoggerHatesMe.<locals>.GurkLoggeré›   ÚargsÚkwargsr\   Nc                 ó   >• Ter   r   )r   rr   rs   r`   s      €r   ÚfailureÚQLogPublisherTests.test_observerRaisesAndLoggerHatesMe.<locals>.GurkLogger.failureœ   s   ø€ Ø�r#   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r9   ru   Ú__static_attributes__)r`   s   €r   Ú
GurkLoggerrp   ›   s"   ø† ð  Vð  °vð  À$÷  ò  r#   r|   )rQ   rd   r   r   r   r   r   Úlog)r   rT   ra   r|   r   r`   s        @r   Ú#test_observerRaisesAndLoggerHatesMeÚ5LogPublisherTests.test_observerRaisesAndLoggerHatesMeŽ   sj   ø€ ô ˜ Ñ"ˆÜ Ð!4Ó5ˆ	ä	”\Ó	"ð	,œHð 	,¨ó 	,ó 
#ð	,÷	 œô 	 ô ! Ó*ˆ	Ù"›ˆ	ŒÙ�%Õr#   c                 ó.  ^• [        SS/ S9n0 m[        [        5      S[        SS4U4S jj5       n[        [        5      S[        SS4U4S jj5       n[	        X#5      nU" U5        U R                  TS   XB445        U R                  TS   XB4XC445        g)	z1
Tracing keeps track of forwarding to observers.
rM   r   )rO   rP   Ú	log_tracer   r\   Nc           
      ó†   >• TR                  S[        [        [        [        [        4      [        U S   5      5      5        g )NrM   r�   ©Ú
setdefaultr   r   r   r   Útuple©r   Útracess    €r   r(   Ú(LogPublisherTests.test_trace.<locals>.o1°   ó5   ø€ à×ÑØ”4œœe¤F¬LÐ$8Ñ9Ñ:¼EÀ!ÀKÁ.Ó<QÓRõr#   c           
      ó†   >• TR                  S[        [        [        [        [        4      [        U S   5      5      5        g )Nr   r�   rƒ   r†   s    €r   r)   Ú(LogPublisherTests.test_trace.<locals>.o2¶   r‰   r#   )rQ   r   r   r   r   r%   )r   rT   r(   r)   r   r‡   s        @r   Ú
test_traceÚLogPublisherTests.test_trace¥   s°   ø€ ô ˜ ¨RÑ0ˆà@Bˆô
 
”\Ó	"ð	”(ð 	˜tö 	ó 
#ð	ô
 
”\Ó	"ð	”(ð 	˜tö 	ó 
#ð	ô
 ! Ó(ˆ	Ù�%Ôà×Ñ˜ ™ i _Ð$6Ô7Ø×Ñ˜ ™ i _°y°oÐ$FÕGr#   r   )r\   N)rw   rx   ry   rz   Ú__doc__r   r*   r4   r:   rC   rJ   rX   rj   r~   rŒ   r{   r   r#   r   r   r      s=   † ñôô>ô
BôFô
>ô>ô&ô()ô@÷.Hr#   r   N)rŽ   Útypingr   r   r   r   Úzope.interfacer   Úzope.interface.exceptionsr   Úzope.interface.verifyr	   Útwisted.trialr
   Ú_interfacesr   r   Ú_loggerr   Ú	_observerr   ÚTestCaser   r   r#   r   Ú<module>r˜      s=   ðñ÷ +Ó *å &Ý @Ý .å "ß 0Ý Ý $ôlH˜×)Ñ)õ lHr#   