403Webshell
Server IP : 118.27.122.248  /  Your IP : 216.73.216.15
Web Server : Apache
System : Linux web0264.sh.tyo1 4.18.0-553.79.1.lve.el7h.x86_64 #1 SMP Wed Oct 15 16:34:46 UTC 2025 x86_64
User : c9415830 ( 11735)
PHP Version : 8.4.17
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/alt/python36/lib64/python3.6/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/alt/python36/lib64/python3.6/test/__pycache__/test_logging.cpython-36.opt-2.pyc
3

�
�^�j�,@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlmZddlmZddlZddlZddlZddlZddlZyTddlZddlZddlmZm Z ddl!Z!ddl"m#Z#m$Z$ddl%m&Z&m'Z'm(Z(m)Z)Wne*k
�rFdZYnXyddl+Z+ddl,Z,ddl-Z-Wn"e*k
�r�dZ+Z,Z-YnXyddl.Z.Wne*k
�r�YnXGdd�dej/�Z0Gd	d
�d
e0�Z1Gdd�de0�Z2d
Z3dZ4dZ5dZ6dZ7dZ8dZ9dZ:dZ;dZ<e=e<e3d�Z>e3de4de5de6de7de8de9de:de;d e<d!i
Z?Gd"d#�d#ej@�ZAGd$d%�d%ej@�ZBGd&d'�d'e0�ZCGd(d)�d)e0�ZDGd*d+�d+eE�ZFGd,d-�d-ejG�ZHGd.d/�d/e0�ZIe�r@Gd0d1�d1e!jJ�ZKGd2d3�d3eE�ZLGd4d5�d5eLe�ZMGd6d7�d7eLe(�ZNGd8d9�d9eLe&�ZOePed:��r@Gd;d<�d<eN�ZQGd=d>�d>eO�ZRejSed?�Gd@dA�dAe0��ZTGdBdC�dCe0�ZUGdDdE�dEejV�ZWGdFdG�dGe0�ZXejSed?�GdHdI�dIe0��ZYdJdK�ZZejSePed:�dL�ejSed?�GdMdN�dNeY���Z[ejSed?�GdOdP�dPe0��Z\ejSePed:�dL�ejSed?�GdQdR�dRe\���Z]ejSed?�GdSdT�dTe0��Z^ejSePed:�dL�ejSed?�GdUdV�dVe^���Z_ejSej`dW�ejSed?�GdXdY�dYe^���ZaejSed?�GdZd[�d[e0��ZbGd\d]�d]e0�ZcGd^d_�d_e0�ZdGd`da�dae0�Zed�dbdc�Zfddde�ZgGdfdg�dgejG�ZhGdhdi�die0�ZiGdjdk�dke0�ZjGdldm�dme0�ZkGdndo�doejl�ZmGdpdq�dqe0�ZnGdrds�dse0�ZoePejpdt��r�ddlqZqddulrmsZsGdvdw�dwe0�Ztejud�ZvGdxdy�dyejw�Zxex�ZyGdzd{�d{ej/�ZzGd|d}�d}ej{�Z|Gd~d�dej/�Z}Gd�d��d�e0�Z~Gd�d��d�e0�ZGd�d��d��Z�Gd�d��d�ej��Z�Gd�d��d�e0�Z�Gd�d��d�e0�Z�Gd�d��d�e0�Z�Gd�d��d�ej/�Z�Gd�d��d�ej/�Z�Gd�d��d�e0�Z�Gd�d��d�e0�Z�Gd�d��d�e��Z�Gd�d��d�e��Z�Gd�d��d�e��Z�d�d��Z�xHd�d�d�d�d�d�e�d�d�d��ffD](\Z�Z�e�e�fd�d��Z�e�e�d�e�e���qWejSe+d��Gd�d��d�e0��Z�Gd�d��d�ej/�Z�ej�d�d��d�d���Z�e�d�k�r�e��dS)��N)�assert_python_ok)�support)�
HTTPServer�BaseHTTPRequestHandler)�urlparse�parse_qs)�ThreadingUDPServer�DatagramRequestHandler�ThreadingTCPServer�StreamRequestHandlerc@s:eZdZdZdZdZdd�Zdd�Zd
d	d
�Zdd�Z	dS)�BaseTestz&%(name)s -> %(levelname)s: %(message)sz^([\w.]+) -> (\w+): (\d+)$rcCs�tj�jj}tj�zrtjj�|_tjdd�|_	|j�|_
}tjj�|_tj
j�|_i|_}x |D]}t||dd�||<qhWWdtj�Xtjd�|_tjd�|_tjd�|_|jj�|_tj�|_|jjtj�tj|j�|_tj|j�|_ |jj!|j �|jj"��r,|jj#|jj#}t$d|��|jj"��rT|jj#|jj#}t$d|��|jj%|j�|j&|jj"��|j&|jj"��dS)N�disabledu«×»uĿÖG�zUnexpected handlers: %s)'�logging�	getLogger�manager�
loggerDict�_acquireLock�	_handlers�copy�saved_handlers�_handlerList�saved_handler_list�
saved_loggers�_nameToLevel�saved_name_to_level�_levelToName�saved_level_to_name�
logger_states�getattr�_releaseLockZlogger1Zlogger2�root_loggerZgetEffectiveLevel�original_logging_level�io�StringIO�stream�setLevel�DEBUG�
StreamHandler�	root_hdlr�	Formatter�
log_formatZroot_formatter�setFormatter�hasHandlers�handlers�AssertionError�
addHandler�
assertTrue)�selfZlogger_dictrr�nameZhlist�r4�1/opt/alt/python36/lib64/python3.6/test_logging.py�setUpOs>



zBaseTest.setUpc
Cs|jj�|jj|j�x,|jjrD|jjd}|jj|�|j�qW|jj|j�tj	�z�tj
j�tj
j|j
�tjj�tjj|j�tjj�tjj|j�|jtjdd�<tj�jj}|j�|j|j�|j}x*|jD] }||dk	r�|||j|_q�WWdtj�XdS)Nr)r%�closer!�
removeHandlerr)r.r&r"rrr�clear�updaterrrrrrrrrrrrr
r )r2�hrrr3r4r4r5�tearDownws0




zBaseTest.tearDownNc	Cs�|p|j}tj|p|j�}|j�j�}|jt|�t|��xFt||�D]8\}}|j	|�}|sj|j
d|�|jt|j��|�qFW|j
�}|r�|j
d|�dS)Nz*Log line does not match expected pattern:
z'Remaining output at end of log stream:
)r%�re�compile�expected_log_pat�getvalue�
splitlines�assertEqual�len�zip�search�fail�tuple�groups�read)	r2Zexpected_valuesr%�patZactual_lines�actual�expected�match�sr4r4r5�assert_log_lines�s

zBaseTest.assert_log_linescCs|jd7_d|jS)N�z%d)�message_num)r2r4r4r5�next_message�szBaseTest.next_message)NN)
�__name__�
__module__�__qualname__r+r?rQr6r<rOrRr4r4r4r5rGs(
rc@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�BuiltinLevelsTestcCs4|j}tjd�}|jtj�tjtjd�i�}|jtj�tjd�}|jtj�|jtj	|��|j
|��|jtj	|��|j
|��|j|��|j|��|jtj	|��|j
|��|j|��|j|��|j
|��|j|��|j|��|j
|��|j
|��|jdddddddddddg�dS)N�ERR�INF�DEB�CRITICAL�1�ERROR�2�3�4�WARNING�5�INFO�6�7�8�9�10r'�11)rWrZr[)rWr\r])rXrZr^)rXr\r_)rXr`ra)rXrbrc)rYrZrd)rYr\re)rYr`rf)rYrbrg)rYr'rh)rRrrr&r\�
LoggerAdapterrbr'�logrZ�error�warning�info�debugrO)r2�mrWrXrYr4r4r5�	test_flat�sD

zBuiltinLevelsTest.test_flatcCs�|j}tjd�}|jtj�tjd�}|jtj�|jtj|��|j|��|j	|��|j
|��|j|��|jddg�dS)	NrX�INF.ERRrZr[r\r])rqrZr[)rqr\r])
rRrrr&rbr\rjrZrkrlrmrnrO)r2rorX�INF_ERRr4r4r5�test_nested_explicit�s

z&BuiltinLevelsTest.test_nested_explicitc	Cs�|j}tjd�}|jtj�tjd�}|jtj�tjd�}tjd�}tjd�}|jtj|��|j|��|j	|��|j
|��|jtj|��|j|��|j|��|j	|��|j
|��|j|��|jddddddg�dS)NrXzINF.ERR�	INF.UNDEF�
INF.ERR.UNDEF�UNDEFrZr[r\r]r`r^rbr_rarc)rtrZr[)rtr\r])rtr`r^)rtrbr_)rurZra)rur\rc)
rRrrr&rbr\rjrZrkrlrmrnrO)r2rorXrrZ	INF_UNDEFZ
INF_ERR_UNDEFrvr4r4r5�test_nested_inherited�s2




z'BuiltinLevelsTest.test_nested_inheritedcCs�|j}tjd�}tjd�}tjd�}|jtj�|jtj|��|j|��|jtj|��|j|��|j|��|j|��|j	d
ddd
g�dS)NrX�INF.BADPARENT.UNDEF�
INF.BADPARENTrZr[rbr]r^r_)rxrZr[)rxrbr])ryrZr^)ryrbr_)
rRrrr&rbrj�FATALrmrnrO)r2rorXZ
GRANDCHILDZCHILDr4r4r5�test_nested_with_virtual_parents 


z1BuiltinLevelsTest.test_nested_with_virtual_parentcCs,|jtjd�tj�|jtjtj�d�dS)Nrb)rBr�getLevelNamerb)r2r4r4r5�test_regression_223863sz'BuiltinLevelsTest.test_regression_22386cCstjd�}|j|tj�dS)Nrz)rr|rBrz)r2Zfatalr4r4r5�test_issue279358s
z!BuiltinLevelsTest.test_issue27935cCs`tjtjd�|jtjtjd�|jtjtj�d�|jtjtj�d�|jtjd�tj�dS)Nrrb�NOTSET)r�addLevelNamerb�
addCleanuprBr|r)r2r4r4r5�test_regression_29220<s
z'BuiltinLevelsTest.test_regression_29220N)
rSrTrUrprsrwr{r}r~r�r4r4r4r5rV�s/#rVc@s$eZdZdd�Zdd�Zdd�ZdS)�BasicFilterTestcCs�tjd�}|jjd}z||j|�tjd�}tjd�}tjd�}tjd�}|j|j��|j|j��|j|j��|j|j��|jd	d
g�Wd|j	|�XdS)N�	spam.eggsr�spam�spam.eggs.fishzspam.bakedbeansrbr]r^)r�rbr])r�rbr^)
r�Filterr!r.�	addFilterrrmrRrO�removeFilter)r2Zfilter_�handlerr��	spam_eggs�spam_eggs_fish�spam_bakedbeansr4r4r5�test_filterHs 





zBasicFilterTest.test_filtercCs�dd�}|jjd}z||j|�tjd�}tjd�}tjd�}tjd�}|j|j��|j|j��|j|j��|j|j��|jddg�Wd|j|�XdS)
NcSs&|jjd�}dj|dd��}|dkS)N�.�z	spam.eggs)r3�split�join)�record�parts�prefixr4r4r5�
filterfuncdsz8BasicFilterTest.test_callable_filter.<locals>.filterfuncrr��	spam.eggs�spam.eggs.fishzspam.bakedbeansrbr]r^)r�rbr])r�rbr^)	r!r.r�rrrmrRrOr�)r2r�r�r�r�r�r�r4r4r5�test_callable_filter`s 




z$BasicFilterTest.test_callable_filtercCs*tj�}tjddi�}|j|j|��dS)Nr3z	spam.eggs)rr��
makeLogRecordr1�filter)r2�f�rr4r4r5�test_empty_filter}sz!BasicFilterTest.test_empty_filterN)rSrTrUr�r�r�r4r4r4r5r�Dsr��x�w�v�u�t�s�r�q�p�orP�Silent�Taciturn�Terse�Effusive�Sociable�Verbose�	TalkativeZ	Garrulous�
Chatterbox�Boringc@seZdZdd�ZdS)�GarrulousFiltercCs
|jtkS)N)�levelno�	GARRULOUS)r2r�r4r4r5r��szGarrulousFilter.filterN)rSrTrUr�r4r4r4r5r��sr�c@seZdZdd�ZdS)�VerySpecificFiltercCs|jttgkS)N)r��SOCIABLE�TACITURN)r2r�r4r4r5r��szVerySpecificFilter.filterN)rSrTrUr�r4r4r4r5r��sr�c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�CustomLevelsAndFiltersTestz^[\w.]+ -> (\w+): (\d+)$cCs0tj|�x tj�D]\}}tj||�qWdS)N)rr6�my_logging_levels�itemsrr�)r2�k�vr4r4r5r6�s
z CustomLevelsAndFiltersTest.setUpcCs"xtD]}|j||j��qWdS)N)�LEVEL_RANGErjrR)r2�loggerZlvlr4r4r5�log_at_all_levels�s
z,CustomLevelsAndFiltersTest.log_at_all_levelscCs2|jjt�|j|j�|jd
dddddg�dS)Nr�rar�rcr�rdr�rer�rfr�rg)r�ra)r�rc)r�rd)r�re)r�rf)r�rg)r!r&�VERBOSEr�rO)r2r4r4r5�test_logger_filter�sz-CustomLevelsAndFiltersTest.test_logger_filterc
CsR|jjdjt�z$|j|j�|jdd
dddg�Wd|jjdjtj�XdS)Nrr�rcr�rdr�rer�rfr�rg)r�rc)r�rd)r�re)r�rf)r�rg)r!r.r&r�r�rOrr)r2r4r4r5�test_handler_filter�sz.CustomLevelsAndFiltersTest.test_handler_filtercCs�|jjd}d}t�}|j|�zj|j|j�dddddd d!d"d#g	}|j|�t�}|jj|�|j|j�|j|d$d%d&d'd(d)d*g�Wd|r�|jj|�|j|�XdS)+Nrr�r[r�r]r�r_r�rar�rcr�rdr�rer�rfr�rgrh�12�14�15�17�18�20)r�r[)r�r])r�r_)r�ra)r�rc)r�rd)r�re)r�rf)r�rg)r�rh)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r!r.r�r�r�rOr�r�)r2r�Zspecific_filterZgarrZfirst_linesr4r4r5�test_specific_filters�s<

