§
    ÷yIfj  ã                  óœ   — d dl mZ d dlZd dlmZmZ d dlmZ d dlm	Z	 d dl
mZmZ d dlmZ d dlmZ d d	lmZ d d
lmZ  G d„ d¦  «        ZdS )é    )ÚannotationsN)Ú	GeneratorÚIterator)ÚAny)Únodes)ÚIS_PYPYÚ	PY39_PLUS)Úlinter)ÚMessageTest)ÚUnittestLinter)Ú	ASTWalkerc                  ó†   — e Zd ZU dZded<   i Zded<   dd„Zej        dd
„¦   «         Z	ej        ddœdd„¦   «         Z
dd„ZdS )ÚCheckerTestCasezBA base testcase class for unit testing individual checker classes.r   ÚCHECKER_CLASSzdict[str, Any]ÚCONFIGÚreturnÚNonec                ó  — t          ¦   «         | _        |                      | j        ¦  «        | _        | j                             ¦   «         D ]%\  }}t          | j        j        j        ||¦  «         Œ&| j                             ¦   «          d S ©N)	r   r
   r   Úcheckerr   ÚitemsÚsetattrÚconfigÚopen)ÚselfÚkeyÚvalues      úV/var/www/piapp/venv/lib/python3.11/site-packages/pylint/testutils/checker_test_case.pyÚsetup_methodzCheckerTestCase.setup_method   s~   € Ý$Ñ&Ô&ˆŒØ×)Ò)¨$¬+Ñ6Ô6ˆŒØœ+×+Ò+Ñ-Ô-ð 	<ð 	<‰JˆC�Ý�D”LÔ'Ô.°°UÑ;Ô;Ð;Ð;ØŒ×ÒÑÔÐÐÐó    úIterator[None]c              #  ól   K  — |                       ¦   «         5  dV — ddd¦  «         dS # 1 swxY w Y   dS )z6Assert that no messages are added by the given method.N)ÚassertAddsMessages)r   s    r   ÚassertNoMessagesz CheckerTestCase.assertNoMessages#   s‡   è è € ð ×$Ò$Ñ&Ô&ð 	ð 	ØˆEˆEˆEð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   —)©-°-F)Úignore_positionÚmessagesr   r%   ÚboolúGenerator[None, None, None]c             '  ó   K  — dV — | j                              ¦   «         }d}d                     d„ |D ¦   «         ¦  «        p|}d                     d„ |D ¦   «         ¦  «        p|}d|› d|› d�}t          |¦  «        t          |¦  «        k    s
J |¦   «         ‚t	          ||¦  «        D ]æ\  }}	|j        |	j        k    s
J |¦   «         ‚|j        |	j        k    s
J |¦   «         ‚|j        |	j        k    s
J |¦   «         ‚|j        |	j        k    s
J |¦   «         ‚|rŒp|j	        |	j	        k    s
J |¦   «         ‚|j
        |	j
        k    s
J |¦   «         ‚t          rt          r4|j        |	j        k    s
J |¦   «         ‚|j        |	j        k    s
J |¦   «         ‚ŒçdS )aò  Assert that exactly the given method adds the given messages.

        The list of messages must exactly match *all* the messages added by the
        method. Additionally, we check to see whether the args in each message can
        actually be substituted into the message string.

        Using the keyword argument `ignore_position`, all checks for position
        arguments (line, col_offset, ...) will be skipped. This can be used to
        just test messages for the correct node.
        NzNo message.ú
c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r   ©Úrepr©Ú.0Úms     r   ú	<genexpr>z5CheckerTestCase.assertAddsMessages.<locals>.<genexpr>:   s(   è è € Ð7Ð7¨�T !™WœWÐ7Ð7Ð7Ð7Ð7Ð7r    c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r   r,   r.   s     r   r1   z5CheckerTestCase.assertAddsMessages.<locals>.<genexpr>;   s(   è è € Ð1Ð1¨�D ™GœGÐ1Ð1Ð1Ð1Ð1Ð1r    z3Expected messages did not match actual.

Expected:
z

Got:
)r
   Úrelease_messagesÚjoinÚlenÚzipÚmsg_idÚnodeÚargsÚ
confidenceÚlineÚ
col_offsetr   r	   Úend_lineÚend_col_offset)
r   r%   r&   ÚgotÚno_msgÚexpectedÚgot_strÚmsgÚexpected_msgÚ
gotten_msgs
             r   r#   z"CheckerTestCase.assertAddsMessages)   s  è è € ð 	ˆˆˆØŒk×*Ò*Ñ,Ô,ˆØˆØ—9’9Ð7Ð7¨hÐ7Ñ7Ô7Ñ7Ô7ÐA¸6ˆØ—)’)Ð1Ð1¨SÐ1Ñ1Ô1Ñ1Ô1Ð;°Vˆð<Ø$ð<ð <Ø07ð<ð <ð <ð 	õ
 �8‰}Œ}¥ C¡¤Ò(Ð(Ð(¨#Ñ(Ô(Ð(å(+¨H°cÑ(:Ô(:ð 	Uð 	UÑ$ˆL˜*ØÔ&¨*Ô*;Ò;Ð;Ð;¸SÑ;Ô;Ð;ØÔ$¨
¬Ò7Ð7Ð7¸Ñ7Ô7Ð7ØÔ$¨
¬Ò7Ð7Ð7¸Ñ7Ô7Ð7ØÔ*¨jÔ.CÒCÐCÐCÀSÑCÔCÐCàð ààÔ$¨
¬Ò7Ð7Ð7¸Ñ7Ô7Ð7ØÔ*¨jÔ.CÒCÐCÐCÀSÑCÔCÐCÝð U�ið UØ#Ô,°
Ô0CÒCÐCÐCÀSÑCÔCÐCØ#Ô2°jÔ6OÒOÐOÐOÐQTÑOÔOÐOøð	Uð 	Ur    r8   únodes.NodeNGc                óŒ   — t          t          ¦  «        }|                     | j        ¦  «         |                     |¦  «         dS )z!Recursive walk on the given node.N)r   r
   Úadd_checkerr   Úwalk)r   r8   Úwalkers      r   rI   zCheckerTestCase.walkS   s=   € å�6Ñ"Ô"ˆØ×Ò˜4œ<Ñ(Ô(Ð(Ø�Š�DÑÔÐÐÐr    N)r   r   )r   r!   )r&   r   r%   r'   r   r(   )r8   rF   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r   Ú
contextlibÚcontextmanagerr$   r#   rI   © r    r   r   r      s¿   € € € € € € ØLÐLð ÐÐÑØ€FÐÐÐÑðð ð ð ð Ôðð ð ñ Ôðð
 Ôà>Cð'Uð 'Uð 'Uð 'Uð 'Uñ Ôð'UðRð ð ð ð ð r    r   )Ú
__future__r   rP   Úcollections.abcr   r   Útypingr   Úastroidr   Úpylint.constantsr   r	   Ú#pylint.testutils.global_test_linterr
   Úpylint.testutils.output_liner   Ú pylint.testutils.unittest_linterr   Úpylint.utilsr   r   rR   r    r   ú<module>r\      sý   ðð
 #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð à /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø "Ð "Ð "Ð "Ð "Ð "ðCð Cð Cð Cð Cñ Cô Cð Cð Cð Cr    