B
    Ûö›\¿  ã               @   s   d Z ddlZddl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 G dd	„ d	ejejejƒZd
d„ ZedkrŒeeƒ ƒ dS )z%Tests for distutils.command.build_py.é    N)Úbuild_py)ÚDistribution)ÚDistutilsFileError)Úsupport)Úrun_unittestc               @   sX   e Zd Zdd„ Zdd„ Ze ejd¡dd„ ƒZ	e ejd¡dd	„ ƒZ
d
d„ Zdd„ ZdS )ÚBuildPyTestCasec       
      C   s€  |   ¡ }ttj |d¡dƒ}z| d¡ W d | ¡  X ttj |d¡dƒ}z| d¡ W d | ¡  X |   ¡ }tdgd|idœƒ}tj |d¡|_t	j
d	|d
|jd< dg|_ddgi|_d|i|_t|ƒ}d|_| ¡  |  |j|j¡ | ¡  |  t| ¡ ƒd¡ tj |d¡}t |¡}tj |d¡}|  d|¡ |  d|¡ tjr^|  tj |¡¡ nt |¡}	|  dtjj |	¡ d S )Nz__init__.pyÚwz# Pretend this is a package.z
README.txtzInfo about this packageÚpkg)ÚpackagesÚpackage_dirzsetup.pyr   )ZforceÚ	build_libÚbuildé   é   Ú__pycache__z__init__.%s.pyc)ÚmkdtempÚopenÚosÚpathÚjoinÚwriteÚcloser   Úscript_namer   ZDummyCommandZcommand_objr
   Úpackage_datar   r   ÚcompileZensure_finalizedÚassertEqualÚrunÚlenZget_outputsÚlistdirÚassertInÚsysÚdont_write_bytecodeZassertFalseÚexistsÚimplementationÚ	cache_tag)
ÚselfÚsourcesÚfZdestinationÚdistÚcmdZpkgdestÚfilesZpycache_dirZ	pyc_files© r+   ú.lib/python3.7/distutils/tests/test_build_py.pyÚtest_package_data   sF    




z!BuildPyTestCase.test_package_datac             C   sÆ   |   ¡ }ttj |d¡dƒ ¡  tj |d¡}t |¡ ttj |d¡dƒ ¡  t |¡ tdgddiddgidœƒ}tj |d	¡|_	d
g|_
| ¡  y| ¡  W n tk
rÀ   |  d¡ Y nX d S )Nz__init__.pyr   ÚdocÚtestfiler	   Ú zdoc/*)r
   r   r   zsetup.pyr   z/failed package_data test when package_dir is '')r   r   r   r   r   r   ÚmkdirÚchdirr   r   Úscript_argsÚparse_command_lineÚrun_commandsr   Úfail)r%   r&   Ztestdirr(   r+   r+   r,   Útest_empty_package_dirD   s     

z&BuildPyTestCase.test_empty_package_dirzbyte-compile disabledc             C   sœ   | j dgd\}}t |¡ |  dd¡ t|ƒ}d|_d|_| ¡  | ¡  t 	|j¡}|  
t|ƒddg¡ t 	tj |jd¡¡}|  
|dtjj g¡ d S )	NÚ
boiledeggs)Ú
py_moduleszboiledeggs.pyzimport antigravityr   Úherer   zboiledeggs.%s.pyc)Úcreate_distr   r2   Ú
write_filer   r   r   Úfinalize_optionsr   r   r   Úsortedr   r   r    r#   r$   )r%   Úproject_dirr(   r)   Úfoundr+   r+   r,   Útest_byte_compile[   s    
z!BuildPyTestCase.test_byte_compilec             C   s¬   | j dgd\}}t |¡ |  dd¡ t|ƒ}d|_d|_d|_| ¡  | 	¡  t 
|j¡}|  t|ƒddg¡ t 
tj |jd¡¡}d	 tjj¡}|  t|ƒ|g¡ d S )
Nr8   )r9   zboiledeggs.pyzimport antigravityr   r   r:   r   zboiledeggs.{}.opt-1.pyc)r;   r   r2   r<   r   r   Úoptimizer   r=   r   r   r   r>   r   r   Úformatr    r#   r$   )r%   r?   r(   r)   r@   Zexpectr+   r+   r,   Útest_byte_compile_optimizedl   s    
z+BuildPyTestCase.test_byte_compile_optimizedc             C   sì   |   ¡ }tj |d¡}t |¡ ttj |d¡dƒ ¡  tj |d¡}t |¡ ttj |d¡dƒ ¡  t tj |d¡¡ t |¡ tdgddgidœƒ}tj |d	¡|_	d
g|_
| ¡  y| ¡  W n tk
ræ   |  d¡ Y nX dS )zR
        A directory in package_data should not be added to the filelist.
        r	   z__init__.pyr   r.   r/   Zotherdirzdoc/*)r
   r   zsetup.pyr   z0failed package_data when data dir includes a dirN)r   r   r   r   r1   r   r   r2   r   r   r3   r4   r5   r   r6   )r%   r&   Zpkg_dirZdocdirr(   r+   r+   r,   Útest_dir_in_package_data~   s$    


z(BuildPyTestCase.test_dir_in_package_datac             C   sl   |   ¡ d }t|ƒ}d|_d|_tj}dt_z| g ¡ W d |t_X |  d| jd d | jd d  ¡ d S )Nr   Tzbyte-compiling is disabledr   é   )	r;   r   r   rB   r    r!   Zbyte_compiler   Zlogs)r%   r(   r)   Zold_dont_write_bytecoder+   r+   r,   Útest_dont_write_bytecode   s    z(BuildPyTestCase.test_dont_write_bytecodeN)Ú__name__Ú
__module__Ú__qualname__r-   r7   ÚunittestZskipIfr    r!   rA   rD   rE   rG   r+   r+   r+   r,   r      s   1r   c               C   s
   t  t¡S )N)rK   Z	makeSuiter   r+   r+   r+   r,   Ú
test_suite¯   s    rL   Ú__main__)Ú__doc__r   r    rK   Zdistutils.command.build_pyr   Zdistutils.corer   Zdistutils.errorsr   Zdistutils.testsr   Ztest.supportr   ZTempdirManagerZLoggingSilencerZTestCaser   rL   rH   r+   r+   r+   r,   Ú<module>   s    