z0CustomLevelsAndFiltersTest.test_specific_filtersN)	rSrTrUr?r6r�r�r�r�r4r4r4r5r��sr�c@sJeZdZdd�Zdd�Zdd�Zejej	dkd�ej
ed	�d
d���ZdS)
�HandlerTestcCsDtj�}d|_|j|jd�d|_|j|jd�|jt|jd�dS)NZgenericZanothergeneric)r�Handlerr3rB�assertRaises�NotImplementedError�emit)r2r;r4r4r5�	test_nameszHandlerTest.test_namec
Cstjdk�r`�x�dD]�}tj�\}}tj|�|s<tj|�tjj	|dd�}|r�|j
|j}}|j|d�|j|d�tj
ddi�}|j|�tj|�|jtjj|��|j|�|jtjj|��n|j|j
d�|j|jd�|j�|rtj|�qWtjdk�rd	}nd
}y4tjj|�}|j|j|j�|j|j�|j�Wntk
�r^YnXxHdD]@}	|	d
k�r�|jttjjdd|	�ntjjdd|	�}|j��qfWtjjd�}tj
i�}|j|j|��|j�tjjd�}|j|j|��|j�dS)N�linux�darwinTF)�delayrP�msgZTestz/var/run/syslogz/dev/log�GET�POST�PUT�	localhostz/logr)r�r�)TF���r�r�r�)r�r�r�)�sys�platform�tempfile�mkstemp�osr7�unlinkrr.�WatchedFileHandler�dev�inorBr��handle�assertFalse�path�existsr1�
SysLogHandlerZfacilityZLOG_USERZ
unixsocket�OSErrorr��
ValueError�HTTPHandlerZBufferingHandlerZshouldFlush)
r2Zexisting�fd�fnr;r�r�r�Zsockname�methodr4r4r5�test_builtin_handlerssZ







z!HandlerTest.test_builtin_handlerscCs�tj�\}}tj|�tj|�tj|�}tj|dfftj	j
|dfftj	j|dfff}tj
dkrv|tj	j|dfff7}x<|D]4\}}||�}|jtjj|��|j�tj|�q|WdS)N�w�ar;r�r�)r�r�)r�r�r�r7r��pathlibZPathr�FileHandlerr.�RotatingFileHandler�TimedRotatingFileHandlerr�r�r�r1r�r�)r2r�r�ZpfnZcases�cls�argsr;r4r4r5�test_path_objectsOs



zHandlerTest.test_path_objects�ntz/WatchedFileHandler not appropriate for Windows.z!Threading required for this test.cs2�fdd�}d}d}d�_d�_�x
dD�]}tjdd�\}}tj|�tj|||fd�}d|_|j	�t
jj||d	�}t
j
d
�}	|j|	�zrxlt|�D]`}
tjd�t
jdd
i�}ytj��_|j|�Wq�tk
r�td�j�jf��Yq�Xq�WWd|j�|j�tjj|��r(tj|�Xq(WdS)NcsZxTt|�D]H}ytj|�tj��_Wntk
r:YnXtjdtjdd��q
WdS)Ng����Mbp?r�)	�ranger�r��time�
deletion_timer��sleep�randomZrandint)ZfnameZtries�_)r2r4r5�remove_loopjs
z*HandlerTest.test_race.<locals>.remove_loopi�FTz.logztest_logging-3-)�targetr�)r�z'%(asctime)s: %(levelname)s: %(message)sg{�G�zt?r�ZtestingzDeleted at %s, opened at %s)FT)Zhandle_timer�r�r�r�r7�	threading�ThreadZdaemon�startrr.r�r*r,r�r�r�r�r��	Exception�printr�r�r�r�)r2r�Z	del_countZ	log_countr�r�r�Zremoverr;r�r�r�r4)r2r5�	test_racefs<	




zHandlerTest.test_raceN)
rSrTrUr�r�r��unittestZskipIfr�r3�
skipUnlessrrr4r4r4r5r�s
6r�c@seZdZdd�ZdS)�	BadStreamcCstd��dS)Nzdeliberate mistake)�RuntimeError)r2�datar4r4r5�write�szBadStream.writeN)rSrTrUrr4r4r4r5r	�sr	c@seZdZdd�ZdS)�TestStreamHandlercCs
||_dS)N)�error_record)r2r�r4r4r5�handleError�szTestStreamHandler.handleErrorN)rSrTrUrr4r4r4r5r
�sr
c@seZdZdd�ZdS)�StreamHandlerTestcCs�tt��}tji�}tj}z�|j|�|j|j|�tjt��}t	j
��$}|j|�d}|j||j��WdQRXdt_t	j
�� }|j|�|j
d|j��WdQRXWd|t_XdS)Nz"
RuntimeError: deliberate mistake
Fr)r
r	rr��raiseExceptionsr��assertIsrr(r�captured_stderr�assertInr@rB)r2r;r�Z	old_raise�stderrr�r4r4r5�test_error_handling�s 






z%StreamHandlerTest.test_error_handlingN)rSrTrUrr4r4r4r5r�src@s6eZdZdd�Zdd�Zdd�Zdd�Zdd
d�Zd	S)
�TestSMTPServercCs<tjj||d|dd�|jj�d|_||_d|_||_dS)NT)�mapZdecode_datarP)	�smtpd�
SMTPServer�__init__�socket�getsockname�port�_handler�_thread�
poll_interval)r2�addrr�r!�sockmapr4r4r5r�szTestSMTPServer.__init__cCs|j||||�dS)N)r)r2�peer�mailfrom�rcpttosrr4r4r5�process_message�s
zTestSMTPServer.process_messagecCs0tj|j|jfd�|_}|jd�|j�dS)N)rr�T)rr�
serve_foreverr!r �	setDaemonr)r2�tr4r4r5r�s
zTestSMTPServer.startcCs<ytj||jd�Wn"tk
r6|js0|jr2�YnXdS)N)r)�asyncoreZloop�_mapr�Z	connectedZ	accepting)r2r!r4r4r5r(�s
zTestSMTPServer.serve_foreverNcCs.|j�|jj|�tj|jdd�d|_dS)NT)rZ
ignore_all)r7r r�r+Z	close_allr,)r2�timeoutr4r4r5�stop�szTestSMTPServer.stop)N)rSrTrUrr'rr(r.r4r4r4r5r�s
	rcs6eZdZdd�Zdd�Z�fdd�Zd
dd	�Z�ZS)�ControlMixincCs d|_||_||_tj�|_dS)N)r r!rr�Event�ready)r2r�r!r4r4r5rszControlMixin.__init__cCs0tj|j|jfd�|_}|jd�|j�dS)N)rr�T)rrr(r!r r)r)r2r*r4r4r5rs
zControlMixin.startcs|jj�tt|�j|�dS)N)r1�set�superr/r()r2r!)�	__class__r4r5r('s
zControlMixin.serve_foreverNcCs:|j�|jdk	r$|jj|�d|_|j�|jj�dS)N)�shutdownr r��server_closer1r9)r2r-r4r4r5r./s
zControlMixin.stop)N)rSrTrUrrr(r.�
__classcell__r4r4)r4r5r/s	r/c@seZdZddd�Zdd�ZdS)	�TestHTTPServer��?FNcs<G��fdd�dt��tj||��tj|||�||_dS)Ncs2eZdZddd�Zdd�Z���fdd�Z�ZS)	z=TestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandlerNcSs|jd�r|jSt|��dS)NZdo_)�
startswith�process_request�AttributeError)r2r3�defaultr4r4r5�__getattr__Ks
zITestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.__getattr__cSs|jj|�dS)N)�serverr)r2r4r4r5r;PszMTestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.process_requestcs�rt�|�j|f|��dS)N)r3�log_message)r2�formatr�)�DelegatingHTTPRequestHandlerr4rjr4r5r@SszITestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.log_message)N)rSrTrUr>r;r@r7r4)rBrj)r4r5rBJs
rB)rrrr/�sslctx)r2r"r�r!rjrCr4)rBrjr5rHs
zTestHTTPServer.__init__cCsfy(|jj�\}}|jr&|jj|dd�}Wn4tk
r\}ztjjd|��WYdd}~XnX||fS)NT)Zserver_sidezGot an error:
%s
)rZacceptrCZwrap_socketr�r�rr)r2�sockr"�er4r4r5�get_request[szTestHTTPServer.get_request)r9FN)rSrTrUrrFr4r4r4r5r8=s
r8cs.eZdZdZdZddd�Z�fdd�Z�ZS)�
TestTCPServerT��?cCs2Gdd�dt�}tj||||�tj|||�dS)Nc@seZdZdd�ZdS)z;TestTCPServer.__init__.<locals>.DelegatingTCPRequestHandlercSs|jj|�dS)N)r?r)r2r4r4r5r�|szBTestTCPServer.__init__.<locals>.DelegatingTCPRequestHandler.handleN)rSrTrUr�r4r4r4r5�DelegatingTCPRequestHandlerzsrI)rr
rr/)r2r"r�r!�bind_and_activaterIr4r4r5rxs
zTestTCPServer.__init__cs"tt|�j�|jj�d|_dS)NrP)r3rG�server_bindrrr)r2)r4r4r5rK�szTestTCPServer.server_bind)rHT)rSrTrUZallow_reuse_address�_block_on_closerrKr7r4r4)r4r5rGfs

	rGcs6eZdZdZd	dd�Z�fdd�Z�fdd�Z�ZS)
�
TestUDPServerT��?cs<G�fdd�dt��tj||�|�tj|||�d|_dS)Ncs&eZdZdd�Z��fdd�Z�ZS)z;TestUDPServer.__init__.<locals>.DelegatingUDPRequestHandlercSs|jj|�dS)N)r?r)r2r4r4r5r��szBTestUDPServer.__init__.<locals>.DelegatingUDPRequestHandler.handlecsD|jj�}|r@yt�|�j�Wntk
r>|jjs:�YnXdS)N)Zwfiler@r3�finishr�r?�_closed)r2r)�DelegatingUDPRequestHandlerr4r4r5rO�s
zBTestUDPServer.__init__.<locals>.DelegatingUDPRequestHandler.finish)rSrTrUr�rOr7r4)rQ)r4r5rQ�srQF)r	rrr/rP)r2r"r�r!rJr4)rQr5r�szTestUDPServer.__init__cs"tt|�j�|jj�d|_dS)NrP)r3rMrKrrr)r2)r4r4r5rK�szTestUDPServer.server_bindcstt|�j�d|_dS)NT)r3rMr6rP)r2)r4r4r5r6�szTestUDPServer.server_close)rNT)rSrTrUrLrrKr6r7r4r4)r4r5rM�s

rM�AF_UNIXc@seZdZejZdS)�TestUnixStreamServerN)rSrTrUrrR�address_familyr4r4r4r5rS�srSc@seZdZejZdS)�TestUnixDatagramServerN)rSrTrUrrRrTr4r4r4r5rU�srUz!Threading required for this test.c@s eZdZdZdd�Zdd�ZdS)�SMTPHandlerTestgN@c
Cs
i}ttjdf|jd|�}|j�tj|jf}tjj|ddd|j	d�}|j
|jdg�g|_tj
ddi�}tj�|_|j|�|jj|j	�|j�|j|jj��|j
t|j�d	�|jd\}}}}	|j
|d�|j
|dg�|jd
|	�|j|	jd��|j�dS)Nrg����MbP?�meZyouZLog)r-r�u	Hello ✓rPz
Subject: Log
u

Hello ✓)rrZHOSTr'rrrr.ZSMTPHandler�TIMEOUTrBZtoaddrs�messagesr�rr0�handledr��waitr.r1Zis_setrCr�endswithr7)
r2r#r?r"r;r�r$r%r&rr4r4r5�
test_basic�s,


zSMTPHandlerTest.test_basiccGs|jj|�|jj�dS)N)rY�appendrZr2)r2r�r4r4r5r'�szSMTPHandlerTest.process_messageN)rSrTrUrXr]r'r4r4r4r5rV�srVc@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�MemoryHandlerTestz^[\w.]+ -> (\w+): (\d+)$cCsFtj|�tjjdtj|j�|_tjd�|_	d|j	_
|j	j|j�dS)N�
Zmemr)rr6rr.�
MemoryHandlerr`r)�mem_hdlrr�
mem_logger�	propagater0)r2r4r4r5r6�s

zMemoryHandlerTest.setUpcCs|jj�tj|�dS)N)rbr7rr<)r2r4r4r5r<�s
zMemoryHandlerTest.tearDowncCs�|jj|j��|jg�|jj|j��|jg�|jj|j��d
ddg}|j|�xndD]f}x td	�D]}|jj|j��qlW|j|�|jj|j��|d
d�t||d�D�}|j|�q^W|jj|j��|j|�dS)Nr'r[rbr]r`r^r���	cSsg|]}dt|�f�qS)r')�str)�.0�ir4r4r5�
<listcomp>
sz0MemoryHandlerTest.test_flush.<locals>.<listcomp>r`)r'r[)rbr])r`r^)r�re)rcrnrRrOrmrlr�)r2�lines�nrir4r4r5�
test_flush�s$




