Ë
    êmxiÐ"  ã                   ó.  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
mZ d dlmZmZmZ d dlmZ d dlmZ e j(                  d„ «       Z G d„ dej,                  «      Z G d	„ d
ej,                  «      Z G d„ dej,                  «      Zy)é    N)Úutf8)ÚLogFormatterÚdefine_logging_optionsÚenable_pretty_logging)ÚOptionParser)Úbasestring_typec               #   óœ   K  — t        j                  «       5  t        j                  dt        ¬«       d –— d d d «       y # 1 sw Y   y xY w­w)NÚignore)Úcategory)ÚwarningsÚcatch_warningsÚsimplefilterÚBytesWarning© ó    úL/home/htdocs/ttos/venv/lib/python3.12/site-packages/tornado/test/log_test.pyÚignore_bytes_warningr       s9   è ø€ ä	×	 Ñ	 Ó	"ñ Ü×Ñ˜h´Õ>Û÷÷ ñ üs   ‚A— A ·	AÁ A	ÁAc                   óf   — e Zd Z ej                  d«      Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd„ Zd	„ Zd
„ Zy)ÚLogFormatterTestsD   (?s)\[E [0-9]{6} [0-9]{2}:[0-9]{2}:[0-9]{2} log_test:[0-9]+\] (.*)c                 óD  — t        d¬«      | _        t        j                  di| j                  _        d| j                  _        t        j                  d«      | _        d| j                  _        t        j                  «       | _        t        j                  j                  | j                  d«      | _        | j!                  | j                  «      | _        | j"                  j%                  | j                  «       | j                  j'                  | j"                  «       y )NF)Úcolorúúr   zlog.out)r   Ú	formatterÚloggingÚERRORÚ_colorsÚ_normalÚLoggerÚloggerÚ	propagateÚtempfileÚmkdtempÚtempdirÚosÚpathÚjoinÚfilenameÚmake_handlerÚhandlerÚsetFormatterÚ
addHandler©Úselfs    r   ÚsetUpzLogFormatterTest.setUp.   sº   € Ü%¨EÔ2ˆŒô
 #*§-¡-°Ð!:ˆ�‰ÔØ!)ˆ�‰Ôä—n‘nÐ%7Ó8ˆŒØ %ˆ�‰ÔÜ×'Ñ'Ó)ˆŒÜŸ™Ÿ™ T§\¡\°9Ó=ˆŒØ×(Ñ(¨¯©Ó7ˆŒØ�‰×!Ñ! $§.¡.Ô1Ø�‰×Ñ˜tŸ|™|Õ,r   c                 ó´   — | j                   j                  «        t        j                  | j                  «       t        j
                  | j                  «       y ©N)r*   Úcloser%   Úunlinkr(   Úrmdirr$   r-   s    r   ÚtearDownzLogFormatterTest.tearDown?   s2   € Ø�‰×ÑÔÜ
�	‰	�$—-‘-Ô Ü
�‰�—‘Õr   c                 ó0   — t        j                  |d¬«      S )Núutf-8©Úencoding)r   ÚFileHandler)r.   r(   s     r   r)   zLogFormatterTest.make_handlerD   s   € Ü×"Ñ" 8°gÔ>Ð>r   c                 ó  — t        | j                  d«      5 }|j                  «       j                  «       }t        j
                  j                  |«      }|r|j                  d«      cd d d «       S t        d|z  «      ‚# 1 sw Y   y xY w)NÚrbé   zoutput didn't match regex: %r)	Úopenr(   ÚreadÚstripr   ÚLINE_REÚmatchÚgroupÚ	Exception)r.   ÚfÚlineÚms       r   Ú
get_outputzLogFormatterTest.get_outputG   sz   € Ü�$—-‘- Ó&ð 	H¨!Ø—6‘6“8—>‘>Ó#ˆDÜ ×(Ñ(×.Ñ.¨tÓ4ˆAÙØ—w‘w˜q“z÷		Hñ 	Hô  Ð ?À$Ñ FÓGÐG÷	Hð 	Hús   —AA?Á1A?Á?Bc                 óz   — | j                   j                  d«       | j                  | j                  «       d«       y )NÚfoos   foo)r    ÚerrorÚassertEqualrH   r-   s    r   Útest_basic_loggingz#LogFormatterTest.test_basic_loggingP   s+   € Ø�‰×Ñ˜%Ô Ø×Ñ˜Ÿ™Ó*¨FÕ3r   c           	      óÜ   — t        «       5  | j                  j                  d«       | j                  | j	                  «       t        t        d«      «      «       d d d «       y # 1 sw Y   y xY w)Nó   é)r   r    rK   rL   rH   r   Úreprr-   s    r   Útest_bytes_loggingz#LogFormatterTest.test_bytes_loggingT   sS   € Ü!Ó#ñ 	Eà�K‰K×Ñ˜gÔ&Ø×Ñ˜TŸ_™_Ó.´´T¸'³]Ó0CÔD÷	E÷ 	Eñ 	Eús   ‹AA"Á"A+c           
      ó†  — t        «       5  | j                  j                  dj                  «       «       d d d «       t	        t
        t        «      r*| j                  | j                  «       t        d«      «       y | j                  | j                  «       t        t        t        d«      «      «      «       y # 1 sw Y   ŒƒxY w©Nõ   Ã©)r   r    rK   ÚencodeÚ
