
    eG                     ^   d dl Z d dlZd dlZd dlZd dlmZ ej                            ej                            e	          d                    Z
ej                            d ej                            e
d                     dddddd d	Z G d
 de j                  Z G d de          ZdS )    N)ComparisonTestCasez..2   (         
   )CRITICALERRORWARNINGINFODEBUGVERBOSEc                   B     e Zd ZdZ fdZd Zd Zd	dZd Zd Z	 xZ
S )
MockLoggingHandlerz
    Mock logging handler to check for expected logs used by
    LoggingComparisonTestCase.

    Messages are available from an instance's ``messages`` dict, in
    order, indexed by a lowercase log level string (e.g., 'debug',
    'info', etc.).c                 n    g g g g g g d| _         ddddd| _         t                      j        |i | d S )Nr   r   r   r
   r	   r   zparam.param.warning()zparam.param.message()zparam.param.verbose()zparam.param.debug())r   r   r   r   )messagesparam_methodssuper__init__)selfargskwargs	__class__s      5lib/python3.11/site-packages/holoviews/tests/utils.pyr   zMockLoggingHandler.__init__   sb    "$bR"$"D D .*-)	+ +
 	$)&)))))    c                     |                                   	 | j        |j                                     |                                           |                                  dS # |                                  w xY w)z5Store a message to the instance's messages dictionaryN)acquirer   	levelnameappend
getMessagerelease)r   records     r   emitzMockLoggingHandler.emit$   sa    	M&*+2263D3D3F3FGGGLLNNNNNDLLNNNNs   7A# #A9c                 r    |                                   g g g g g g d| _        |                                  d S )Nr   )r   r   r"   )r   s    r   resetzMockLoggingHandler.reset,   s>    "$bR"$"D Dr      c                 B    d | j         |         | d         D             S )z4Returns the last n lines captured at the given levelc                 ,    g | ]}t          |          S  )str).0els     r   
<listcomp>z+MockLoggingHandler.tail.<locals>.<listcomp>4   s    <<<BB<<<r   N)r   )r   levelns      r   tailzMockLoggingHandler.tail2   s(    <<$-"6rss";<<<<r   c           	         d}|                      |d          }t          |          dk    r<t          d                    | j        |         t          |                              |d                             |          sPt          |                    | j        |         t          |d                   t          |                              | j        |                             d           d	S )
zq
        Assert that the last line captured at the given level ends with
        a particular substring.
        z6

{method}: {last_line}
does not end with:
{substring}r'   r0   r   $Missing {method} output: {substring}method	substringr6   	last_liner7   N)	r1   lenAssertionErrorformatr   reprendswithr   popr   r/   r7   msgr9   s        r   assertEndsWithz!MockLoggingHandler.assertEndsWith6   s    
 IIIeqI))	y>>Q !G!N!N)%0DOO "O "M "M N N N|$$Y// 	) 43Ee3L6:9Q<6H6H6:9oo ", "G "G H H H M% $$R(((((r   c           	         d}|                      |d          }t          |          dk    r<t          d                    | j        |         t          |                              ||d         vrPt          |                    | j        |         t          |d                   t          |                              | j        |                             d           d	S )
zp
        Assert that the last line captured at the given level contains a
        particular substring.
        z5

{method}: {last_line}
does not contain:
{substring}r'   r3   r   r4   r5   r8   r:   N)r1   r;   r<   r=   r   r>   r   r@   rA   s        r   assertContainsz!MockLoggingHandler.assertContainsH   s    
 HIIeqI))	y>>Q !G!N!N)%0DOO "O "M "M N N NIaL(( 43Ee3L6:9Q<6H6H6:9oo ", "G "G H H H M% $$R(((((r   )r'   )__name__
__module____qualname____doc__r   r$   r&   r1   rC   rE   __classcell__r   s   @r   r   r      s         * * * * *    = = = =) ) )$) ) ) ) ) ) )r   r   c                   ,     e Zd ZdZ fdZ fdZ xZS )LoggingComparisonTestCasez
    ComparisonTestCase with support for capturing param logging output.

    Subclasses must call super setUp to make the
    tests independent. Testing can then be done via the
    self.log_handler.tail and self.log_handler.assertEndsWith methods.
    c                    t                                                       t          j                                        }|j        | _        g |_        t          d          | _        |                    | j                   d S )Nr   )r/   )	r   setUpparamparameterized
get_loggerhandlersr   log_handler
addHandler)r   logr   s     r   rO   zLoggingComparisonTestCase.setUpc   sf    !,,..-G<<<t'(((((r   c                 f   t                                                       t          j                                        }| j        |_        | j        j        }| j                                         |	                                D ]+\  }}|D ]#}|
                    t          |         |           $,d S )N)r   tearDownrP   rQ   rR   rS   rT   r   r&   itemsrV   LEVELS)r   rV   r   r/   msgsrB   r   s         r   rX   z"LoggingComparisonTestCase.tearDownk   s    !,,..}#,   #>>++ 	, 	,KE4 , ,us++++,	, 	,r   )rF   rG   rH   rI   rO   rX   rJ   rK   s   @r   rM   rM   Z   s[         ) ) ) ) ), , , , , , , , ,r   rM   )loggingossysrP   holoviews.element.comparisonr   pathabspathsplit__file__cwdinsertjoinrZ   Handlerr   rM   r*   r   r   <module>rh      s    				 



  ; ; ; ; ; ;goobgmmH--a011 27<<T** + + + 2"b!
% 
%F) F) F) F) F) F) F) F)R, , , , , 2 , , , , ,r   