zMemoryHandlerTest.test_flushcCs�|jj|j��|jg�|jj|j��|jg�|jj|j�|jj�ddg}|j|�tj	j
dtj|jd�|_|jj
|j�|jj|j��|j|�|jj|j��|j|�|jj|j�|jj�|j|�dS)	Nr'r[rbr]r`F)r'r[)rbr])rcrnrRrOrmr8rbr7rr.rar`r)r0)r2rkr4r4r5�test_flush_on_closes(






z%MemoryHandlerTest.test_flush_on_closeN)rSrTrUr?r6r<rmrnr4r4r4r5r_�s
r_c@seZdZdd�ZdS)�ExceptionFormattercCsd|djS)Nz
Got a [%s]r)rS)r2Zeir4r4r5�formatException1sz"ExceptionFormatter.formatExceptionN)rSrTrUrpr4r4r4r5ro/sroc@s�eZdZejZdZdZdZdZej	dd�Z
ej	dd�Zd	ed
Zej	dd�Z
d
ZdZdZdZdd�Zdd�Zdd�Zefdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)S)*�ConfigFileTestz^(\w+) \+\+ (\w+)$aN
    [loggers]
    keys=root

    [handlers]
    keys=hand1

    [formatters]
    keys=form1

    [logger_root]
    level=WARNING
    handlers=hand1

    [handler_hand1]
    class=StreamHandler
    level=NOTSET
    formatter=form1
    args=(sys.stdout,)

    [formatter_form1]
    format=%(levelname)s ++ %(message)s
    datefmt=
    a�
    [loggers]
    keys=root,parser

    [handlers]
    keys=hand1

    [formatters]
    keys=form1

    [logger_root]
    level=WARNING
    handlers=

    [logger_parser]
    level=DEBUG
    handlers=hand1
    propagate=1
    qualname=compiler.parser

    [handler_hand1]
    class=StreamHandler
    level=NOTSET
    formatter=form1
    args=(sys.stdout,)

    [formatter_form1]
    format=%(levelname)s ++ %(message)s
    datefmt=
    a�
    [loggers]
    keys=root,parser

    [handlers]
    keys=hand1

    [formatters]
    keys=form1

    [logger_root]
    level=WARNING
    handlers=hand1

    [logger_parser]
    level=DEBUG
    handlers=
    propagate=1
    qualname=compiler.parser

    [handler_hand1]
    class=StreamHandler
    level=NOTSET
    formatter=form1
    args=(sys.stdout,)

    [formatter_form1]
    format=%(levelname)s ++ %(message)s
    datefmt=
    z
sys.stdoutz
sys.stboutzformatter=form1zformatter=misspelled_namea
    [loggers]
    keys=root

    [handlers]
    keys=hand1

    [formatters]
    keys=form1

    [logger_root]
    level=NOTSET
    handlers=hand1

    [handler_hand1]
    class=StreamHandler
    level=NOTSET
    formatter=form1
    args=(sys.stdout,)

    [formatter_form1]
    class=zS.ExceptionFormatter
    format=%(levelname)s:%(name)s:%(message)s
    datefmt=
    zclass=StreamHandlerzclass=logging.StreamHandlerag
    [loggers]
    keys=root,parser

    [handlers]
    keys=hand1, hand2

    [formatters]
    keys=form1, form2

    [logger_root]
    level=WARNING
    handlers=

    [logger_parser]
    level=DEBUG
    handlers=hand1
    propagate=1
    qualname=compiler.parser

    [handler_hand1]
    class=StreamHandler
    level=NOTSET
    formatter=form1
    args=(sys.stdout,)

    [handler_hand2]
    class=StreamHandler
    level=NOTSET
    formatter=form1
    args=(sys.stderr,)

    [formatter_form1]
    format=%(levelname)s ++ %(message)s
    datefmt=

    [formatter_form2]
    format=%(message)s
    datefmt=
    a
    [loggers]
    keys=root,parser,compiler

    [handlers]
    keys=hand1

    [formatters]
    keys=form1

    [logger_root]
    level=WARNING
    handlers=hand1

    [logger_compiler]
    level=DEBUG
    handlers=
    propagate=1
    qualname=compiler

    [logger_parser]
    level=DEBUG
    handlers=
    propagate=1
    qualname=compiler.parser

    [handler_hand1]
    class=StreamHandler
    level=NOTSET
    formatter=form1
    args=(sys.stdout,)

    [formatter_form1]
    format=%(levelname)s ++ %(message)s
    datefmt=
    z�
    [loggers]
    keys=root

    [handlers]
    keys=file

    [formatters]
    keys=

    [logger_root]
    level=DEBUG
    handlers=file

    [handler_file]
    class=FileHandler
    level=DEBUG
    args=("{tempfile}",)
    z�
    [loggers]
    keys=root

    [handlers]
    keys=screen

    [formatters]
    keys=

    [logger_root]
    level=DEBUG
    handlers=screen

    [handler_screen]
    level=DEBUG
    class=StreamHandler
    args=(sys.stdout,)
    formatter=
    cKs$tjtj|��}tjj|f|�dS)N)r#r$�textwrap�dedentr�config�
fileConfig)r2�conf�kwargs�filer4r4r5�apply_config4szConfigFileTest.apply_configcCsbtj��P}|j|j�tj�}|j|j��|j|j��|j	dg|d�|j	g�WdQRXdS)Nr\r])r%)r\r])
r�captured_stdoutry�config0rrrmrRrkrO)r2�outputr�r4r4r5�test_config0_ok8s
zConfigFileTest.test_config0_okcCs�tj��t}tjtj|j��}tj�}|j	|�t
jj|�t
j
�}|j|j��|j|j��|jdg|d�|jg�WdQRXdS)Nr\r])r%)r\r])rrzr#r$rrrsr{�configparserZConfigParserZ	read_filerrtrurrmrRrkrO)r2r|rxZcpr�r4r4r5�test_config0_using_cp_okGs

z'ConfigFileTest.test_config0_using_cp_okcCsdtj��R}|j|�tjd�}|j|j��|j|j��|jddg|d�|jg�WdQRXdS)	Nzcompiler.parserrbr[r\r])r%)rbr[)r\r])	rrzryrrrmrRrkrO)r2rtr|r�r4r4r5�test_config1_okYs


zConfigFileTest.test_config1_okcCs|jt|j|j�dS)N)r�rry�config2)r2r4r4r5�test_config2_failurehsz#ConfigFileTest.test_config2_failurecCs|jt|j|j�dS)N)r�rry�config3)r2r4r4r5�test_config3_failurelsz#ConfigFileTest.test_config3_failurecCs|tj��j}|j|j�tj�}y
t��Wntk
rFtjd�YnXtj	j
d�|j|j�d�|j
g�WdQRXdS)Nzjust testingrz-ERROR:root:just testing
Got a [RuntimeError]
)rrzry�config4rrr
�	exceptionr��stdout�seekrBr@rO)r2r|r�r4r4r5�test_config4_okps


zConfigFileTest.test_config4_okcCs|j|jd�dS)N)rt)r��config5)r2r4r4r5�test_config5_okszConfigFileTest.test_config5_okcCs|j|jd�dS)N)rt)r��config6)r2r4r4r5�test_config6_ok�szConfigFileTest.test_config6_okcCs&tj��n}|j|j�tjd�}tjd�}|j|j��|j|j��|j	|j��|j
dddg|d	�|j
g�WdQRXtj���}|j|j�tjd�}|j|j
�|j|j��|j|j��tjd
�}|j|j��|j|j��|j	|j��|j
ddddg|d	�|j
g�WdQRXdS)Nzcompiler.parserzcompiler-hyphenatedrbr[r\r]rZr^)r%zcompiler.lexerr_rarcrd)rbr[)r\r])rZr^)rbr_)r\ra)rbrc)r\rd)rrzry�config1arrrmrRrk�criticalrO�config7r�r
)r2r|r��
hyphenatedr4r4r5�test_config7_ok�s<





zConfigFileTest.test_config7_okcCs�dd�}|j��Xtjdd�\}}tj|�tjdkrB|jdd�}|jj|d�}|j	|�|j	|�WdQRXt
jjd	}|j
|||�dS)
NcSs|j�tj|�dS)N)r7r��remove)�h1r�r4r4r5�cleanup�sz/ConfigFileTest.test_config8_ok.<locals>.cleanupz.logztest_logging-X-r��\z\\)r�r)�check_no_resource_warningr�r�r�r7r3�replace�config8rAryr�rootr.r�)r2r�r�r�r�r�r4r4r5�test_config8_ok�s



zConfigFileTest.test_config8_okcCsZ|j|j�tjd�}|j|j�|j|j�|j|j�|j|jdd�|j|j�dS)NZsome_pristine_loggerF)�disable_existing_loggers)ry�disable_testrrr�r
r1)r2r�r4r4r5�test_logger_disabling�s
z$ConfigFileTest.test_logger_disablingN)rSrTrUrr�r?r{�config1r�r�r�r�r�r�r�r�r�r�ryr}rr�r�r�r�r�r�r�r�r�r4r4r4r5rq5s4  *&+rqc@s@eZdZereZdZdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
S)�SocketHandlerTestr�rcCs�tj|�d|_|_|_y$|j|j|jd�|_}|j�Wn&t	k
rf}z
||_dSd}~XnX|j
j�tj
j}t|jt�r�|d|j�|_n||jd�|_d|_|jj|jj
d�|jj|j�tjd�|_dS)Ng{�G�z�?r�rr)rr6r?�	sock_hdlr�server_exception�server_class�address�
handle_socketrr�r1r[rr.Z
SocketHandler�
isinstance�server_addressrGr�
log_outputr!r8r0rZ	SemaphorerZ)r2r?rE�hclsr4r4r5r6�s$

zSocketHandlerTest.setUpcCsFz4|jr |jj|j�|jj�|jr2|jjd�Wdtj|�XdS)Ng@)r�r!r8r7r?r.rr<)r2r4r4r5r<�s
zSocketHandlerTest.tearDowncCs�|j}x�|jd�}t|�dkr Ptjd|�d}|j|�}x&t|�|kr`||j|t|��}q<Wtj|�}tj|�}|j	|j
d7_	|jj�qWdS)Nr�z>Lr�
)
Z
connectionZrecvrC�struct�unpack�pickle�loadsrr�r�r�rZ�release)r2�requestZconn�chunk�slen�objr�r4r4r5r��s



zSocketHandlerTest.handle_socketcCsV|jr|j|j�tjd�}|jd�|jj�|jd�|jj�|j|j	d�dS)NZtcpr��eggsz
spam
eggs
)
r��skipTestrrrkrZ�acquirernrBr�)r2r�r4r4r5�test_outputs




zSocketHandlerTest.test_outputcCs�|jr|j|j�d|j_|jjd�ytd��Wn tk
rR|jjd�YnX|jj	d�t
j
�}|j|jj|�t
j
|jj|d�|jj	d�dS)Ng@g@zDeliberate mistakez
Never sentzNever sent, eitherg����MbP?zNor this)r�r�r�Z
retryStartr?r.r
r!r�rkr��
assertGreaterZ	retryTimer�)r2�nowr4r4r5�
test_noserverszSocketHandlerTest.test_noserverN)r�r)rSrTrUrrGr�r�r6r<r�r�r�r4r4r4r5r��sr�cCs*tjddd�\}}tj|�tj|�|S)NZ
test_logging_z.sock)r��suffix)r�r�r�r7r�)r�r�r4r4r5�_get_temp_domain_socket,s

r�zUnix sockets requiredc@s.eZdZereed�reZdd�Zdd�Z	dS)�UnixSocketHandlerTestrRcCst�|_tj|�dS)N)r�r�r�r6)r2r4r4r5r6=szUnixSocketHandlerTest.setUpcCstj|�tj|j�dS)N)r�r<rr�r�)r2r4r4r5r<Bs
zUnixSocketHandlerTest.tearDownN)
rSrTrUr�hasattrrrSr�r6r<r4r4r4r5r�4sr�c@s8eZdZereZdZdd�Zdd�Zdd�Z	d	d
�Z
dS)
�DatagramHandlerTestr�rcCs�tj|�d|_|_|_y$|j|j|jd�|_}|j�Wn&t	k
rf}z
||_dSd}~XnX|j
j�tj
j}t|jt�r�|d|j�|_n||jd�|_d|_|jj|jj
d�|jj|j�tj�|_dS)Ng{�G�z�?r�rr)rr6r?r�r�r�r��handle_datagramrr�r1r[rr.ZDatagramHandlerr�r�rGrr�r!r8r0rr0rZ)r2r?rEr�r4r4r5r6Os$

zDatagramHandlerTest.setUpcCsFz4|jr|jjd�|jr2|jj|j�|jj�Wdtj|�XdS)Ng@)r?r.r�r!r8r7rr<)r2r4r4r5r<iszDatagramHandlerTest.tearDowncCsTtjdd�}|jt|�d�}tj|�}tj|�}|j|j	d7_|j
j�dS)Nz>Lrr�)r��pack�packetrCr�r�rr�r�r�rZr2)r2r�r�r�r�r�r4r4r5r�ts

z#DatagramHandlerTest.handle_datagramcCs`|jr|j|j�tjd�}|jd�|jj�|jj�|jd�|jj�|j|j	d�dS)NZudpr�r�z
spam
eggs
)
r�r�rrrkrZr[r9rBr�)r2r�r4r4r5r�|s





zDatagramHandlerTest.test_outputN)r�r)rSrTrUrrMr�r�r6r<r�r�r4r4r4r5r�Fsr�c@s.eZdZereed�reZdd�Zdd�Z	dS)�UnixDatagramHandlerTestrRcCst�|_tj|�dS)N)r�r�r�r6)r2r4r4r5r6�szUnixDatagramHandlerTest.setUpcCstj|�tj|j�dS)N)r�r<rr�r�)r2r4r4r5r<�s
z UnixDatagramHandlerTest.tearDownN)
rSrTrUrr�rrUr�r6r<r4r4r4r5r��sr�c@s8eZdZereZdZdd�Zdd�Zdd�Z	d	d
�Z
dS)
�SysLogHandlerTestr�rcCs�tj|�d|_|_|_y$|j|j|jd�|_}|j�Wn&t	k
rf}z
||_dSd}~XnX|j
j�tj
j}t|jt�r�||jd|jf�|_n||j�|_d|_|jj|jj
d�|jj|j�tj�|_dS)Ng{�G�z�?rr)rr6r?�sl_hdlrr�r�r�r�rr�r1r[rr.r�r�r�rGrr�r!r8r0rr0rZ)r2r?rEr�r4r4r5r6�s$

