o
    JAfl  ć                   @   s¢   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
 ej ej e”d”Zej ed”ZG dd dejZedkrOe 
”  dS dS )é    N)ŚmainŚdatazpy2_test_grammar.pyc                   @   sL   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S )ŚTestMainc                 C   s
   d | _ d S ©N)Śtemp_dir©Śself© r	   ś./usr/lib/python3.10/lib2to3/tests/test_main.pyŚsetUp   s   
zTestMain.setUpc                 C   s(   t jjd d = | jrt | j” d S d S r   )ŚloggingŚrootŚhandlersr   ŚshutilŚrmtreer   r	   r	   r
   ŚtearDown   s   ’zTestMain.tearDownc                 C   sZ   t j}t j}t j}|t _|t _|t _zt d|”W |t _|t _|t _S |t _|t _|t _w )Nzlib2to3.fixes)ŚsysŚstdinŚstdoutŚstderrr   )r   ŚargsZ
in_captureZout_captureZerr_captureZ
save_stdinZsave_stdoutZsave_stderrr	   r	   r
   Śrun_2to3_capture   s   žzTestMain.run_2to3_capturec                 C   st   t  d”}t  ” }t d”|}t  ” }|  dg|||”}|  |d” | ”  d”}|  	d|” |  	d| ” ” d S )Nu   print 'nothing'
print u'Ć¼ber'
Śasciiś-r   z-print 'nothing'z9WARNING: couldn't encode <stdin>'s diff for your terminal)
ŚioŚStringIOŚBytesIOŚcodecsŚ	getwriterr   ŚassertEqualŚgetvalueŚdecodeŚassertIn)r   Zinput_streamŚoutZout_encŚerrŚretŚoutputr	   r	   r
   Śtest_unencodable_diff,   s   
’zTestMain.test_unencodable_diffc                 C   s   	 t  ” | _tj | jd”| _tj | jd”| _t | j” t | j” g | _	t
tj | jd”d ”  | j	 d” t t| j” | j	 tj t”” tj | jd”| _tj | jd”| _t
| jd}| d” W d    n1 ssw   Y  | j	 d” d S )NZpython2_projectZpython3_projectz__init__.pyŚwz
trivial.pyz#print 'I need a simple conversion.')ŚtempfileŚmkdtempr   ŚosŚpathŚjoinŚpy2_src_dirŚpy3_dest_dirŚmkdirŚsetup_filesŚopenŚcloseŚappendr   ŚcopyŚPY2_TEST_MODULEŚbasenameŚtrivial_py2_fileŚinit_py2_fileŚwrite)r   Ztrivialr	   r	   r
   Śsetup_test_source_trees8   s"   
’z TestMain.setup_test_source_treesc              
      s   	 |   ”  t ” }t ” }d |  dd ddd| j| jgt d”||”}|  |d” | ” }|  d	|” |  d
| j| jf |” |  t	 fdd| j
D t	t | j”” | j
D ]}|  dtj | j|”tj | j|  ”f |” qYt tj”}|  |d d|”” |  |d d|”” d S )NZTESTś-nz--add-suffixś--write-unchanged-filesś
--no-diffsś--output-dirŚ r   z implies -w.ś6Output in %r will mirror the input directory %r layoutc                 3   s    | ]}|  V  qd S r   r	   ©Ś.0Śname©Śsuffixr	   r
   Ś	<genexpr>\   s    zGTestMain.test_filename_changing_on_output_single_dir.<locals>.<genexpr>zWriting converted %s to %szNo changes to .*/__init__\.pyś/zNo changes to .*/trivial\.py)r;   r   r   r   r/   r.   r   r    r"   Śsetr1   r+   Ślistdirr,   r-   ŚreŚescapeŚsepZassertRegexŚreplaceZassertNotRegex)r   r#   r$   r%   r   rD   rM   r	   rE   r
   Ś+test_filename_changing_on_output_single_dirK   sL   žü’ž’
žž’’z4TestMain.test_filename_changing_on_output_single_dirc                 C   s¤   	 |   ”  t ” }| j| jg}tdd |D }|  ddddd| jg| t d”t ” |”}|  |d	” | 	” }|  
d
| j| jf |” |  |tt | j”” d S )Nc                 s   s    | ]	}t j |”V  qd S r   )r+   r,   r7   rB   r	   r	   r
   rG   m   s    zFTestMain.test_filename_changing_on_output_two_files.<locals>.<genexpr>r<   ś-wr=   r>   r?   r@   r   rA   )r;   r   r   r8   r9   rI   r   r/   r   r    r"   r.   r+   rJ   )r   r$   Z	py2_filesZexpected_filesr%   r   r	   r	   r
   Ś*test_filename_changing_on_output_two_filesh   s,   ’’ż’žz3TestMain.test_filename_changing_on_output_two_filesc                 C   s   	 |   ”  t ” }|  dddd| j| jgt d”t ” |”}|  |d” | ” }|  d| j| j	f |” |  t
tj | j”gt
t | j”” d S )Nr<   rP   r>   r?   r@   r   rA   )r;   r   r   r   r/   r8   r   r    r"   r.   rI   r+   r,   r7   rJ   )r   r$   r%   r   r	   r	   r
   Ś,test_filename_changing_on_output_single_filey   s(   ’ż’ž’z5TestMain.test_filename_changing_on_output_single_fileN)Ś__name__Ś
__module__Ś__qualname__r   r   r   r'   r;   rO   rQ   rR   r	   r	   r	   r
   r      s    r   Ś__main__)r   r   r   r+   rK   r   r   r)   ZunittestZlib2to3r   r,   r-   ŚdirnameŚ__file__ZTEST_DATA_DIRr6   ZTestCaser   rS   r	   r	   r	   r
   Ś<module>   s    w’