o
    b                     @   sV  d Z ddlZddlZddlZddlmZmZmZ ddlm	Z	m
Z
 ejdkZdejdd  ZeeeedZeeeed	ZdZd
ZedZejdkrPdndZdd ZG dd deZG dd deZdd Zejjdeedd eeD ddd Zedkrdejv rdZej d e!ejd krejd  Zejd = e"ej dS dS )!z*functional/non regression tests for pylint    N)abspathdirnamejoin)_get_tests_infolinter)   r   z%d%d%dr   inputmessagesFz^func_i\d\d\d\d$)r   r   ' c                 C   s   d|j d|jf S )zFfunction used to replace default __str__ method of exception instanceszin %s
:: %sz, )filer   args)selfex r   T/var/www/secure340b-portal/env/lib/python3.10/site-packages/pylint/test/test_func.pyexception_str(   s   r   c                   @   sT   e Zd ZdZdZeZeZdZdZdZ	dZ
dd Zdd Zdd	 Zd
d Zdd ZdS )LintTestUsingModuleNr   modulec                    s>    j d  j g} jr| fdd jD 7 } | d S )N.c                    s&   g | ]\}} j d |dd  qS )z.%s.pyr   )packagereplace).0name_r   r   r   
<listcomp>?   s    z;LintTestUsingModule._test_functionality.<locals>.<listcomp>)r   r   depends_test)r   tocheckr   r   r   _test_functionality;   s   z'LintTestUsingModule._test_functionalityc                 C   s$   |    d | d ksJ d S )N
)_get_expectedstrip)r   gotr   r   r   _check_resultE   s   $z!LintTestUsingModule._check_resultc              
   C   s   t | jr| jd n| jd z| j| W n ty8 } z| jj	  ||_
t| t|_ d }~ww | | jj	  d S )NI)INFO_TEST_RGXmatchr   r   enabledisablecheck	Exceptionreporterfinalizer   printr   __str__r&   )r   r    r   r   r   r   r   H   s   zLintTestUsingModule._testc                 C   s   | j d S )NZfunc_noerror_)r   
startswithr   r   r   r   _has_outputX   s   zLintTestUsingModule._has_outputc                 C   sR   |   r'| jr't| jd}|  d W  d    S 1 s w   Y  d S dS )Nrr"   r   )r3   outputopenreadr$   )r   fobjr   r   r   r#   [   s
   $z!LintTestUsingModule._get_expected)__name__
__module____qualname__	INPUT_DIRZDEFAULT_PACKAGEr   r   r   r   r5   
_TEST_TYPEr!   r&   r   r3   r#   r   r   r   r   r   -   s    
r   c                   @   s   e Zd ZdZdd ZdS )LintTestUpdateupdatec                 C   sx   |   r8z|  }W n ty   d}Y nw ||kr:t| jd}|| W d    d S 1 s1w   Y  d S d S d S )Nr   w)r3   r#   IOErrorr6   r5   write)r   r%   expectedr8   r   r   r   r&   g   s   "zLintTestUpdate._check_resultN)r9   r:   r;   r=   r&   r   r   r   r   r>   c   s    r>   c                 C   s   | r	t | j}ndd }g }tttddD ](\}}||r#|dr$q|dddd }ttt|d}|	|||f qt
rC|S t|d	k sMJ d
|S )Nc                 S   s   dS )N   r   )xr   r   r   <lambda>v   s    zgen_tests.<locals>.<lambda>Zfunc_r   )z.pycz	$py.classr   r   rD      z&Please do not add new test cases here.)recompilesearchr   r<   MSG_DIRendswithr   splitappendUPDATElen)Z
filter_rgxZ	is_to_runtestsmodule_filemessages_filebasedependenciesr   r   r   	gen_testsr   s   rV   z&module_file,messages_file,dependenciesc                 C   s   g | ]}|d  qS )r   r   )r   or   r   r   r      s    r   )idsc                 C   s@   t rt nt }| dd|_||_|pd |_t|_|  d S )Nr   r   )	rO   r>   r   r   r   r5   r   r<   r!   )rR   rS   rU   LTr   r   r   test_functionality   s   
rZ   __main__z-uTrD   )#__doc__sysrH   Zpytestos.pathr   r   r   Zpylint.testutilsr   r   version_infoZPY3KZSYS_VERS_STR__file__r<   rK   Z
FILTER_RGXrO   rI   r(   quoter   objectr   r>   rV   markZparametrizerZ   r9   argvremoverP   mainr   r   r   r   <module>   sB   

6