zSysLogHandlerTest.setUpcCsFz4|jr|jjd�|jr2|jj|j�|jj�Wdtj|�XdS)Ng@)r?r.r�r!r8r7rr<)r2r4r4r5r<�szSysLogHandlerTest.tearDowncCs|j|_|jj�dS)N)r�r�rZr2)r2r�r4r4r5r��sz!SysLogHandlerTest.handle_datagramcCs�|jr|j|j�tjd�}|jd�|jj�|j|jd�|jj	�d|j
_|jd�|jj�|j|jd�|jj	�d|j
_|jd�|jj�|j|jd�dS)NZslhuspäms
<11>spämFs	<11>spämuhäm-s<11>häm-späm)
r�r�rrrkrZr[rBr�r9r�Z
append_nul�ident)r2r�r4r4r5r��s 








zSysLogHandlerTest.test_outputN)r�r)rSrTrUrrMr�r�r6r<r�r�r4r4r4r5r��sr�c@s.eZdZereed�reZdd�Zdd�Z	dS)�UnixSysLogHandlerTestrRcCst�|_tj|�dS)N)r�r�r�r6)r2r4r4r5r6�szUnixSysLogHandlerTest.setUpcCstj|�tj|j�dS)N)r�r<rr�r�)r2r4r4r5r<�s
zUnixSysLogHandlerTest.tearDownN)
rSrTrUrr�rrUr�r6r<r4r4r4r5r��sr�z$IPv6 support required for this test.cs0eZdZeZdZ�fdd�Z�fdd�Z�ZS)�IPv6SysLogHandlerTest�::1rcstj|j_tt|�j�dS)N)rZAF_INET6r�rTr3r�r6)r2)r4r4r5r6�s
zIPv6SysLogHandlerTest.setUpcstj|j_tt|�j�dS)N)r�AF_INETr�rTr3r�r<)r2)r4r4r5r<�s
zIPv6SysLogHandlerTest.tearDown)r�r)	rSrTrUrMr�r�r6r<r7r4r4)r4r5r��sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�HTTPHandlerTestcCstj|�tj�|_dS)N)rr6rr0rZ)r2r4r4r5r6s
zHTTPHandlerTest.setUpc	Csr|j|_t|j�|_|jdkrRy t|jd�}|jj|�|_Wnd|_YnX|j	d�|j
�|jj�dS)Nr�zContent-Length��)
�commandrr��log_data�intZheadersZrfilerI�	post_dataZ
send_responseZend_headersrZr2)r2r�Zrlenr4r4r5�handle_request
s

zHTTPHandlerTest.handle_requestcCs�tjd�}|j}|j|jjd��x�dD�]�}d}|r�yddl}Wntk
r\d}Yq�Xtjj	t
�}tjj|d�}|j|j
�}|j|�|j|d�}	nd}d}	t||jd|d	�|_}
|
j�|
jj�d
|
j}|o�|}tjj|d||	dd�|_d|_|j|j�x�dD]�}
|
|j_|jj�d}|j|�|jj�|j|jjd�|j|j |
�|
dk�rtt!|jj"�}nt!|j#j$d��}|j|ddg�|j|ddg�|j|d|g��qW|jj%d�|jj|j�|jj&�q*WdS)NZhttprFTr�zkeycert.pem)Zcafileg{�G�z�?)rCzlocalhost:%dz/frob�foo�bar)�secure�contextZcredentialsr�r�uspämzutf-8r3ZfuncNamer�r�g@)FT)r�r)r�r�)r�r�)'rrr!r8r.�ssl�ImportErrorr�r��dirname�__file__r�Z
SSLContextZPROTOCOL_SSLv23Zload_cert_chainZcreate_default_contextr8r�r?rr1r[Zserver_portr�Zh_hdlrr�r0r�rZr9rkrBr�rZqueryr��decoder.r7)r2r�r!r�r"r�rC�hereZlocalhost_certr�r?�hostZ
secure_clientr�r��dr4r4r5r�s\











zHTTPHandlerTest.test_outputN)rSrTrUr6r�r�r4r4r4r5r�s
r�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�
MemoryTestcCstj|�i|_dS)N)rr6�
_survivors)r2r4r4r5r6Us
zMemoryTest.setUpcGs2x,|D]$}t|�t|�f}tj|�|j|<qWdS)N)�id�repr�weakref�refr�)r2r�r��keyr4r4r5�_watch_for_survivalZs
zMemoryTest._watch_for_survivalcCs`tj�g}x.|jj�D] \\}}}|�dkr|j|�qW|r\|jdt|�dj|�f�dS)Nz;%d objects should have survived but have been destroyed: %sz, )�gcZcollectr�r�r^rFrCr�)r2ZdeadZid_�repr_r�r4r4r5�_assertTruesurvivalas
zMemoryTest._assertTruesurvivalcCs�|jjtj�tjd�}|j|�|jtj�|jj|j��|j|j��|j	dg�~|j
�tjd�}|j|j��|j	ddg�dS)Nr�r'r]r^)r�r'r])r�r'r])r�r'r^)r!r&rrbrr�r'rnrRrOr�)r2r�r�r4r4r5�test_persistent_loggersms


z"MemoryTest.test_persistent_loggersN)rSrTrUr6r�r�r�r4r4r4r5r�Qsr�c@seZdZdd�Zdd�ZdS)�EncodingTestcCs�tjd�}tjdd�\}}tj|�d}zptj|dd�}|j|�z|j|�Wd|j	|�|j�Xt
|dd�}z|j|j�j
�|�Wd|j�XWdtjj|�r�tj|�XdS)N�testz.logztest_logging-1-ufoo€zutf-8)�encoding)rrr�r�r�r7r�r0rlr8�openrBrI�rstripr��isfiler�)r2rjr�r�rr�r�r4r4r5�test_encoding_plain_file�s"




z%EncodingTest.test_encoding_plain_filecCs�tjd�}d}tjd�}d|_tj�}||d�}tj|�}|j|�z|j	|�Wd|j
|�|j�X|j�}|j
|d�dS)Nr�uдо свидания�cp1251�stricts�� �������
)rr�codecs�	getwriterr�r#�BytesIOr(r0rlr8r7r@rB)r2rj�messageZwriter_classr%�writerr�rNr4r4r5�test_encoding_cyrillic_unicode�s






z+EncodingTest.test_encoding_cyrillic_unicodeN)rSrTrUr�r�r4r4r4r5r��sr�c@seZdZdd�Zdd�ZdS)�WarningsTestcCs�tj���tjd�|jtjd�tjdtd�tj�}tj	|�}tj
d�}|j|�tjd�|j
|�|j�}|j�|j|jd�d�tj�}tjd	td
d|d�|j�}|j�|j|d
�WdQRXdS)NTF�always)�categoryzpy.warningszI'm warning you...z UserWarning: I'm warning you...
r�Explicitzdummy.py�*z
Dummy linez0dummy.py:42: UserWarning: Explicit
  Dummy line
)�warnings�catch_warningsr�captureWarningsr��filterwarnings�UserWarningr#r$r(rr0�warnr8r@r7r��find�showwarningrB)r2r%r;r�rNZa_filer4r4r5�
test_warnings�s(






zWarningsTest.test_warningscCs~tj��ltjd�|jtjd�tjd�}|j|jg�tjdt	dd�|jt
|j�d�|j|jdtj�WdQRXdS)	NTFzpy.warningsr�zdummy.pyr�rPr)
r�r�rrr�rrBr.rrrC�assertIsInstance�NullHandler)r2r�r4r4r5�test_warnings_no_handlers�s


z&WarningsTest.test_warnings_no_handlersN)rSrTrUrr	r4r4r4r5r��sr�cCstj||�S)N)rr*)rA�datefmtr4r4r5�
formatFunc�srcCstj�S)N)rr(r4r4r4r5�handlerFunc�src@seZdZdS)�
CustomHandlerN)rSrTrUr4r4r4r5r
�sr
c
@seZdZejZdZddddiiddddd	d
�iddgd�d
�Zddddiiddddd	d
�idddgd�iddid�Zddddiiddddd	d
�idddiiddgd�d�Zddddiidddddd
�idddgd�iddid�Z	ddddiiddddd	d
�idddgd�iddid�Z
ddddiiddddd	d
�idddgd�iddid�Zddddiiddddd	d
�idddgd�iddid�Zddeddd�iddddd	d
�iddgd�d
�Z
dedd�eddd�edd�d�dddd	d
�deid�ddgd�d
�Zddddiidedddd	d
�idddgd�iddid�Zddddiidedddd	dd�idddgd�iddid�Zddddiiddddd	d
�id ddgd�iddid�Zdd!dddiiddddd	d
�iddgd�id"�ddid#�Zdd$dddiiddddd	d
�iddgd�id"�ddid#�Zddddiiddddd	d
�idddgd�iddid�Zdd$dddiiddd%iid&�Zdd$ddd%iiddd%iid&�Zddddiid'd(diiddddd	d'gd)�iddd'gd*�iddgd�d+�Zddddiiddddd	d
�id,dd-idddgd�iddid.�Zdddiiddddd	d
�id,dd-idddgd�iddid/�Zd0dddiiddddd	d
�id,dd-idddgd�iddid.�Zddddiiddddd	d1d2d3�d4�iddgd�d
�Zdd5d6d7d8�iddd5d9�d:d;d5d<dd=�d>�d?dd@gdAdB�idC�ZdDdE�Z dFdG�Z!efdHdI�Z"dJdK�Z#dLdM�Z$dNdO�Z%dPdQ�Z&dRdS�Z'dTdU�Z(dVdW�Z)dXdY�Z*dZd[�Z+d\d]�Z,d^d_�Z-d`da�Z.dbdc�Z/ddde�Z0dfdg�Z1dhdi�Z2djdk�Z3dldm�Z4e5j6e7dn�d}dpdq��Z8e5j6e7dr�dsdt��Z9e5j6e7dr�dudv��Z:e5j6e7dr�dwdx��Z;dydz�Z<d{d|�Z=doS)~�ConfigDictTestz^(\w+) \+\+ (\w+)$rP�form1rAz%(levelname)s ++ %(message)s�hand1zlogging.StreamHandlerrzext://sys.stdout)�class�	formatter�levelr%r`)rr.)�version�
formattersr.r�zcompiler.parserr'r)rrr.�loggersr�zext://sys.stdboutZNTOSETZWRANINGZmisspelled_namez.ExceptionFormatterz"%(levelname)s:%(name)s:%(message)s)z()rAz.formatFunc)rZform2Zform3z())rZhand2z.CustomHandlerzinvalid parameter name)rrrr%rfzcompiler.lexerF)�compilerzcompiler.lexer)rr�rr.rr�Trb)rZincrementalr.rZfilt1r3)rrrr%�filters)rr)rrrr.rr�zcfg://true_formatterszcfg://handler_configs[hand1])r�true_formatters�handler_configsrr.rr�)rrrr.rr�r�r�z!
)r��
terminator)rrrr%r�ZmySimpleFormatterz1%(asctime)s (%(name)s) %(levelname)s: %(message)s�$)rA�style)rrrzlogging.handlers.MemoryHandler��
fileGlobal)rZcapacityrrr)r�bufferGlobal�mymoduler �true)rr.rd)rrr.rcCstjj|�dS)N)rrtZ
dictConfig)r2rvr4r4r5rya
szConfigDictTest.apply_configcCsbtj��P}|j|j�tj�}|j|j��|j|j��|j	dg|d�|j	g�WdQRXdS)Nr\r])r%)r\r])
rrzryr{rrrmrRrkrO)r2r|r�r4r4r5r}d
s
zConfigDictTest.test_config0_okcCsdtj��R}|j|�tjd�}|j|j��|j|j��|jddg|d�|jg�WdQRXdS)	Nzcompiler.parserrbr[r\r])r%)rbr[)r\r])	rrzryrrrmrRrkrO)r2rtr|r�r4r4r5r�s
s


zConfigDictTest.test_config1_okcCs|jt|j|j�dS)N)r�rryr�)r2r4r4r5r��
sz#ConfigDictTest.test_config2_failurecCs|jt|j|j�dS)N)r�rry�config2a)r2r4r4r5�test_config2a_failure�
sz$ConfigDictTest.test_config2a_failurecCs|jt|j|j�dS)N)r�rry�config2b)r2r4r4r5�test_config2b_failure�
sz$ConfigDictTest.test_config2b_failurecCs|jt|j|j�dS)N)r�rryr�)r2r4r4r5r��
sz#ConfigDictTest.test_config3_failurecCsttj��b}|j|j�y
t��Wntk
r>tjd�YnXtjj	d�|j
|j�d�|jg�WdQRXdS)Nzjust testingrz-ERROR:root:just testing
Got a [RuntimeError]
)
rrzryr�r
rr�r�r�r�rBr@rO)r2r|r4r4r5r��
s


zConfigDictTest.test_config4_okcCsttj��b}|j|j�y
t��Wntk
r>tjd�YnXtjj	d�|j
|j�d�|jg�WdQRXdS)Nzjust testingrz-ERROR:root:just testing
Got a [RuntimeError]
)
rrzry�config4ar
rr�r�r�r�rBr@rO)r2r|r4r4r5�test_config4a_ok�
s


