B
    '(b	                 @   s   d Z ddlZddlmZmZmZ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 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)    N)ListTupleDictOptional)build)BuildSource)PYTHON3_VERSION)CompileError)MypyFile)Options)snapshot_symbol_tablecompare_symbol_table_snapshots)test_temp_dir)DataDrivenTestCase	DataSuite)assert_string_arrays_equalparse_optionsc               @   sL   e Zd ZdgZeddddZeeee	e e
eeef  f dddZdS )	ASTDiffSuitez	diff.testN)testcasereturnc             C   s   d |j}t|j}|d }t||d}| ||\}}| ||\}}	g }
|r\|
| |rt|
d |
| |d k	r|	d k	stdd}t	||d j
}t	||	d j
}t|||}xt|D ]}|
| qW t|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appendAssertionErrorr   namesr   sortedr   outputfileline)selfr   Z	first_srcZ
files_dictZ
second_srcoptionsZ	messages1Zfiles1Z	messages2Zfiles2aprefixZ	snapshot1Z	snapshot2ZdiffZtrigger r*   A/home/dcms/DCMS/lib/python3.7/site-packages/mypy/test/testdiff.pyrun_case   s,    



zASTDiffSuite.run_case)sourcer'   r   c          
   C   sn   d|_ d|_tj|_t|_ytjtdd |g|t	d}W n( t
k
r` } z
|jd fS d }~X Y nX |j|jfS )NTmain)sourcesr'   Zalt_lib_path)Zuse_builtins_fixturesshow_tracebackosdevnull	cache_dirr   python_versionr   r   r   r	   messageserrorsr   )r&   r-   r'   resulter*   r*   r+   r   4   s    zASTDiffSuite.build)__name__
__module____qualname__r   r   r,   strr   r   r   r   r   r
   r   r*   r*   r*   r+   r      s   r   )__doc__r1   typingr   r   r   r   Zmypyr   Zmypy.modulefinderr   Zmypy.defaultsr   Zmypy.errorsr	   Z
mypy.nodesr
   Zmypy.optionsr   Zmypy.server.astdiffr   r   Zmypy.test.configr   Zmypy.test.datar   r   Zmypy.test.helpersr   r   r   r*   r*   r*   r+   <module>   s   