issubclassÚbytesr   rL   rH   r   rP   r-   s    r   Útest_utf8_loggingz"LogFormatterTest.test_utf8_loggingZ   s„   € Ü!Ó#ñ 	1Ø�K‰K×Ñ˜hŸo™oÓ/Ô0÷	1ä”eœ_Ô-ð ×Ñ˜TŸ_™_Ó.´°X³Õ?ð
 ×Ñ˜TŸ_™_Ó.´´T¼$¸x».Ó5IÓ0JÕK÷	1ð 	1ús   ‹*B7Â7C c                 óØ   — 	 t        d«      ‚# t         $ r | j                  j                  d«       Y nw xY w| j                  «       }| j	                  |d«       | j                  d|«       y )NrO   zcaught exceptions   Exception.*\\xe9s   \n)rD   r    Ú	exceptionrH   ÚassertRegexÚassertNotIn)r.   Úoutputs     r   Útest_bytes_exception_loggingz-LogFormatterTest.test_bytes_exception_loggingg   sc   € ð	6Ü˜GÓ$Ð$øÜò 	6Ø�K‰K×!Ñ!Ð"4Ö5ð	6úð —‘Ó"ˆØ×Ñ˜Ð!5Ô6à×Ñ˜ Õ(s   ‚ �$4³4c                 óŒ   — | j                   j                  d«       | j                  | j                  «       t	        d«      «       y rS   )r    rK   rL   rH   r   r-   s    r   Útest_unicode_loggingz%LogFormatterTest.test_unicode_loggings   s/   € Ø�‰×Ñ˜(Ô#Ø×Ñ˜Ÿ™Ó*¬D°«NÕ;r   N)Ú__name__Ú