zConfigDictTest.test_config4a_okcCs|j|jd�dS)N)rt)r�r�)r2r4r4r5r��
szConfigDictTest.test_config5_okcCs|jt|j|j�dS)N)r�rryr�)r2r4r4r5�test_config6_failure�
sz#ConfigDictTest.test_config6_failurecCs�tj��T}|j|j�tjd�}|j|j��|j|j��|j	d
dg|d�|j	g�WdQRXtj��j}|j|j
�tjd�}|j|j�tjd�}|j|j��|j|j��|j	dd
g|d�|j	g�WdQRXdS)Nzcompiler.parserrbr[r\r])r%zcompiler.lexerr^r_)rbr[)r\r])rbr^)r\r_)
rrzryr�rrrmrRrkrOr�r1r
)r2r|r�r4r4r5r��
s,




zConfigDictTest.test_config7_okcCs�tj��T}|j|j�tjd�}|j|j��|j|j��|j	dd
g|d�|j	g�WdQRXtj���}|j|j
�tjd�}|j|j�|j|j��|j|j��tjd�}|j|j��|j|j��|j	ddddg|d�|j	g�WdQRXdS)Nzcompiler.parserrbr[r\r])r%zcompiler.lexerr^r_rarc)rbr[)r\r])rbr^)r\r_)rbra)r\rc)
rrzryr�rrrmrRrkrOr�r�r
)r2r|r�r4r4r5�test_config_8_ok�
s4




zConfigDictTest.test_config_8_okcCs&tj��n}|j|j�tjd�}tjd�}|j|j��|j|j��|j	|j��|j
dddg|d	�|j
g�WdQRXtj���}|j|j�tjd�}|j|j
�|j|j��|j|j��tjd
�}|j|j��|j|j��|j	|j��|j
ddddg|d	�|j
g�WdQRXdS)Nzcompiler.parserzcompiler-hyphenatedrbr[r\r]rZr^)r%zcompiler.lexerr_rarcrd)rbr[)r\r])rZr^)rbr_)r\ra)rbrc)r\rd)rrzryr�rrrmrRrkr�rO�config8ar�r
)r2r|r�r�r4r4r5�test_config_8a_ok�
s<





z ConfigDictTest.test_config_8a_okcCs�tj���}|j|j�tjd�}|j|j��|jg|d�|j|j	�|j|j��|jg|d�|j|j
�|j|j��|jdg|d�WdQRXdS)Nzcompiler.parser)r%rbr^)rbr^)rrzry�config9rrrmrRrO�config9a�config9b)r2r|r�r4r4r5�test_config_9_oks

zConfigDictTest.test_config_9_okcCs�tj���}|j|j�tjd�}|j|j��tjd�}|j|j��tjd�}|j|j��tjd�}|j|j��|j	d
dg|d	�WdQRXdS)Nzcompiler.parserrzcompiler.lexerzcompiler.parser.codegenr`r[r\r_)r%)r`r[)r\r_)
rrzry�config10rrrlrRrkrO)r2r|r�r4r4r5�test_config_10_ok1s




z ConfigDictTest.test_config_10_okcCs|j|j�dS)N)r��config11)r2r4r4r5�test_config11_okDszConfigDictTest.test_config11_okcCs|jt|j|j�dS)N)r�rry�config12)r2r4r4r5�test_config12_failureGsz$ConfigDictTest.test_config12_failurecCs|jt|j|j�dS)N)r�rry�config13)r2r4r4r5�test_config13_failureJsz$ConfigDictTest.test_config13_failurec
Cshtj��V}|j|j�tjd}|j|jd�|j|jd�tj	d�|j
|j�jd��WdQRXdS)Nrr�z!
ZExclamationz
Exclamation!
)
rrzry�config14rrrBr�rrlr1r@r\)r2r|r;r4r4r5�test_config14_okMs


zConfigDictTest.test_config14_okcCs�dd�}|j��Ptjdd�\}}tj|�ddd|d�id	dgid
�}|j|�|j|�WdQRXtjjd}|j	|||�dS)NcSs|j�tj|�dS)N)r7r�r�)r�r�r4r4r5r�Xsz0ConfigDictTest.test_config15_ok.<locals>.cleanupz.logztest_logging-X-rPrxzlogging.FileHandler)r�filenamer.)rr.r�r)
r�r�r�r�r7ryrr�r.r�)r2r�r�r�rtr�r4r4r5�test_config15_okVs


zConfigDictTest.test_config15_okz listen() needs threading to workNcCs�|jd�}tjjd|�}|j�|jj�|j}|jj�z�t	j	t	j
t	j�}|jd�|j
d|f�tjdt|��}||}d}t|�}	x.|	dkr�|j||d��}
||
7}|	|
8}	q�W|j�Wd|jjd�tjj�|jd�XdS)Nzutf-8rg@r�z>L)�encoderrtZlistenrr1r[rr9rr�ZSOCK_STREAMZ
settimeoutZconnectr�r�rC�sendr7Z
stopListeningr�)r2�textZverifyr*rrDr�rNZ	sentsofar�leftZsentr4r4r5�setup_via_listenerss,





z!ConfigDictTest.setup_via_listenerz!Threading required for this test.cCs�tj���}|jtj|j��tjd�}|j|j	��tjd�}|j|j	��tjd�}|j|j	��tjd�}|j
|j	��|jd
dg|d	�WdQRXdS)Nzcompiler.parserrzcompiler.lexerzcompiler.parser.codegenr`r[r\r_)r%)r`r[)r\r_)rrzrA�json�dumpsr1rrrlrRrkrO)r2r|r�r4r4r5�test_listen_config_10_ok�s




z'ConfigDictTest.test_listen_config_10_okcCsltj��Z}|jtjtj��tjd�}|j	|j
��|j|j
��|jddg|d�|jg�WdQRXdS)	Nzcompiler.parserrbr[r\r])r%)rbr[)r\r])
rrzrArrrsrqr�rrrmrRrkrO)r2r|r�r4r4r5�test_listen_config_1_ok�s

z&ConfigDictTest.test_listen_config_1_okcCsbdd�}dd�}tjd�}tjtj�}tj��.}|j||�|j	|j
��|j|j
��WdQRX|jg|d�|jddgdd�tj��6}|j|�tjd�}|j	|j
��|j|j
��WdQRX|jddg|d�|jddgdd�tj��B}|j|ddd�|�tjd�}|j	|j
��|j|j
��WdQRX|jddg|d�|jddgdd�dS)NcSsdS)Nr4)�stuffr4r4r5�verify_fail�sz6ConfigDictTest.test_listen_verify.<locals>.verify_failcSs|ddd�S)NrPr�r4)rFr4r4r5�verify_reverse�sz9ConfigDictTest.test_listen_verify.<locals>.verify_reversezcompiler.parser)r%rbr[r\r]z^[\w.]+ -> (\w+): (\d+)$)rJr^r_rPrarc)rbr[)r\r])rbr^)r\r_)rbr[)r\r]r�)rbra)r\rc)rbr[)r\r])
rrrrrsrqr�rrzrArmrRrkrO)r2rGrHr�Zto_sendr|r4r4r5�test_listen_verify�sN






z!ConfigDictTest.test_listen_verifycCsB|j|j�tjd�jd}|j|jtj�|j|jj	tj
�dS)Nr!r)ry�out_of_orderrrr.rrr�r�_style�StringTemplateStyle)r2r�r4r4r5�test_out_of_order�s

z ConfigDictTest.test_out_of_ordercCs�ddddgddd�d!d
ddgdgdddgd�}tjj|�}|j|jd�d�|j|jd�d�|j|jd�d
�|j|jd�d�|j|jd�d�|j|jd�d�|jd�}|j|jd�dddg�|jt|jd�|jt|jd�|jt|jd�dS)"NrPr��r��b�crE)r�r��gr;ri�jr��lrorl�ozcfg://alist�p)ZatupleZalistZadictZnest1Znest2Znest3zcfg://atuple[1]zcfg://alist[1]zcfg://nest1[1][0]zcfg://nest2[1][1]z
cfg://adict.dzcfg://adict[f]zcfg://nest3zcfg://nosuchzcfg://!zcfg://adict[2])rPr�rN�r;ri)rQrVrR)	rrtZBaseConfiguratorrBZconvert�popr��KeyErrorr�)r2r�Zbcr�r4r4r5�test_baseconfig�s$
zConfigDictTest.test_baseconfig)N)>rSrTrUrr�r?r{r�r�r�r#r%r�r�rorrr'r�r�r�r�r+r-r.r/r1r3r5r7r9rJryr}r�r�r$r&r�r�r(r�r)r�r*r,r0r2r4r6r8r:r<rrrrArDrErIrMrYr4r4r4r5r�sj
















!+	
?rc@seZdZdd�Zdd�ZdS)�ManagerTestcsng�G�fdd�dtj�}tjd�}|jt|jt�|j|�|jd�}|jd�tjd�|j	�dg�dS)NcseZdZd�fdd�	ZdS)z6ManagerTest.test_manager_loggerclass.<locals>.MyLoggerNcs�j|�dS)N)r^)r2rr�r��exc_info�extra)�loggedr4r5�_logsz;ManagerTest.test_manager_loggerclass.<locals>.MyLogger._log)NN)rSrTrUr^r4)r]r4r5�MyLoggersr_r�zshould appear in loggedzshould not appear in logged)
r�Logger�Managerr��	TypeError�setLoggerClassr�rrlrB)r2r_�manr�r4)r]r5�test_manager_loggerclasss




z$ManagerTest.test_manager_loggerclasscCs,tjd�}t�}|j|�|j|j|�dS)N)rra�object�setLogRecordFactoryrBZlogRecordFactory)r2rdrLr4r4r5�test_set_log_record_factory s

z'ManagerTest.test_set_log_record_factoryN)rSrTrUrerhr4r4r4r5rZsrZc@seZdZdd�ZdS)�ChildLoggerTestcCs�tj�}tjd�}tjd�}|jd�}|jd�}|j|tjd��|j|tjd��|jd�}|jd�}|jd�}|j|tjd��|j|tjd��|j||�dS)	N�abczdef.ghiZxyzzuvw.xyz�defZghizabc.defzabc.def.ghi)rrZgetChildr)r2r��l1�l2Zc1Zc2Zc3r4r4r5�test_child_loggers's






z"ChildLoggerTest.test_child_loggersN)rSrTrUrnr4r4r4r5ri&sric@seZdZdS)�DerivedLogRecordN)rSrTrUr4r4r4r5ro7sroc@s$eZdZdd�Zdd�Zdd�ZdS)�LogRecordFactoryTestcCsBGdd�dtj�}tj|�|t�|_|jj|j�tj�|_	dS)Nc@seZdZdd�Zdd�ZdS)z2LogRecordFactoryTest.setUp.<locals>.CheckingFiltercSs
||_dS)N)r�)r2r�r4r4r5r>sz;LogRecordFactoryTest.setUp.<locals>.CheckingFilter.__init__cSs,t|�}||jk	r(d||jf}t|��dS)Nz)Unexpected LogRecord type %s, expected %sT)�typer�rb)r2r�r*r�r4r4r5r�As

z9LogRecordFactoryTest.setUp.<locals>.CheckingFilter.filterN)rSrTrUrr�r4r4r4r5�CheckingFilter=srr)
rr�rr6ror�r!r�ZgetLogRecordFactory�orig_factory)r2rrr4r4r5r6<s


zLogRecordFactoryTest.setUpcCs(|jj|j�tj|�tj|j�dS)N)r!r�r�rr<rrgrs)r2r4r4r5r<Ns
zLogRecordFactoryTest.tearDowncCs@|jt|jj|j��tjt�|jj|j��|j	dg�dS)Nr�r\r])r�r\r])
r�rbr!rlrRrrgrorkrO)r2r4r4r5�test_logrecord_classSs

z)LogRecordFactoryTest.test_logrecord_classN)rSrTrUr6r<rtr4r4r4r5rp:srpc@sDeZdZdZdd�Zdd�Zdd�Zeje	e
jd�d	�d
d��ZdS)
�QueueHandlerTestz^[\w.]+ -> (\w+): (\d+)$cCsZtj|�tjd�|_tjj|j�|_tjd�|_	d|j	_
|j	jtj�|j	j
|j�dS)NrPZqueFr�)rr6�queue�Queuerr.�QueueHandler�que_hdlrr�
que_loggerrdr&r`r0)r2r4r4r5r6as
zQueueHandlerTest.setUpcCs|jj�tj|�dS)N)ryr7rr<)r2r4r4r5r<js
zQueueHandlerTest.tearDowncCs�|jj|j��|jtj|jj�|jj|j��|jtj|jj�|j�}|jj|�|jj�}|j	t
|tj��|j
|j|jj�|j
|j|jf|df�dS)N)rzrnrRr�rv�Empty�
get_nowaitrmrlr1r�r�	LogRecordrBr3r�r�)r2r�rr4r4r5�test_queue_handlerns
z#QueueHandlerTest.test_queue_handler�
QueueListenerz5logging.handlers.QueueListener required for this testcCsltjtj��}tjj|j|�}|j�z4|jj	|j
��|jj|j
��|jj|j
��Wd|j
�X|j|jtjdd��|j|jtjdd��|j|jtjdd��|j�tjtj��}|jtj�tjj|j|dd�}|j�z4|jj	|j
��|jj|j
��|jj|j
��Wd|j
�X|j|jtjdd��|j|jtjdd��|j|jtjd	d��dS)
Nr[)r�r�r]r^T)Zrespect_handler_levelr_rarc)rZTestHandlerZMatcherrr.rrvrrzrlrRrkr�r.r1�matchesr`r\rZr7r&r�)r2r��listenerr4r4r5�test_queue_listenerzs2

z$QueueHandlerTest.test_queue_listenerN)
rSrTrUr?r6r<r~rrr�rr.r�r4r4r4r5ru]s	rur)�patchc@s~eZdZdZedd��Zejej	j
d�ejdd���Z
ejejej	j
d�ejdd����Zed	d
��Zejejdd���Zd
S)�QueueListenerTest�cCs�tjd|�}|jtj�tjj|�}|j|�tjj|�}|j�|j	d�|j	d�|j	d�|j	d�|j	d�|j
�|j|�|j�dS)Nztest_logger_with_id_%s�one�twoZthreeZfourZfive)
rrr&r'r.rxr0rrrmr.r8r7)�	log_queuer�r�r�r�r4r4r5�
setup_and_log�s






