o
    7f	                     @  s   d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	 ddl
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mZ ddlmZmZ G dd deZdS )zDTest cases for AST diff (used for fine-grained incremental checking)    )annotationsN)build)PYTHON3_VERSION)CompileError)BuildSource)MypyFile)Options)compare_symbol_table_snapshotssnapshot_symbol_table)test_temp_dir)DataDrivenTestCase	DataSuite)assert_string_arrays_equalparse_optionsc                   @  s&   e Zd ZdgZdddZdddZdS )ASTDiffSuitez	diff.testtestcaser   returnNonec                 C  s   d |j}t|j}|d }t||d}| ||\}}| ||\}}	g }
|r.|
| |r:|
d |
| |d urB|	d usFJ dd}t||d j	}t||	d j	}t
|||}t|D ]}|
| qbt|j|
d|j d|j d	 d S )
N
ztmp/next.py   z
== next ==z3cases where CompileError occurred should not be run__main__zInvalid output (z, line ))joininputdictfilesr   r   extendappendr
   namesr	   sortedr   outputfileline)selfr   	first_src
files_dict
second_srcoptions	messages1files1	messages2files2aprefix	snapshot1	snapshot2difftrigger r2   K/home/ertert/spirit/venv/lib/python3.10/site-packages/mypy/test/testdiff.pyrun_case   s0   



zASTDiffSuite.run_casesourcestrr'   r   ,tuple[list[str], dict[str, MypyFile] | None]c              
   C  sz   d|_ d|_tj|_t|_d|_ztjt	dd |g|t
d}W n ty6 } z|jd fW  Y d }~S d }~ww |j|jfS )NTmain)sourcesr'   alt_lib_path)use_builtins_fixturesshow_tracebackosdevnull	cache_dirr   python_versionallow_empty_bodiesr   r   r   r   messageserrorsr   )r#   r5   r'   resulter2   r2   r3   r   4   s    
zASTDiffSuite.buildN)r   r   r   r   )r5   r6   r'   r   r   r7   )__name__
__module____qualname__r   r4   r   r2   r2   r2   r3   r      s    
r   )__doc__
__future__r   r=   mypyr   mypy.defaultsr   mypy.errorsr   mypy.modulefinderr   
mypy.nodesr   mypy.optionsr   mypy.server.astdiffr	   r
   mypy.test.configr   mypy.test.datar   r   mypy.test.helpersr   r   r   r2   r2   r2   r3   <module>   s    