o
    bK6                     @   s  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 d dl	m
Z
 d dlZG dd deZdd Zd	d
 Zejdd Zejdddddfdddddgifdddfddddddgifddfdddddgifdddddgifddfdd dd!fddddd"gifddd#fdddddd"gifdd$fddddd%gifddddd&gifdd'fgd(d) Zd*d+ Zejd,d-d.gd/d0 Zd1d2 Zd3d4 ZG d5d6 d6ZdS )7    N)utils)check_messagesget_node_last_lineno)InvalidMessageErrorc                   @   s<   e Zd ZG dd deZG dd deZdd Zdd Zd	S )
TestPyLintASTWalkerc                   @   s   e Zd Zdd Zdd ZdS )zTestPyLintASTWalker.MockLinterc                 C   s
   || _ d S N)_msgs)selfmsgs r   Y/var/www/secure340b-portal/env/lib/python3.10/site-packages/pylint/test/unittest_utils.py__init__!      
z'TestPyLintASTWalker.MockLinter.__init__c                 C   s   | j |dS NT)r   get)r	   msgidr   r   r   is_message_enabled$   s   z1TestPyLintASTWalker.MockLinter.is_message_enabledN)__name__
__module____qualname__r   r   r   r   r   r   
MockLinter    s    r   c                   @   sV   e Zd Zdd Zeddd Zeddd Zedd	d
d Zeddd ZdS )zTestPyLintASTWalker.Checkerc                 C   s   t  | _d S r   )setcalledr	   r   r   r   r   (   s   z$TestPyLintASTWalker.Checker.__init__first-messagec                 C      | j d d S )Nmoduler   addr	   r   r   r   r   visit_module+      z(TestPyLintASTWalker.Checker.visit_modulesecond-messagec                 C      t r   NotImplementedErrorr   r   r   r   
visit_call/      z&TestPyLintASTWalker.Checker.visit_callthird-messagec                 C   r   )N
assignnamer   r   r   r   r   visit_assignname3   r!   z,TestPyLintASTWalker.Checker.visit_assignnamec                 C   r#   r   r$   r   r   r   r   leave_assignname7   r'   z,TestPyLintASTWalker.Checker.leave_assignnameN)	r   r   r   r   r   r    r&   r*   r+   r   r   r   r   Checker'   s    


r,   c                 C   sT   |  dddd}t|}|  }|| |td ddh|jks(J d S )NTF)r   r"   r(   z
x = func()r   r)   )	r   r   PyLintASTWalkerr,   add_checkerwalkastroidparser   )r	   linterwalkercheckerr   r   r   test_check_messages;   s   


z'TestPyLintASTWalker.test_check_messagesc                 C   s   G dd dt }| ddi}t|}| }|| tjdd td |t	
d |jr5J W d    d S 1 s@w   Y  d S )Nc                   @   s$   e Zd Zdd Zeddd ZdS )z<TestPyLintASTWalker.test_deprecated_methods.<locals>.Checkerc                 S   
   d| _ d S )NFr   r   r   r   r   r   G   r   zETestPyLintASTWalker.test_deprecated_methods.<locals>.Checker.__init__r   c                 S   r6   r   r7   r	   noder   r   r   visit_assnameJ   s   
zJTestPyLintASTWalker.test_deprecated_methods.<locals>.Checker.visit_assnameN)r   r   r   r   r   r:   r   r   r   r   r,   F   s    r,   r   T)recordalwayszx = 1)objectr   r   r-   r.   warningscatch_warningssimplefilterr/   r0   r1   r   )r	   r,   r2   r3   r4   r   r   r   test_deprecated_methodsE   s   


"z+TestPyLintASTWalker.test_deprecated_methodsN)r   r   r   r=   r   r,   r5   rA   r   r   r   r   r      s
    
