Ë
    oj-  ã                   óf   — d dl mZ d dlmZ 	 d dlZeZd dlmZ  G d„ de«      Z	y# e$ r dZY Œw xY w)é    )ÚFailure)ÚTestCaseN)Úsyslogc                   ód   — e Zd ZdZdZe€dZd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚSyslogObserverTestszS
    Tests for L{SyslogObserver} which sends Twisted log events to the syslog.
    Nz(syslog is not supported on this platformc                 óä   — | j                  t        j                  d| j                  «       | j                  t        j                  d| j                  «       t        j                  d«      | _        y )NÚopenlogr   r   )Úpatchr   ÚSyslogObserverr	   Úobserver©Úselfs    úA/usr/lib/python3/dist-packages/twisted/python/test/test_syslog.pyÚsetUpzSyslogObserverTests.setUp   sI   € Ø�
‰
”6×(Ñ(¨)°T·\±\ÔBØ�
‰
”6×(Ñ(¨(°D·K±KÔ@Ü×-Ñ-Ð.CÓDˆ�ó    c                 ó&   — |||f| _         g | _        y ©N)Ú	logOpenedÚevents)r   ÚprefixÚoptionsÚfacilitys       r   r	   zSyslogObserverTests.openlog   s   € Ø  '¨8Ð4ˆŒØˆ�r   c                 ó>   — | j                   j                  ||f«       y r   )r   Úappend)r   r   Úmessages      r   r   zSyslogObserverTests.syslog#   s   € Ø�‰×Ñ˜G WÐ-Õ.r   c                 óz   — | j                   j                  ddddœ«       | j                  | j                  g «       y)zm
        L{SyslogObserver.emit} ignores events with an empty value for the
        C{'message'} key.
        © Fú-©r   ÚisErrorÚsystemN)r   ÚemitÚassertEqualr   r   s    r   Útest_emitWithoutMessagez+SyslogObserverTests.test_emitWithoutMessage&   s1   € ð
 	�‰×Ñ r°eÀsÑKÔLØ×Ñ˜Ÿ™ bÕ)r   c                 óº   — | j                   j                  dddt        j                  dœ«       | j	                  | j
                  t        j                  dfg«       y)ú¢
        L{SyslogObserver.emit} uses the value of the C{'syslogPriority'} as the
        syslog priority, if that key is present in the event dictionary.
        ©zhello, worldFr   )r   r    r!   ÚsyslogPriorityú[-] hello, worldN)r   r"   Ú	stdsyslogÚ	LOG_DEBUGr#   r   r   s    r   Útest_emitCustomPriorityz+SyslogObserverTests.test_emitCustomPriority.   sR   € ð
 	�‰×Ñà,Ø ØÜ"+×"5Ñ"5ñ	ô	