__module__Ú__qualname__ÚreÚcompilerA   r/   r5   r)   rH   rM   rQ   rX   r^   r`   r   r   r   r   r   '   sG   „ ð ˆb�j‰jØWó€Gò-ò"ò
?òHò4òEòLò
)ó<r   r   c                   ó0   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zˆ xZS )ÚEnablePrettyLoggingTestc                 óÀ   •— t         ‰| �  «        t        «       | _        t	        | j                  «       t        j                  d«      | _        d| j                  _        y )Nz-tornado.test.log_test.EnablePrettyLoggingTestF)	Úsuperr/   r   Úoptionsr   r   r   r    r!   )r.   Ú	__class__s    €r   r/   zEnablePrettyLoggingTest.setUpy   s>   ø€ Ü‰‰ŒÜ#“~ˆŒÜ˜tŸ|™|Ô,Ü—n‘nÐ%TÓUˆŒØ %ˆ�‰Õr   c                 ó|  — t        j                  «       }	 |dz   | j                  _        t	        | j                  | j
                  ¬«       | j                  dt        | j
                  j                  «      «       | j
                  j                  d«       | j
                  j                  d   j                  «        t        j                  |dz   «      }| j                  dt        |«      «       t        |d   d¬«      5 }| j                  |j                  «       d	«       d d d «       | j
                  j                  D ]"  }|j                  «        |j                  «        Œ$ t        j                  |dz   «      D ]  }t!        j"                  |«       Œ t!        j$                  |«       y # 1 sw Y   ŒŒxY w# | j
                  j                  D ]"  }|j                  «        |j                  «        Œ$ t        j                  |dz   «      D ]  }t!        j"                  |«       Œ t!        j$                  |«       w xY w)
Nú	/test_log©rj   r    r=   Úhellor   ú
/test_log*r7   r8   ú^\[E [^]]*\] hello$)r"   r#   rj   Úlog_file_prefixr   r    rL   ÚlenÚhandlersrK   ÚflushÚglobr>   r[   r?   r2   r%   r3   r4   ©r.   ÚtmpdirÚ	filenamesrE   r*   r(   s         r   Útest_log_filez%EnablePrettyLoggingTest.test_log_file€   s´  € Ü×!Ñ!Ó#ˆð	Ø+1°KÑ+?ˆD�L‰LÔ(Ü!¨$¯,©,¸t¿{¹{ÕKØ×Ñ˜Q¤ D§K¡K×$8Ñ$8Ó 9Ô:Ø�K‰K×Ñ˜gÔ&Ø�K‰K× Ñ  Ñ#×)Ñ)Ô+ÜŸ	™	 &¨<Ñ"7Ó8ˆIØ×Ñ˜Q¤ I£Ô/Ü�i ‘l¨WÔ5ð C¸Ø× Ñ  §¡£Ð+AÔB÷Cð  Ÿ;™;×/Ñ/ò  �Ø—‘”Ø—‘•ð ô !ŸI™I f¨|Ñ&;Ó<ò $�Ü—	‘	˜(Õ#ð$ä�H‰H�VÕ÷Cð Cûð  Ÿ;™;×/Ñ/ò  �Ø—‘”Ø—‘•ð ô !ŸI™I f¨|Ñ&;Ó<ò $�Ü—	‘	˜(Õ#ð$ä�H‰H�VÕús%   –C)F7 Ã?!F+Ä F7 Æ+F4Æ0F7 Æ7BH;c                 ó@  — t        j                  «       }	 |dz   | j                  _        d| j                  _        t        | j                  | j                  ¬«       | j                  j                  d«       | j                  j                  d   j                  «        t        j                  |dz   «      }| j                  dt        |«      «       t        |d   d¬	«      5 }| j                  |j                  «       d
«       d d d «       | j                  j                  D ]"  }|j                  «        |j!                  «        Œ$ t        j                  |dz   «      D ]  }t#        j$                  |«       Œ t#        j&                  |«       y # 1 sw Y   ŒŒxY w# | j                  j                  D ]"  }|j                  «        |j!                  «        Œ$ t        j                  |dz   «      D ]  }t#        j$                  |«       Œ t#        j&                  |«       w xY w)Nrm   Útimern   ro   r   rp   r=   r7   r8   rq   )r"   r#   rj   rr   Úlog_rotate_moder   r    rK   rt   ru   rv   rL   rs   r>   r[   r?   r2   r%   r3   r4   rw   s         r   Ú!test_log_file_with_timed_rotatingz9EnablePrettyLoggingTest.test_log_file_with_timed_rotating”   s¡  € Ü×!Ñ!Ó#ˆð	Ø+1°KÑ+?ˆD�L‰LÔ(Ø+1ˆD�L‰LÔ(Ü!¨$¯,©,¸t¿{¹{ÕKØ�K‰K×Ñ˜gÔ&Ø�K‰K× Ñ  Ñ#×)Ñ)Ô+ÜŸ	™	 &¨<Ñ"7Ó8ˆIØ×Ñ˜Q¤ I£Ô/Ü�i ‘l¨WÔ5ð C¸Ø× Ñ  §¡£Ð+AÔB÷Cð  Ÿ;™;×/Ñ/ò  �Ø—‘”Ø—‘•ð ô !ŸI™I f¨|Ñ&;Ó<ò $�Ü—	‘	˜(Õ#ð$ä�H‰H�VÕ÷Cð Cûð  Ÿ;™;×/Ñ/ò  �Ø—‘”Ø—‘•ð ô !ŸI™I f¨|Ñ&;Ó<ò $�Ü—	‘	˜(Õ#ð$ä�H‰H�VÕús%   –CF Ã!!FÄF ÆFÆF ÆBHc                 ó¢  — 	 d| j                   _        d| j                   _        | j                  t        t
        | j                   | j                  ¬«       | j                  j                  D ]"  }|j                  «        |j                  «        Œ$ y # | j                  j                  D ]"  }|j                  «        |j                  «        Œ$ w xY w)NÚ	some_pathÚ
wrong_modern   )
rj   rr   r}   ÚassertRaisesÚ
ValueErrorr   r    rt   ru   r2   )r.   r*   s     r   Útest_wrong_rotate_mode_valuez4EnablePrettyLoggingTest.test_wrong_rotate_mode_value¨   sŸ   € ð	 Ø+6ˆD�L‰LÔ(Ø+7ˆD�L‰LÔ(Ø×ÑÜÜ%ØŸ™Ø—{‘{ð	 ô ð  Ÿ;™;×/Ñ/ò  �Ø—‘”Ø—‘•ñ ø˜4Ÿ;™;×/Ñ/ò  �Ø—‘”Ø—‘•ñ ús   ‚AB Â=C)ra   rb   rc   r/   rz   r~   r„   Ú__classcell__)rk   s   @r   rg   rg   x   s   ø„ ô&òò(ö( r   rg   c                   óB   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zy)ÚLoggingOptionTestz?Test the ability to enable and disable Tornado's logging hooks.Nc                 ó8  — d}d}dj                  |||g«      }t        j                  t        j                  d|g|xs g z   t        j
                  t        j                  ¬«      }|j                  «       \  }}| j                  |j                  dd|z  «       d|v S )	Nz7from tornado.options import options, parse_command_linez%import logging; logging.info("hello")ú;z-c)ÚstdoutÚstderrr   zprocess failed: %rs   hello)
r'   Ú
subprocessÚPopenÚsysÚ
executableÚPIPEÚSTDOUTÚcommunicaterL   Ú
returncode)	r.   Ú	statementÚargsÚIMPORTÚLOG_INFOÚprogramÚprocrŠ   r‹   s	            r   Úlogs_presentzLoggingOptionTest.logs_present»   s–   € ð KˆØ:ˆØ—(‘(˜F I¨xÐ8Ó9ˆÜ×ÑÜ�^‰^˜T 7Ð+¨tªz°rÑ:Ü—?‘?Ü×$Ñ$ô
ˆð
 ×)Ñ)Ó+‰ˆ�Ø×Ñ˜Ÿ™¨!Ð-AÀFÑ-JÔKØ˜6Ð!Ð!r   c                 óD   — | j                  | j                  d«      «       y )NÚpass©ÚassertFalserš   r-   s    r   Útest_defaultzLoggingOptionTest.test_defaultÍ   s   € Ø×Ñ˜×*Ñ*¨6Ó2Õ3r   c                 óD   — | j                  | j                  d«      «       y )Núparse_command_line()©Ú
assertTruerš   r-   s    r   Útest_tornado_defaultz&LoggingOptionTest.test_tornado_defaultÐ   s   € Ø�‰˜×)Ñ)Ð*@ÓAÕBr   c                 óH   — | j                  | j                  ddg«      «       y )Nr¡   z--logging=noner�   r-   s    r   Útest_disable_command_linez+LoggingOptionTest.test_disable_command_lineÓ   ó"   € Ø×Ñ˜×*Ñ*Ð+AÐDTÐCUÓVÕWr   c                 óH   — | j                  | j                  ddg«      «       y )Nr¡   z--logging=Noner�   r-   s    r   Ú*test_disable_command_line_case_insensitivez<LoggingOptionTest.test_disable_command_line_case_insensitiveÖ   r§   r   c                 óD   — | j                  | j                  d«      «       y )Nz.options.logging = "none"; parse_command_line()r�   r-   s    r   Útest_disable_code_stringz*LoggingOptionTest.test_disable_code_stringÙ   s   € Ø×ÑØ×ÑÐNÓOõ	
r   c                 óD   — | j                  | j                  d«      «       y )Nú,options.logging = None; parse_command_line()r�   r-   s    r   Útest_disable_code_nonez(LoggingOptionTest.test_disable_code_noneÞ   s   € Ø×ÑØ×ÑÐLÓMõ	
r   c                 óH   — | j                  | j                  ddg«      «       y )Nr­   z--logging=infor¢   r-   s    r   Útest_disable_overridez'LoggingOptionTest.test_disable_overrideã   s%   € à�‰Ø×ÑØ>ÐAQÐ@Róõ	
r   r1   )ra   rb   rc   Ú__doc__rš   rŸ   r¤   r¦   r©   r«   r®   r°   r   r   r   r‡   r‡   ¸   s0   „ ÙIó"ò$4òCòXòXò
ò

ó

r   r‡   )Ú
contextlibrv   r   r%   rd   rŒ   rŽ   r"   Úunittestr   Útornado.escaper   Útornado.logr   r   r   Útornado.optionsr   Útornado.utilr   Úcontextmanagerr   ÚTestCaser   rg   r‡   r   r   r   ú<module>rº      sˆ   ðó Û Û Û 	Û 	Û Û 
Û Û Û å ß SÑ SÝ (Ý (ð ×Ññó ðôN<�x×(Ñ(ô N<ôb= ˜h×/Ñ/ô = ô@1
˜×)Ñ)õ 1
r   