r   c                  C   s8   t dt dg} td| sJ td| sJ d S )N.*enchilada.*unittest_.*zunittest_utils.pyzcheese_enchiladas.xmlrecompiler   Z_basename_in_blacklist_repatternsr   r   r   $test__basename_in_blacklist_re_matchY      rI   c                  C   s8   t dt dg} td| rJ td| rJ d S )NrB   rC   ztest_utils.pyzenchilad.pyrD   rG   r   r   r   &test__basename_in_blacklist_re_nomatch_   rJ   rK   c                   C   s   t  S r   )r   ZMessagesStorer   r   r   r   storee   s   rL   zmessages,expected)message onemsg-symbol-onemsg description)message twomsg-symbol-tworO   )W1234ZW4321zdInconsistent checker part in message id 'W4321' (expected 'x12xx' because we already had ['W1234']).rP   rQ   rO   Z	old_names)rR   z
old-symbol)ZW1233rR   zWMessage id 'W1234' cannot have both 'msg-symbol-one' and 'old-symbol' as symbolic name.)rR   ZW1235rM   rN   )W1201old-symbol-one)rS   zold-symbol-twoz[Message id 'W1201' cannot have both 'old-symbol-one' and 'old-symbol-two' as symbolic name.)rM   
msg-symbolrO   )rP   rU   rO   zTMessage symbol 'msg-symbol' cannot be used for 'W1234' and 'W1235' at the same time.)W1230rN   zXMessage symbol 'msg-symbol-one' cannot be used for 'W1230' and 'W1234' at the same time.zXMessage symbol 'msg-symbol-one' cannot be used for 'W1234' and 'W1235' at the same time.)rV   rT   )ZW1231rT   zXMessage symbol 'old-symbol-one' cannot be used for 'W1230' and 'W1235' at the same time.c                    s`   G  fdddt }tt}| |  W d    n1 s w   Y  t|j|ks.J d S )Nc                       s   e Zd ZdZ ZdS )z$test_register_error.<locals>.Checkerr4   Nr   r   r   namer
   r   messagesr   r   r,      s    r,   )r=   pytestraisesr   register_messages_from_checkerstrvalue)rL   rZ   expectedr,   cmr   rY   r   test_register_errorj   s
   frb   c                 C   s@   G dd dt }G dd dt }| |  t| ddid d S )Nc                   @      e Zd ZdZddiZdS )z?test_register_error_new_id_duplicate_of_new.<locals>.CheckerOneZchecker_onerR   )rM   rN   zmsg description.NrW   r   r   r   r   
CheckerOne       rd   c                   @   rc   )z?test_register_error_new_id_duplicate_of_new.<locals>.CheckerTwoZchecker_tworR   rP   rQ   zanother msg description.NrW   r   r   r   r   
CheckerTwo   re   rg   rR   rf   z[Message id 'W1234' cannot have both 'msg-symbol-one' and 'msg-symbol-two' as symbolic name.)r=   r]   rb   )rL   rd   rg   r   r   r   +test_register_error_new_id_duplicate_of_new   s   rh   zmsgid,expected)ZQ1234zBad message type Q in 'Q1234')ZW12345zInvalid message id 'W12345'c              	   C   sT   t t}td| dddd W d    n1 sw   Y  t|j|ks(J d S )Nr4   msgdescrsymbolscope)r[   r\   r   r   ZMessageDefinitionr^   r_   )r   r`   ra   r   r   r    test_create_invalid_message_type   s   rm   c                  C   s2   t d} t| d}| }|ddgksJ dS )z\decoding_stream should fall back to *some* decoding when given an
    unknown encoding.
    s   foo