ð 	×Ñ˜Ÿ™¬	×(;Ñ(;Ð=OÐ'PÐ&QÕRr   c           
      óÂ   — | j                   j                  dddt        t        d«      «      dœ«       | j	                  | j
                  t        j                  dfg«       y)zd
        L{SyslogObserver.emit} uses C{LOG_ALERT} if the event represents an
        error.
        r'   Tr   Úfoo)r   r    r!   Úfailurer)   N)r   r"   r   Ú	Exceptionr#   r   r*   Ú	LOG_ALERTr   s    r   Útest_emitErrorPriorityz*SyslogObserverTests.test_emitErrorPriority=   sV   € ð
 	�‰×Ñà,ØØÜ"¤9¨UÓ#3Ó4ñ	ô	
ð 	×Ñ˜Ÿ™¬	×(;Ñ(;Ð=OÐ'PÐ&QÕRr   c                 óà   — | j                   j                  dddt        j                  t	        t        d«      «      dœ«       | j                  | j                  t        j                  dfg«       y)z£
        L{SyslogObserver.emit} uses the value of the C{'syslogPriority'} key if
        it is specified even if the event dictionary represents an error.
        r'   Tr   Úbar)r   r    r!   r(   r/   r)   N)r   r"   r*   Ú
LOG_NOTICEr   r0   r#   r   r   s    r   Ú%test_emitCustomPriorityOverridesErrorz9SyslogObserverTests.test_emitCustomPriorityOverridesErrorL   s_   € ð
 	�‰×Ñà,ØØÜ"+×"6Ñ"6Ü"¤9¨UÓ#3Ó4ñô	
ð 	×Ñ˜Ÿ™¬	×(<Ñ(<Ð>PÐ'QÐ&RÕSr   c                 óÜ   — | j                   j                  dddt        j                  dœ«       | j	                  | j
                  t        j                  t        j                  z  dfg«       y)r&   r'   Fr   )r   r    r!   ÚsyslogFacilityr)   N)r   r"   r*   ÚLOG_CRONr#   r   ÚLOG_INFOr   s    r   Útest_emitCustomFacilityz+SyslogObserverTests.test_emitCustomFacility\   s`   € ð
 	�‰×Ñà,Ø ØÜ"+×"4Ñ"4ñ	ô	
ð 	×ÑØ�K‰Kœ9×-Ñ-´	×0BÑ0BÑBÐDVÐWÐXõ	
r   c                 óœ   — | j                   j                  ddddœ«       | j                  | j                  t        j
                  dfg«       y)zt
        L{SyslogObserver.emit} uses the value of the C{'system'} key to prefix
        the logged message.
        r'   FÚnonDefaultSystemr   z[nonDefaultSystem] hello, worldN©r   r"   r#   r   r*   r:   r   s    r   Útest_emitCustomSystemz)SyslogObserverTests.test_emitCustomSystemm   sL   € ð
 	�‰×Ñà,Ø Ø,ñô	
ð 	×ÑØ�K‰Kœ9×-Ñ-Ð/PÐQÐRõ	
r   c                 óœ   — | j                   j                  ddddœ«       | j                  | j                  t        j
                  dfg«       y)z‹
        L{SyslogObserver.emit} logs the value of the C{'message'} key of the
        event dictionary it is passed to the syslog.
        r'   Fr   r   r)   Nr>   r   s    r   Útest_emitMessagez$SyslogObserverTests.test_emitMessage}   sE   € ð
 	�‰×ÑØ)°eÀsÑKô	
ð 	×Ñ˜Ÿ™¬	×(:Ñ(:Ð<NÐ'OÐ&PÕQr   c                 ó¾   — | j                   j                  ddddœ«       | j                  | j                  t        j
                  dft        j
                  dfg«       y)zW
        Each line of a multiline message is emitted separately to the syslog.
        )zhello,
worldFr   r   ú
[-] hello,ú
[-] 	worldNr>   r   s    r   Útest_emitMultilineMessagez-SyslogObserverTests.test_emitMultilineMessage‡   sU   € ð 	�‰×ÑØ*°uÈÑLô	
ð 	×ÑØ�K‰KÜ× Ñ  ,Ð/´)×2DÑ2DÀmÐ1TÐUõ	
r   c                 ó¾   — | j                   j                  ddddœ«       | j                  | j                  t        j
                  dft        j
                  dfg«       y)zw
        Trailing empty lines of a multiline message are omitted from the
        messages sent to the syslog.
        )zhello,
world

Fr   r   rC   rD   Nr>   r   s    r   Ú!test_emitStripsTrailingEmptyLinesz5SyslogObserverTests.test_emitStripsTrailingEmptyLines“   sU   € ð
 	�‰×ÑØ.¸5ÈCÑPô	
ð 	×ÑØ�K‰KÜ× Ñ  ,Ð/´)×2DÑ2DÀmÐ1TÐUõ	
r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r*   Úskipr   r	   r   r$   r,   r2   r6   r;   r?   rA   rE   rG   r   r   r   r   r      sZ   „ ñð €FàÐØ9ˆòEò
ò/ò*òSòSòTò 
ò"
ò Rò

ó
r   r   )
Útwisted.python.failurer   Útwisted.trial.unittestr   r   Ú
_stdsyslogr*   Útwisted.pythonÚImportErrorr   r   r   r   ú<module>rR      sC   ðõ +Ý +ð&Ûð €IÝ%ôN
˜(õ N
øð ò Ø‚Iðús   Ž& ¦0¯0