o
    DDin                     @   s   d dl Z d dl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mZmZ d dlmZmZmZmZ d dlmZ G d	d
 d
eZe jdeeddf fddZG dd de
ZdS )    N)Path)TemporaryDirectory)Dict	Generator)TestCase)BaseExpressionCallmatchersName)CodemodContextgather_files(parallel_exec_transform_with_prettyprintVisitorBasedCodemodCommand)AddImportsVisitorc                       sL   e Zd Zdedeeef ddf fddZdedede	f fd	d
Z
  ZS )PrintToPPrintCommandcontextkwargsreturnNc                    s$   t  j|fi | d| jjd< d S )NTPPRINT_WAS_HERE)super__init__r   scratch)selfr   r   	__class__ N/var/www/Datamplify/venv/lib/python3.10/site-packages/libcst/tests/test_e2e.pyr      s   zPrintToPPrintCommand.__init__original_nodeupdated_nodec                    s\   | j jd s
tdt|tjtddr't| j dd |j	tddS t
 ||S )Nr   zScratch space lostprint)funcpprint)r   r   AssertionErrormmatchesr   r
   r   add_needed_importwith_changesr   
leave_Call)r   r   r   r   r   r   r'      s   zPrintToPPrintCommand.leave_Call)__name__
__module____qualname__r   r   strobjectr   r   r   r'   __classcell__r   r   r   r   r      s    ""r   r   c               
   c   sn    t  } t %}zt| }t | |V  W t |  nt |  w W d    d S 1 s0w   Y  d S )N)osgetcwdr   r   resolvechdir)cwdtemp_dirwsr   r   r   temp_workspace%   s   
"r5   c                   @   s   e Zd ZdddZdS )ToolE2ETestr   Nc           	   
   C   s  dt t fdt ffD ]|\}}| |k t X}|d }|d |d }|  |d }|  td}t||dd	d
}t	| | 
d|j | 
d|j | 
d|j | d| d | d| d W d    n1 ssw   Y  W d    n1 sw   Y  qd S )Ninstantiatedclassz
example.pyzprint("Hello")zother.pyzdir.py.FT)format_codehide_progress   r   zfrom pprint import pprintzimport missing in example.pyzimport found in other.py)r   r   subTestr5   
write_texttouchmkdirr   r   r   assertEqual	successesskipsfailuresassertIn	read_textassertNotIn)	r   msgcommandtmpexampleotheradirfilesresultr   r   r   test_leaky_codemod2   sH   
 zToolE2ETest.test_leaky_codemod)r   N)r(   r)   r*   rP   r   r   r   r   r6   1   s    r6   )
contextlibr.   pathlibr   tempfiler   typingr   r   unittestr   libcstr   r   r	   r#   r
   libcst.codemodr   r   r   r   libcst.codemod.visitorsr   r   contextmanagerr5   r6   r   r   r   r   <module>   s    