barzgarbage-encodingzfoo
barN)ioBytesIOr   decoding_stream	readlines)	binary_iostreamretr   r   r   %test_decoding_stream_unknown_encoding   s   
rv   c                  C   s0   t dd} t| d}| dksJ d S )Nu   €cp1252)ro   rp   encoder   rq   read)rs   rt   r   r   r   #test_decoding_stream_known_encoding  s   rz   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!S )"TestGetNodeLastLinenoc                 C      t d}t|dksJ d S )Nz
            pass
           r0   Zextract_noder   r8   r   r   r    test_get_node_last_lineno_simple	  s   z6TestGetNodeLastLineno.test_get_node_last_lineno_simplec                 C   r|   )NzP
            if True:
                print(1)
                pass
               r~   r8   r   r   r   #test_get_node_last_lineno_if_simple     z9TestGetNodeLastLineno.test_get_node_last_lineno_if_simplec                 C   r|   )Nz
            if True:
                print(1)
            elif False:
                print(2)
            else:
                print(3)
               r~   r8   r   r   r   (test_get_node_last_lineno_if_elseif_else     
z>TestGetNodeLastLineno.test_get_node_last_lineno_if_elseif_elsec                 C   r|   )Nz>
            while True:
                print(1)
               r~   r8   r   r   r   test_get_node_last_lineno_while(     z5TestGetNodeLastLineno.test_get_node_last_lineno_whilec                 C   r|   )Nzi
            while True:
                print(1)
            else:
                print(2)
               r~   r8   r   r   r   $test_get_node_last_lineno_while_else1     z:TestGetNodeLastLineno.test_get_node_last_lineno_while_elsec                 C   r|   )NzH
            for x in range(0, 5):
                print(1)
            r   r~   r8   r   r   r   test_get_node_last_lineno_for<  r   z3TestGetNodeLastLineno.test_get_node_last_lineno_forc                 C   r|   )Nzs
            for x in range(0, 5):
                print(1)
            else:
                print(2)
            r   r~   r8   r   r   r   "test_get_node_last_lineno_for_elseE  r   z8TestGetNodeLastLineno.test_get_node_last_lineno_for_elsec                 C   r|   )Nz
            try:
                print(1)
            except ValueError:
                print(2)
            except Exception:
                print(3)
            r   r~   r8   r   r   r   test_get_node_last_lineno_tryP  r   z3TestGetNodeLastLineno.test_get_node_last_lineno_tryc                 C   r|   )Nz
            try:
                print(1)
            except Exception:
                print(2)
                print(3)
            else:
                print(4)
               r~   r8   r   r   r   )test_get_node_last_lineno_try_except_else]  s   z?TestGetNodeLastLineno.test_get_node_last_lineno_try_except_elsec                 C   r|   )Nz
            try:
                print(1)
            except Exception:
                print(2)
            finally:
                print(4)
            r   r~   r8   r   r   r   ,test_get_node_last_lineno_try_except_finallyk  r   zBTestGetNodeLastLineno.test_get_node_last_lineno_try_except_finallyc                 C   r|   )Nz
            try:
                print(1)
            except Exception:
                print(2)
            else:
                print(3)
            finally:
                print(4)
            	   r~   r8   r   r   r   1test_get_node_last_lineno_try_except_else_finallyx  s   zGTestGetNodeLastLineno.test_get_node_last_lineno_try_except_else_finallyc                 C   r|   )NzT
            with x as y:
                print(1)
                pass
            r   r~   r8   r   r   r   test_get_node_last_lineno_with  r   z4TestGetNodeLastLineno.test_get_node_last_lineno_withc                 C   r|   )NzW
            def x(a, b):
                print(a, b)
                pass
            r   r~   r8   r   r   r    test_get_node_last_lineno_method  r   z6TestGetNodeLastLineno.test_get_node_last_lineno_methodc                 C   r|   )Nzl
            @decor()
            def x(a, b):
                print(a, b)
                pass
            r   r~   r8   r   r   r   #test_get_node_last_lineno_decorator  r   z9TestGetNodeLastLineno.test_get_node_last_lineno_decoratorc                 C   r|   )Nz
            class C(object):
                CONST = True

                def x(self, b):
                    print(b)

                def y(self):
                    pass
                    pass
            
   r~   r8   r   r   r   test_get_node_last_lineno_class  s   z5TestGetNodeLastLineno.test_get_node_last_lineno_classc                 C   r|   )Na  
            class C(object):
                CONST = True

                def y(self):
                    try:
                        pass
                    except:
                        pass
                    finally:
                        pass
               r~   r8   r   r   r   "test_get_node_last_lineno_combined  s   z8TestGetNodeLastLineno.test_get_node_last_lineno_combinedN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r{     s"    
		

r{   )ro   rE   r>   r0   Zpylintr   Zpylint.checkers.utilsr   r   Zpylint.exceptionsr   r[   r=   r   rI   rK   ZfixturerL   markZparametrizerb   rh   rm   rv   rz   r{   r   r   r   r   <module>   s   :

		
		
e