zQueueListenerTest.setup_and_logr�cCsNx2t|j�D]$}tj�}|j|d|j�|f�qW|j|jd|jd�dS)Nz%s_%srz&correct number of handled log messages)r��repeatrvrwr�r�rB�
call_count)r2�mock_handlerir�r4r4r5�#test_handle_called_with_queue_queue�s
z5QueueListenerTest.test_handle_called_with_queue_queuecCs^xBt|j�D]4}tj�}|j|d|j�|f�|j�|j�qW|j|j	d|jd�dS)Nz%s_%srz&correct number of handled log messages)
r�r��multiprocessingrwr�r�r7�join_threadrBr�)r2r�rir�r4r4r5� test_handle_called_with_mp_queue�sz2QueueListenerTest.test_handle_called_with_mp_queueccs0yx|j�VqWWntjk
r*gSXdS)N)r|rvr{)r�r4r4r5�get_all_from_queue�s
z$QueueListenerTest.get_all_from_queuecCs�x|t|j�D]n}tj�}|j|d|j�|f�t|j|��}|j�|j	�gt
jjj
gg}|j||ddd�|D��qWdS)Nz%s_%sz&Found unexpected messages in queue: %scSs"g|]}t|tj�r|jn|�qSr4)r�rr}r�)rhror4r4r5rj�szJQueueListenerTest.test_no_messages_in_queue_after_stop.<locals>.<listcomp>)r�r�r�rwr�r��listr�r7r�rr.rZ	_sentinelr)r2rirvr�rLr4r4r5�$test_no_messages_in_queue_after_stop�s	z6QueueListenerTest.test_no_messages_in_queue_after_stopN)rSrTrUr��staticmethodr�r�rfrr.rrZreap_threadsr�Zrequires_multiprocessing_queuer�r�r�r4r4r4r5r��s
r�c@s eZdZdd�ZeZdd�ZdS)�UTCcCstS)N)�ZERO)r2�dtr4r4r5�	utcoffset�sz
UTC.utcoffsetcCsdS)Nr�r4)r2r�r4r4r5�tzname�sz
UTC.tznameN)rSrTrUr��dstr�r4r4r4r5r��sr�c@sFeZdZdd�Zddd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dS)�
FormatterTestc	Cs0dtjtjjddd�ddddd
d	�|_i|_dS)Nzformatter.testr�Ztoz	dummy.extr�zMessage with %d %sr��placeholders)r3r�pathname�linenor[�funcr�r�)r�r�)rr'r�r�r��common�variants)r2r4r4r5r6
s
zFormatterTest.setUpNcCs,t|j�}|dk	r"|j|j|�tj|�S)N)�dictr�r:r�rr�)r2r3�resultr4r4r5�
get_record
s
zFormatterTest.get_recordcCs�|j�}tjd�}|j|j|�d�tjd�}|jt|j|�|j|j��tjd�}|j	|j��tjd�}|j	|j��tjd�}|j|j��dS)Nz${%(message)s}z${Message with 2 placeholders}z
%(random)sz%(asctime)sz%(asctime)-15s�asctime)
r�rr*rBrAr�rXr��usesTimer1)r2r�r�r4r4r5�test_percent
s




zFormatterTest.test_percentcCs�|j�}tjddd�}|j|j|�d�tjddd�}|jt|j|�|j|j��tjddd�}|j	|j��tjddd�}|j	|j��tjddd�}|j	|j��tjd	dd�}|j|j��dS)
Nz
$%{message}%$�{)rz$%Message with 2 placeholders%$z{random}z	{asctime}z{asctime!s:15}z{asctime:15}r�)
r�rr*rBrAr�rXr�r�r1)r2r�r�r4r4r5�test_braces&
szFormatterTest.test_bracescCs�|j�}tjddd�}|j|j|�d�tjddd�}|j|j|�d�tjddd�}|jt|j|�|j|j��tjddd�}|j	|j��tjd	dd�}|j|j��tjd
dd�}|j	|j��tjddd�}|j|j��dS)Nz$messager)rzMessage with 2 placeholdersz$$%${message}%$$z$%Message with 2 placeholders%$z	${random}z
${asctime}z	${asctimez$asctimer�)
r�rr*rBrAr�rXr�r�r1)r2r�r�r4r4r5�test_dollars7
s zFormatterTest.test_dollarscCs|jttjddd�dS)N�x)r�r�rr*)r2r4r4r5�test_invalid_styleJ
sz FormatterTest.test_invalid_stylec	Cs�|j�}tjdddddddt�}tj|jd�j��|_d|_t	j
d�}tj|_|j
|j|�d	�|j
|j|d
�d�|j|�|j
|jd	�dS)Ni�r���rNr�{z%(asctime)s %(message)sz1993-04-21 08:03:00,123z%Y:%dz1993:21)r��datetime�utcr�ZmktimeZ
astimezoneZ	timetupleZcreatedZmsecsrr*�gmtimeZ	converterrBZ
formatTimerAr�)r2r�r�r�r4r4r5�	test_timeM
s

zFormatterTest.test_time)N)
rSrTrUr6r�r�r�r�r�r�r4r4r4r5r�
s
r�c@seZdZdd�Zdd�ZdS)�TestBufferingFormattercCsdt|�S)Nz[(%d))rC)r2�recordsr4r4r5�formatHeader\
sz#TestBufferingFormatter.formatHeadercCsdt|�S)Nz(%d)])rC)r2r�r4r4r5�formatFooter_
sz#TestBufferingFormatter.formatFooterN)rSrTrUr�r�r4r4r4r5r�[
sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�BufferingFormatterTestcCs"tjddi�tjddi�g|_dS)Nr�r�r�)rr�r�)r2r4r4r5r6c
szBufferingFormatterTest.setUpcCs2tj�}|jd|jg��|jd|j|j��dS)NrZonetwo)r�BufferingFormatterrBrAr�)r2r�r4r4r5�test_defaulti
sz#BufferingFormatterTest.test_defaultcCsDt�}|jd|j|j��tjd�}t|�}|jd|j|j��dS)Nz[(2)onetwo(2)]z
<%(message)s>z[(2)<one><two>(2)])r�rBrAr�rr*)r2r�Zlfr4r4r5�test_customn
s

z"BufferingFormatterTest.test_customN)rSrTrUr6r�r�r4r4r4r5r�b
sr�c@seZdZdd�ZdS)�
ExceptionTestc
Cs�|j}t�}|j|�ytd��Wntjddd�YnX|j|�|j�|jd}|j	|j
jd��|j	|j
jd��|j	|j
jd��|j	|j
jd	��dS)
Nzdeliberate mistakeZfailedT)�
stack_inforz#Traceback (most recent call last):
z!
RuntimeError: deliberate mistakezStack (most recent call last):
z,logging.exception('failed', stack_info=True))r!�RecordingHandlerr0r
rr�r8r7r�r1Zexc_textr:r\r�)r2r�r;r4r4r5�test_formattingv
s


zExceptionTest.test_formattingN)rSrTrUr�r4r4r4r5r�u
sr�c@seZdZdd�ZdS)�LastResortTestc%Cs,|j}|j|j�tj}tj}z�tj��:}|jd�|j	|j
�d�|jd�|j	|j
�d�WdQRXdt_tj��$}|jd�d}|j	|j
�|�WdQRXtj�� }|jd�|j	|j
�d�WdQRXd|j_
dt_tj�� }|jd�|j	|j
�d�WdQRXWd|j|j�|t_|t_XdS)NzThis should not appearrz
Final chance!zFinal chance!
z-No handlers could be found for logger "root"
F)r!r8r)rZ
lastResortrrrrnrBr@rlrZemittedNoHandlerWarningr0)r2r�Zold_lastresortZold_raise_exceptionsrr�r4r4r5�test_last_resort�
s4








zLastResortTest.test_last_resortN)rSrTrUr�r4r4r4r5r��
sr�c@seZdZdd�Zdd�ZdS)�FakeHandlercCs(x"dD]}t|||j|||��qWdS)Nr��flushr7r�)r�r�r7r�)�setattr�record_call)r2�
identifier�calledr�r4r4r5r�
s
zFakeHandler.__init__cs���fdd�}|S)Ncs�jdj����dS)Nz{} - {})r^rAr4)r�r��method_namer4r5�inner�
sz&FakeHandler.record_call.<locals>.innerr4)r2r�r�r�r�r4)r�r�r�r5r��
szFakeHandler.record_callN)rSrTrUrr�r4r4r4r5r��
sr�cs$eZdZ�fdd�Zdd�Z�ZS)r�cstt|�j||�g|_dS)N)r3r�rr�)r2r�rw)r4r4r5r�
szRecordingHandler.__init__cCs|jj|�dS)N)r�r^)r2r�r4r4r5r��
szRecordingHandler.handle)rSrTrUrr�r7r4r4)r4r5r��
sr�cs�eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Z�ZS)!�ShutdownTestcs.tt|�j�g|_tj}|jttd|�dS)Nr)r3r�r6r�rrr�r�)r2Zraise_exceptions)r4r4r5r6�
szShutdownTest.setUpcs�fdd�}|S)Ncs
���dS)Nr4r4)rkr4r5r��
sz'ShutdownTest.raise_error.<locals>.innerr4)r2rkr�r4)rkr5�raise_error�
szShutdownTest.raise_errorcCsvtd|j�}td|j�}td|j�}ttjj|||g�}tjt|�d�ddddd	d
ddd
dddg}|j||j�dS)NrrPr�)�handlerListz2 - acquirez	2 - flushz	2 - closez2 - releasez1 - acquirez	1 - flushz	1 - closez1 - releasez0 - acquirez	0 - flushz	0 - closez0 - release)	r�r�rrr�r�r5r�rB)r2Zhandler0Zhandler1Zhandler2r.rLr4r4r5�test_no_failure�
szShutdownTest.test_no_failurecCsRtd|j�}t|||j|��tjj|�g}tjt|�d�|j	d|jd�dS)Nr)r�z0 - releaserPr�)
r�r�r�r�rr�r�r5r�rB)r2r�rkr�r.r4r4r5�_test_with_failure_in_method�
s
z)ShutdownTest._test_with_failure_in_methodcCs|jdt�dS)Nr�)r�r�)r2r4r4r5�test_with_ioerror_in_acquire�
sz)ShutdownTest.test_with_ioerror_in_acquirecCs|jdt�dS)Nr�)r�r�)r2r4r4r5�test_with_ioerror_in_flush�
sz'ShutdownTest.test_with_ioerror_in_flushcCs|jdt�dS)Nr7)r�r�)r2r4r4r5�test_with_ioerror_in_close�
sz'ShutdownTest.test_with_ioerror_in_closecCs|jdt�dS)Nr�)r�r�)r2r4r4r5�test_with_valueerror_in_acquire�
sz,ShutdownTest.test_with_valueerror_in_acquirecCs|jdt�dS)Nr�)r�r�)r2r4r4r5�test_with_valueerror_in_flush�
sz*ShutdownTest.test_with_valueerror_in_flushcCs|jdt�dS)Nr7)r�r�)r2r4r4r5�test_with_valueerror_in_closesz*ShutdownTest.test_with_valueerror_in_closecCsdt_|jdt�dS)NFr�)rrr��
IndexError)r2r4r4r5�.test_with_other_error_in_acquire_without_raisesz;ShutdownTest.test_with_other_error_in_acquire_without_raisecCsdt_|jdt�dS)NFr�)rrr�r�)r2r4r4r5�,test_with_other_error_in_flush_without_raisesz9ShutdownTest.test_with_other_error_in_flush_without_raisecCsdt_|jdt�dS)NFr7)rrr�r�)r2r4r4r5�,test_with_other_error_in_close_without_raisesz9ShutdownTest.test_with_other_error_in_close_without_raisecCsdt_|jt|jdt�dS)NTr�)rrr�r�r�)r2r4r4r5�+test_with_other_error_in_acquire_with_raises
z8ShutdownTest.test_with_other_error_in_acquire_with_raisecCsdt_|jt|jdt�dS)NTr�)rrr�r�r�)r2r4r4r5�)test_with_other_error_in_flush_with_raises
z6ShutdownTest.test_with_other_error_in_flush_with_raisecCsdt_|jt|jdt�dS)NTr7)rrr�r�r�)r2r4r4r5�)test_with_other_error_in_close_with_raises
z6ShutdownTest.test_with_other_error_in_close_with_raise)rSrTrUr6r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r7r4r4)r4r5r��
s 	r�c@sdeZdZdd�Zddd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zej
dd��ZdS)�ModuleLevelMiscTestcCsDtjjj}|j|d�|jtj|�tjd�|jtjjjd�dS)Nr�S)rr�r�disablerBr�)r2�old_disabler4r4r5�test_disable$s


z ModuleLevelMiscTest.test_disableNcs�g�tj|td�fdd��t�}tjj|�tt|�}|dk	rN||d|�n
|d|�|jt|j	�d�|j	d}|j|j
�d|�|dk	r�|ntt|j��}|j|j|�|j�g�dS)N�basicConfigcs�j||f�S)N)r^)r��kw)r�r4r5�<lambda>0sz/ModuleLevelMiscTest._test_log.<locals>.<lambda>ztest me: %rrPr)
rr�rr�r�r0rrBrCr�Z
getMessage�upperr�)r2r�r�	recording�
log_methodr�Zexpected_levelr4)r�r5�	_test_log-s



