o
    LK&h                     @   sp   d 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ZddlZe
jG dd de
jZdS )	z%Tests for distutils.command.build_py.    N)build_py)Distribution)DistutilsFileError)supportc                   @   s\   e Zd Zdd Zdd Zejddd Zejddd	 Z	d
d Z
dd Zdd ZdS )TestBuildPyc           	      C   s:  |   }tjddd| |   }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ksPJ |  t| dks^J tj|d}t|}tj|d}d|v swJ d
|v s}J tjrtj|rJ d S t|}dtjj d|v sJ d S )Nz# Pretend this is a package.zInfo about this package)__init__.py
README.txtpkg)packagespackage_dirsetup.pyF)force	build_libbuildr   T   __pycache__r   z	__init__..pyc)mkdtempjaracopathr   r   osjoinscript_namer   DummyCommandcommand_objr
   package_datar   r   compileensure_finalizedrunlenget_outputslistdirsysdont_write_bytecodeexistsimplementation	cache_tag)	selfsourcesdestinationdistcmdpkgdestfilespycache_dir	pyc_files r0   \/var/www/html/venv/lib/python3.10/site-packages/setuptools/_distutils/tests/test_build_py.pytest_package_data   s>   


zTestBuildPy.test_package_datac                 C   s   |   }tjdddid| t| tdgddiddgid}tj|d|_dg|_	|
  z|  W d S  tyI   | d	 Y d S w )
N testfiler   docr	   doc/*)r
   r   r   r   r   z/failed package_data test when package_dir is ''r   r   r   r   r   chdirr   r   r   script_argsparse_command_linerun_commandsr   failr'   r(   r*   r0   r0   r1   test_empty_package_dir<   s    
z"TestBuildPy.test_empty_package_dirzsys.dont_write_bytecodec                 C   s   | j dgd\}}t| | dd t|}d|_d|_|  |  t	|j}t
|ddgks6J t	tj|jd}|dtjj d	gksNJ d S )
N
boiledeggs
py_modulesboiledeggs.pyimport antigravityTherer   boiledeggs.r   )create_distr   r9   
write_filer   r   r   finalize_optionsr   r!   sortedr   r   r"   r%   r&   )r'   project_dirr*   r+   foundr0   r0   r1   test_byte_compileQ   s   
zTestBuildPy.test_byte_compilec                 C   s   | j dgd\}}t| | dd t|}d|_d|_d|_|  |	  t
|j}t|ddgks9J t
tj|jd}d	tjj d
}t||gksUJ d S )Nr@   rA   rC   rD   F   rE   r   rF   z
.opt-1.pyc)rG   r   r9   rH   r   r   optimizer   rI   r   r!   rJ   r   r   r"   r%   r&   )r'   rK   r*   r+   rL   expectr0   r0   r1   test_byte_compile_optimizeda   s   
z'TestBuildPy.test_byte_compile_optimizedc                 C   s   |   }tjdddi ddi| t| tdgddgid}tj|d|_dg|_	|
  z|  W d
S  tyI   | d	 Y d
S w )zR
        A directory in package_data should not be added to the filelist.
        r	   r3   )r4   otherdirr5   r7   )r
   r   r   r   z0failed package_data when data dir includes a dirNr8   r>   r0   r0   r1   test_dir_in_package_datas   s*   

z$TestBuildPy.test_dir_in_package_datac                 C   sb   |   d }t|}d|_d|_tj}dt_z
|g  W |t_n|t_w d|jd jv s/J d S )NrN   Tzbyte-compiling is disabledr   )	rG   r   r   rO   r"   r#   byte_compilerecordsmessage)r'   caplogr*   r+   old_dont_write_bytecoder0   r0   r1   test_dont_write_bytecode   s   z$TestBuildPy.test_dont_write_bytecodec                 C   s   |   }tjddddiii| t| dddgdd}t|}|d}|  |	 }t
|d	ks7J |d
 d }|tjddksHJ |  tdd |jD rXJ dS )aU  
        Originally distutils implementation did not account for PEP 420
        and included warns for package directories that did not contain
        ``__init__.py`` files.
        After the acceptance of PEP 420, these warnings don't make more sense
        so we want to ensure there are not displayed to not confuse the users.
        nsr	   z	module.pyr3   zns.pkgr   )namer
   r   r   rN   r   /zns/pkg/module.pyc                 s   s     | ]}d |v od|v V  qdS )zpackage init filez	not foundNr0   ).0msgr0   r0   r1   	<genexpr>   s    
zCTestBuildPy.test_namespace_package_does_not_warn.<locals>.<genexpr>N)r   r   r   r   r   r9   r   get_command_objrI   find_all_modulesr   replacesepr   anymessages)r'   rW   tmpattrsr*   r+   modulesmodule_pathr0   r0   r1   $test_namespace_package_does_not_warn   s$   	

z0TestBuildPy.test_namespace_package_does_not_warnN)__name__
__module____qualname__r2   r?   pytestmarkskipifrM   rQ   rS   rY   rk   r0   r0   r0   r1   r      s    ,



 r   )__doc__r   r"   distutils.command.build_pyr   distutils.corer   distutils.errorsr   distutils.testsr   jaraco.pathr   ro   combine_markersTempdirManagerr   r0   r0   r0   r1   <module>   s    