zModuleLevelMiscTest._test_logcCs|jdtj�dS)Nrj)r�rr\)r2r4r4r5�test_logEszModuleLevelMiscTest.test_logcCs|jd�dS)Nrn)r�)r2r4r4r5�
test_debugHszModuleLevelMiscTest.test_debugcCs|jd�dS)Nrm)r�)r2r4r4r5�	test_infoKszModuleLevelMiscTest.test_infocCs|jd�dS)Nrl)r�)r2r4r4r5�test_warningNsz ModuleLevelMiscTest.test_warningcCs|jd�dS)Nrk)r�)r2r4r4r5�
test_errorQszModuleLevelMiscTest.test_errorcCs|jd�dS)Nr�)r�)r2r4r4r5�
test_criticalTsz!ModuleLevelMiscTest.test_criticalcCs^|jttjt�Gdd�dtj�}tj|�|jtj�|�tjtj�|jtj�tj�dS)Nc@seZdZdS)z;ModuleLevelMiscTest.test_set_logger_class.<locals>.MyLoggerN)rSrTrUr4r4r4r5r_Zsr_)r�rbrrcrfr`rBZgetLoggerClass)r2r_r4r4r5�test_set_logger_classWs
z)ModuleLevelMiscTest.test_set_logger_classcCs8d}td|�\}}}|j�}|jd|�|jd|�dS)Na&if 1:
            import logging

            class A:
                def __del__(self):
                    try:
                        raise ValueError("some error")
                    except Exception:
                        logging.exception("exception in __del__")

            a = A()z-czexception in __del__zValueError: some error)rr�r)r2�codeZrc�out�errr4r4r5�test_logging_at_shutdowncs

z,ModuleLevelMiscTest.test_logging_at_shutdown)N)rSrTrUr�r�r�r�r�r�r�r�r�rZrequires_type_collectingr�r4r4r4r5r� s	
r�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�
LogRecordTestcCs6tji�}t|�}|j|jd��|j|jd��dS)Nz<LogRecord: �>)rr�rgr1r:r\)r2r�rNr4r4r5�test_str_repxs
zLogRecordTest.test_str_repcCsjt�}tj�}|j|�ddi}tjd|�|j|jdj|�|j|jdj	d�|j
|�|j�dS)NZlessZmorezless is %(less)srzless is more)r�rrr0rlrr�r�rBr�r8r7)r2r;r�r�r4r4r5�
test_dict_arg~s

zLogRecordTest.test_dict_argcCs\tji�}|j|jd�y*ddl}tji�}|j|j|j�j�Wntk
rVYnXdS)NZMainProcessr)rr�rB�processNamer�Zcurrent_processr3r�)r2r�Zmpr4r4r5�test_multiprocessing�s

z"LogRecordTest.test_multiprocessingcCs�tji�}|j}tr(||j�||j�||j�||j�tj}tj	}tj
}zNdt_dt_	dt_
tji�}|j}||j�||j�||j�||j�Wd|t_|t_	|t_
XdS)NF)rr��assertIsNotNonerZthreadZ
threadName�processr��
logThreads�logProcesses�logMultiprocessing�assertIsNone)r2r�ZNOT_NONEZlog_threadsZ
log_processesZlog_multiprocessingZNONEr4r4r5�
test_optional�s.








zLogRecordTest.test_optionalN)rSrTrUr�r�r�r�r4r4r4r5r�ws
r�cs�eZdZ�fdd�Z�fdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd.d d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Z�ZS)/�BasicConfigTestcsVtt|�j�tjj|_tjj�|_tj	dd�|_
tjj|_|j
|j�gtj_dS)N)r3rr6rr�r.rrrrrrr"r�r�)r2)r4r4r5r6�s

zBasicConfigTest.setUpcs@x,tjjdd�D]}tjj|�|j�qWtt|�j�dS)N)rr�r.r8r7r3rr<)r2r;)r4r4r5r<�szBasicConfigTest.tearDowncCsFttjd|j�tjj�tjj|j�|jtj	dd�<|j
tj_dS)Nr.)r�rr�r.rr9r:rrrr"r)r2r4r4r5r��s

zBasicConfigTest.cleanupcCs�tj�|jttjj�d�tjjd}|j|tj�|j|jt	j
�|j}|j|jj
tj�|j|j�|j|jtj�|jtjj|j�dS)NrPr)rr�rBrCr�r.rr(r%r�rrrK�_fmtZBASIC_FORMATr�r
�PercentStylerr")r2r�rr4r4r5�test_no_kwargs�szBasicConfigTest.test_no_kwargscCsRtj��@}tjtjdd�tjd�tjjd�|j|j	�j
�d�WdQRXdS)Nr�)r%rzLog an errorrzERROR:root:Log an error)rrzrr�r�r�rkr�rBr@�strip)r2r|r4r4r5�test_strformatstyle�s

z#BasicConfigTest.test_strformatstylecCsRtj��@}tjtjdd�tjd�tjjd�|j|j	�j
�d�WdQRXdS)Nr)r%rzLog an errorrzERROR:root:Log an error)rrzrr�r�r�rkr�rBr@r)r2r|r4r4r5�test_stringtemplatestyle�s

z(BasicConfigTest.test_stringtemplatestylecCs�dd�}tjdd�|jttjj�d�tjjd}|j|tj�tjdd�}|j|jj	|jj	�|j|jj
|jj
�|j|||d�dS)NcSs|j�|j�tj|�dS)N)r7r�r�)r��h2r�r4r4r5r��sz.BasicConfigTest.test_filename.<locals>.cleanupztest.log)r;rPrr�)rr�rBrCr�r.rr�r%�moder3r�)r2r�r�rLr4r4r5�
test_filename�szBasicConfigTest.test_filenamecCsVdd�}tjddd�tjjd}tjdd�}|j|jj|jj�|j|||d�dS)NcSs|j�|j�tj|�dS)N)r7r�r�)r�rr�r4r4r5r��sz.BasicConfigTest.test_filemode.<locals>.cleanupztest.log�wb)r;�filemoder)	rr�r�r.r�rBr%rr�)r2r�r�rLr4r4r5�
test_filemode�szBasicConfigTest.test_filemodecCs`tj�}|j|j�tj|d�|jttjj	�d�tjj	d}|j
|tj�|j|j|�dS)N)r%rPr)
r#r$r�r7rr�rBrCr�r.rr(r%)r2r%r�r4r4r5�test_streamszBasicConfigTest.test_streamcCs.tjdd�tjjdj}|j|jjd�dS)Nr�)rAr)rr�r�r.rrBrKr)r2rr4r4r5�test_formatszBasicConfigTest.test_formatcCs,tjdd�tjjdj}|j|jd�dS)Nr�)r
r)rr�r�r.rrBr
)r2rr4r4r5�test_datefmtszBasicConfigTest.test_datefmtcCs.tjdd�tjjdj}|j|jtj�dS)Nr)rr)rr�r�r.rrrKrL)r2rr4r4r5�
test_style!szBasicConfigTest.test_stylecCsTtjj}|jtjj|�tjdd�|jtjjd�tjdd�|jtjjd�dS)N�9)r�:)rr�rr�r&r�rB)r2�	old_levelr4r4r5�
test_level'szBasicConfigTest.test_levelcCsp|j}tj�g}tj}|ttjd|d�|ttjd|d�|ttj||d�|ttjtjd�tjddd�dS)Nztest.log)r;r%)r;r.)r%r.)Zloglevelr�)r;r)r�rr(r�rr�r�rb)r2r�r.r%r4r4r5�test_incompatible1s



z!BasicConfigTest.test_incompatiblecCs�tj�tjtj�tj�g}tj�}|dj|�tj|d�|j|dtjj	d�|j|dtjj	d�|j|dtjj	d�|j
|dj�|j
|dj�|j|dj|�|j|dj|dj�dS)Nr�)r.rrP)rr(r�r�r*r,r�rr�r.r�r)r2r.r�r4r4r5�
test_handlers@s

zBasicConfigTest.test_handlersNcsfg�tj����fdd�}tj�td|�tt|�}|dk	rH||d�n|d��j�fifg�dS)Ncs<��tjj}tjjd��jtjj|��j||f�dS)N�d)rr�rr&r�r^)r�r�r)r��old_basic_configr2r4r5�my_basic_configVs
z2BasicConfigTest._test_log.<locals>.my_basic_configr�ztest me)rr�rr�rrB)r2r�rrr�r4)r�rr2r5r�Qs
zBasicConfigTest._test_logcCs|jdtj�dS)Nrj)r�rr`)r2r4r4r5r�hszBasicConfigTest.test_logcCs|jd�dS)Nrn)r�)r2r4r4r5r�kszBasicConfigTest.test_debugcCs|jd�dS)Nrm)r�)r2r4r4r5r�nszBasicConfigTest.test_infocCs|jd�dS)Nrl)r�)r2r4r4r5r�qszBasicConfigTest.test_warningcCs|jd�dS)Nrk)r�)r2r4r4r5r�tszBasicConfigTest.test_errorcCs|jd�dS)Nr�)r�)r2r4r4r5r�wszBasicConfigTest.test_critical)N)rSrTrUr6r<r�rrrr	rr
rrrrrrr�r�r�r�r�r�r�r7r4r4)r4r5r�s,	


rcsLeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	�Z
S)�LoggerAdapterTestcs�tt|�j�tjdd��t�|_tj|_|jj	|j�|j
|jj|j�|j
|jj��fdd�}|j
|�|j
tj
�tj|jdd�|_dS)Ncs�tjdd�<dS)N)rrr4)�old_handler_listr4r5r��sz(LoggerAdapterTest.setUp.<locals>.cleanup)r�r\)r3rr6rrr�r�r�r�r0r�r8r7r5ri�adapter)r2r�)r4)rr5r6|s
zLoggerAdapterTest.setUpcCs�d}d}yddWn6tk
rJ}z|}|jj||j�WYdd}~XnX|jt|jj�d�|jjd}|j|jtj	�|j|j
|�|j|j|jf�|j|j|j
||jf�dS)Nztesting exception: %rrPr)�ZeroDivisionErrorrr�r�rBrCr�r�rr\r�r�r[r4�
__traceback__)r2r��excrEr�r4r4r5�test_exception�s"z LoggerAdapterTest.test_exceptioncCs�yddWn&tk
r2}z
|}WYdd}~XnX|jjd|d�|jt|jj�d�|jjd}|j|j|j||j	f�dS)NrPrz
exc_info test)r[)
rrr�rBrCr�r�r[r4r)r2rErr�r4r4r5�test_exception_excinfo�sz(LoggerAdapterTest.test_exception_excinfocCshd}|jj||j�|jt|jj�d�|jjd}|j|jtj�|j|j	|�|j|j
|jf�dS)Nzcritical test! %rrPr)rr�r�rBrCr�r�rrZr�r�)r2r�r�r4r4r5r��szLoggerAdapterTest.test_criticalcCsD|jjjj}d|jjj_|jt|jjjd|�|j|jjd��dS)N�!r�� )rr�rr�r�r�r��isEnabledFor)r2r�r4r4r5�test_is_enabled_for�s
z%LoggerAdapterTest.test_is_enabled_forcCsR|j|jj��x|jjD]}|jj|�qW|j|jj��|j|jj��dS)N)r1rr-r�r.r8r�)r2r�r4r4r5�test_has_handlers�s
z#LoggerAdapterTest.test_has_handlerscCsLGdd�dtj�}d}||jdd�}||dd�}d|_|jt|�t|��|jtj||j�|jt	|jj
�d�|jj
d}|j|jtj�|j|jd|���|j|j
|jf�|j}|j|j|�|j|jj|�t�}z6||_|j|j|�|j|j|�|j|jj|�Wd||_X|j|j|�|j|j|�|j|jj|�dS)	Nc@seZdZdZdd�ZdS)z.LoggerAdapterTest.test_nested.<locals>.Adapter�AdaptercSs|j�d|��|fS)N� )r�)r2r�rwr4r4r5r��sz6LoggerAdapterTest.test_nested.<locals>.Adapter.processN)rSrTrUr�r�r4r4r4r5r'�sr'zAdapters can be nested, yo.)r�r\ZAdapterAdapterrPrzAdapter AdapterAdapter )rrir�r�rBr�rjrZr�rCr�r�r�r�rrrf)r2r'r�rZadapter_adapterr�Zorig_managerZtemp_managerr4r4r5�test_nested�s2zLoggerAdapterTest.test_nested)rSrTrUr6r r!r�r%r&r)r7r4r4)r4r5r{s

	rcs|eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Z�ZS)�
LoggerTestcsbtt|�j�t�|_tjdd�|_|jj|j�|j	|jj
|j�|j	|jj�|j	tj�dS)NZblah)r3)
r3r*r6r�r�rr`r�r0r�r8r7r5)r2)r4r4r5r6�szLoggerTest.setUpcCs|jt|jjt��dS)N)r�rbr�r&rf)r2r4r4r5�test_set_invalid_level�sz!LoggerTest.test_set_invalid_levelcCs�d}d}yddWn6tk
rJ}z|}|jj||j�WYdd}~XnX|jt|jj�d�|jjd}|j|jtj	�|j|j
|�|j|j|jf�|j|j|j
||jf�dS)Nztesting exception: %rrPr)rr�r�r�rBrCr�r�rr\r�r�r[r4r)r2r�rrEr�r4r4r5r �s"zLoggerTest.test_exceptioncCs2tjtdd��|jt|jjdd�WdQRXdS)NrTrgztest message)r�	swap_attrrr�rbr�rj)r2r4r4r5�!test_log_invalid_level_with_raisesz,LoggerTest.test_log_invalid_level_with_raisec
Cs,tjtdd��|jjdd�WdQRXdS)NrFrgztest message)rr,rr�rj)r2r4r4r5�test_log_invalid_level_no_raise
sz*LoggerTest.test_log_invalid_level_no_raisecsPg�tj|tjd�fdd��|jjdd�|jt��d�|jd�d�dS)	N�print_stackcs�j|j��S)N)r^r@)r�rx)r�r4r5r�sz=LoggerTest.test_find_caller_with_stack_info.<locals>.<lambda>T)r�rPzStack (most recent call last):
r)rr�r�	tracebackr�Z
findCallerrBrC)r2r4)r�r5� test_find_caller_with_stack_infosz+LoggerTest.test_find_caller_with_stack_infoc
Cs�d}d}d}}}}}}}	tj|||||||||	�	}
xFdt|
jj��D]0}|di}|jt|jj|||||||||	d�qRWdS)Nz	my record�
r�r�z
some value)r\�sinfo)r�r�)	rZ_logRecordFactoryrG�__dict__�keysr�rXr��
makeRecord)
r2r3rr��lnor�r�r[r�r3�rvr�r\r4r4r5�%test_make_record_with_extra_overwrites

z0LoggerTest.test_make_record_with_extra_overwritecCs\d}d}d}}}}}}}	ddi}
|jj||||||||
|	d�	}|jd|j�dS)Nz	my recordr2Z	valid_keyz
some value)r\r3)r�r6rr4)r2r3rr�r7r�r�r[r�r3r\r�r4r4r5�(test_make_record_with_extra_no_overwrite%sz3LoggerTest.test_make_record_with_extra_no_overwritecCsB|j|jj��x|jjD]}|jj|�qW|j|jj��dS)N)r1r�r-r.r8r�)r2r�r4r4r5r&.szLoggerTest.test_has_handlerscCs"tjd�}d|_|j|j��dS)Nz
blah.childF)rrrdr�r-)r2Zchild_loggerr4r4r5�test_has_handlers_no_propagate5s
z)LoggerTest.test_has_handlers_no_propagatecCs>|jjj}d|jj_|jt|jjd|�|j|jjd��dS)N�r��)r�rr�r�r�r�r$)r2r�r4r4r5r%:s

zLoggerTest.test_is_enabled_forcCs�tj�}|j|tj�|j|tjd��|j|tjd��|j|tjd�j�|j|tjd�j�|j|tjd�j�|j|tjd��|j|tjd�j�dS)Nrr�zfoo.bar�)rrrr��parentZassertIsNot)r2r�r4r4r5�test_root_logger_aliases@sz#LoggerTest.test_root_logger_aliasescCs$|jttjt�|jttjd�dS)Nsfoo)r�rbrr�any)r2r4r4r5�test_invalid_namesLszLoggerTest.test_invalid_names)rSrTrUr6r+r r-r.r1r9r:r&r;r%r@rBr7r4r4)r4r5r*�s	

	r*c@s$eZdZdd�Zdd�Zdd�ZdS)�BaseFileTestcCs0tj|�tjdd�\}|_tj|�g|_dS)Nz.logztest_logging-2-)rr6r�r�r�r�r7�rmfiles)r2r�r4r4r5r6Ts

zBaseFileTest.setUpcCsBx|jD]}tj|�qWtjj|j�r4tj|j�tj|�dS)N)rDr�r�r�r�r�rr<)r2r�r4r4r5r<Zs
zBaseFileTest.tearDowncCs*|jtjj|�d|d�|jj|�dS)NzLog file %r does not exist)r�)r1r�r�r�rDr^)r2r;r4r4r5�
assertLogFileaszBaseFileTest.assertLogFileN)rSrTrUr6r<rEr4r4r4r5rCQsrCc@seZdZdd�ZdS)�FileHandlerTestcCsxtj|j�tj|jdd�}|j|j�|jtjj	|j��|j
tji��|j|j�|j
tjj	|j��|j�dS)NT)r�)r�r�r�rr�r�r%r�r�r�r�r�r�r1r7)r2�fhr4r4r5�
test_delayiszFileHandlerTest.test_delayN)rSrTrUrHr4r4r4r5rFhsrFc@sBeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zej	dd��Z
d
S)�RotatingFileHandlerTestc	Cstjdtjdd|j�ddd�S)NrlrUrP)rr}r'rR)r2r4r4r5�next_rectsz RotatingFileHandlerTest.next_reccCs.tjj|jdd�}|j|jd��|j�dS)Nr)�maxBytes)rr.r�r�r��shouldRolloverr7)r2�rhr4r4r5�test_should_not_rolloverxsz0RotatingFileHandlerTest.test_should_not_rollovercCs2tjj|jdd�}|j|j|j���|j�dS)NrP)rK)rr.r�r�r1rLrJr7)r2rMr4r4r5�test_should_rollover~sz,RotatingFileHandlerTest.test_should_rollovercCs4tjj|j�}|j|j��|j|j�|j�dS)N)rr.r�r�r�rJrEr7)r2rMr4r4r5�test_file_created�sz)RotatingFileHandlerTest.test_file_createdcCs�dd�}tjj|jddd�}||_|j|j��|j|j�|j|j��|j||jd��|j|j��|j||jd��|jt	j
j||jd���|j�dS)	NcSs|dS)Nz.testr4)r3r4r4r5�namer�sz>RotatingFileHandlerTest.test_rollover_filenames.<locals>.namerr�rP)�backupCountrKz.1z.2z.3)
rr.r�r�rQr�rJrEr�r�r�r�r7)r2rQrMr4r4r5�test_rollover_filenames�sz/RotatingFileHandlerTest.test_rollover_filenamescCs�dd�}dd�}tjj|jddd�}||_||_|j�}|j|�|j|j�|j�}|j|�||jd�}|j|�t	j
}t|d	��0}|j�}	t
j|	�}
|j|
jd
�|j|�WdQRX|j|j��||jd�}|j|�t|d	��0}|j�}	t
j|	�}
|j|
jd
�|j|�WdQRX|j|j��||jd�}t|d	��0}|j�}	t
j|	�}
|j|
jd
�|j|�WdQRX|jt	jj||jd���|j�dS)
NcSs|dS)Nz.gzr4)r3r4r4r5rQ�sz3RotatingFileHandlerTest.test_rotator.<locals>.namercSsXt|d��:}|j�}tj|d�}t|d��}|j|�WdQRXWdQRXtj|�dS)N�rbrfr
)r�rI�zlib�compressrr�r�)�source�destZsfr�
compressedZdfr4r4r5�rotator�sz5RotatingFileHandlerTest.test_rotator.<locals>.rotatorr�rP)rRrKz.1rT�asciiz.2z.3)rr.r�r�rZrQrJr�rEr��linesepr�rIrUZ
decompressrBr�r�r�r�r�r7)r2rQrZrM�m1�m2r��newliner�rYrr4r4r5�test_rotator�sB



"

"
"z$RotatingFileHandlerTest.test_rotatorN)rSrTrUrJrNrOrPrSrZ
requires_zlibr`r4r4r4r5rIssrIc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TimedRotatingFileHandlerTestc
s�tjj|jddd�}tjd�}|j|�tjddi�}|j|�|j|j�t	j
d�tjddi�}|j|�|j�d	}tjj
�}d}xNt|�D]B}|tj|d�}	|j|	jd
��tjj��}|r�|jj��Pq�Wd|}
|�s�tjj|j�\}��fdd�tj|�D�}td|jd�tjd�td|tjd�xJ|D]B}
td|
�tjj||
�}t|d��}t|j��WdQRX�q@W|j||
d�dS)N�SrP)rRz%(asctime)s %(message)sr�ztesting - initialg�������?ztesting - after delayFr�<)�secondsz.%Y-%m-%d_%H-%M-%Sz,No rotated files found, went back %d secondscsg|]}|j��r|�qSr4)r:)rhr�)r�r4r5rj�sz>TimedRotatingFileHandlerTest.test_rollover.<locals>.<listcomp>z
Test time: %sz%Y-%m-%d %H-%M-%S)rxzThe only matching files are: %szContents of %s:r�)r�i,)rr.r�r�r*r,r�r�rEr�r�r7r�r�r��	timedeltaZstrftimer�r�r�rDr^r��listdirrr�rr�r�rIr1)r2rGZfmtZr1Zr2�foundr��GO_BACK�secs�prevr�Zdn�filesr�r�Ztfr4)r�r5�
test_rollover�sB






z*TimedRotatingFileHandlerTest.test_rollovercCsR|j}|ttjj|jddd�|ttjj|jddd�|ttjj|jddd�dS)N�XT)r��WZW7)r�r�rr.r�r�)r2r�r4r4r5�test_invalid�s


z)TimedRotatingFileHandlerTest.test_invalidcCsxd}tjddd�}tjj|jdddd|d�}z<|j|�}|j||d�|j|d
�}|j||d�Wd|j�XdS)Nr��MIDNIGHTrPT)�when�intervalrRr��atTimercr2�$i�i��iiжipi@�)	r�r�rr.r�r��computeRolloverrBr7)r2�currentTimertrMrKr4r4r5�"test_compute_rollover_daily_attime�s
z?TimedRotatingFileHandlerTest.test_compute_rollover_daily_attimec	Cs<ttj��}||d}tjddd�}tj|�j}�xtd�D�]�}tjj|j	d|ddd|d�}z�||krzd||}n||}|d9}|d7}||7}|j
|�}||kr�tdtj�tdt
��|j||�||k�r�|d7}|j
|d�}||k�rtdtj�tdt
��|j||�Wd|j�Xq>WdS)Ni�Qrpr�zW%drPT)rrrsrRr�rt�rczfailed in timezone: %dzlocal vars: %sr2i�i�Qi�i���i`'i�:	iiж)r�r�r�r�Ztm_wdayr�rr.r�r�rvrZtimezone�localsrBr7)	r2rwZtodayrtZwdayZdayrMrLrKr4r4r5�#test_compute_rollover_weekly_attimes8


z@TimedRotatingFileHandlerTest.test_compute_rollover_weekly_attimeN)rSrTrUrlrorxr}r4r4r4r5ra�s*	racKstjf|�tjdd�S)NrP)rd)r�re)r�r4r4r5ri5srirb�Mrc�H�DrzrqZW0r�)ZdaysZhourscCsRtjj|j|dddd�}d}|j|�}||k�r:|dk�r:y�|jrNtj|�}n
tj|�}|d}|d}|d	}	tjj	|d
|d
|	}
||
}t
d||jftjd�t
d
|tjd�t
d|tjd�t
d|	tjd�t
d|
tjd�t
d|tjd�Wn0t
k
�r8t
dtj�dtjd�YnX|j||�|j�dS)NrPrT)rrrsrRr�grqrNr�rrcz
t: %s (%s))rxzcurrentHour: %szcurrentMinute: %szcurrentSecond: %szr: %sz
result: %sz exception in diagnostic code: %s)rr.r�r�rvr�r�r�Z	localtimeZ	_MIDNIGHTrr�rrr[rBr7)r2rr�exprMrwrKr*ZcurrentHourZ
currentMinuteZ
currentSecondr�r�r4r4r5�test_compute_rollover@s6



 r�ztest_compute_rollover_%sz>win32evtlog/win32evtlogutil/pywintypes required for this test.c@seZdZdd�ZdS)�NTEventLogHandlerTestcCs
d}tjd|�}tj|�}ytjjd�}Wn:tjk
rd}z|jdkrRt	j
d���WYdd}~XnXtjddi�}|j|�|j
�|j|tj|��tjtjB}d}d}	tj|||	�}
x4|
D],}|jdkr�q�tj||�}|d	kr�q�d
}Pq�Wd|	}|j||d�dS)
NZApplicationZtest_loggingrz#Insufficient privileges to run testr�zTest Log MessageFrzTest Log Message
Tz3Record not found in event log, went back %d records)r�)�win32evtlogZOpenEventLogZGetNumberOfEventLogRecordsrr.ZNTEventLogHandler�
pywintypesrkZwinerrorrZSkipTestr�r�r7Z
assertLessZEVENTLOG_BACKWARDS_READZEVENTLOG_SEQUENTIAL_READZReadEventLogZ
SourceName�win32evtlogutilZSafeFormatMessager1)r2ZlogtypeZelhZnum_recsr;rEr��flagsrgrhZeventsr�r4r4r5r]fs8





z NTEventLogHandlerTest.test_basicN)rSrTrUr]r4r4r4r5r�dsr�c@seZdZdd�ZdS)�MiscTestCasec
Cs2ddddddddd	d
ddd
h
}tj|t|d�dS)Nr�r�r�ZcurrentframerZStrFormatStylerLZFiltererZPlaceHolderraZ
RootLoggerr�r)�	blacklist)rZcheck__all__r)r2r�r4r4r5�test__all__�szMiscTestCase.test__all__N)rSrTrUr�r4r4r4r5r��sr��LC_ALLrc'Csvtttttttttt	t
ttt
ttttttttttttttttttt t!t"t#t$t%t&g'}t't(j)d�rh|j*t+�t,j-|�dS)Nr).rVr�r�r�r_rqr�r�r�r�r�rrZr�r�rrprirur�r�rrr*rVrFrIr�r�r�r�r�r�r�rar�r�r�r�r�rr.r^r�rZrun_unittest)Ztestsr4r4r5�	test_main�s
r��__main__)N)rbrP)r~rc�)rr�i�Q)r�r�i�Q)rqr�)�rZlogging.handlersZlogging.configr�r~r�r�r�r#r�rBr�rvr�r=rr�r�r�Ztest.support.script_helperrr�rrrr�rr�r�rr+Zhttp.serverrrrZurllib.parserrZsocketserverrr	r
rr�r�r�r�rUZTestCaserrVr�ZSILENTr�ZTERSEZEFFUSIVEr�r�Z	TALKATIVEr�Z
CHATTERBOXZBORINGr�r�r�r�r�r�r�r�rfr	r(r
rrrr/r8rGrMr�rSrUrrVr_r*rorqr�r�r�r�r�r�r�ZIPV6_ENABLEDr�r�r�r�r�rrr
rrZrir}rorprur.r�Z
unittest.mockr�r�rer�Ztzinfor�r�r�r�r�r�r�r�r�rr�r�r�r�rrr*rCrFrIrarirrr�r�r�r�r�Zrun_with_localer�rSr4r4r4r5�<module>s\
fFYP5) 1 NZ
A
D

M41(
0#?U
	Y'WW6OljTn!#



Youez - 2016 - github.com/yon3zu
LinuXploit