o
    5‘ðiª!  ã                   @   sØ   d 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 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 dd	lmZ dd
lmZmZ ddlmZ ddlZdd„ Zejej d¡G dd„ dejƒƒƒZ dS )z$Tests for distutils.command.install.é    N)Ú	sysconfig)Úinstall)Ú	build_ext)ÚINSTALL_SCHEMESr   )ÚDistribution)ÚDistutilsOptionError)Ú	Extension)Úmissing_compiler_executableÚsupport)Úis_mingwc                 C   s   | t  d¡ S )NÚ
EXT_SUFFIX)r   Úget_config_var)Úmodname© r   úg/root/parts/websockify/install/lib/python3.10/site-packages/setuptools/_distutils/tests/test_install.pyÚ_make_ext_name   s   r   Úsave_envc                   @   sT   e Zd Zejjddd�dd„ ƒZdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚTestInstallz=platform.system() == "Windows" and sys.version_info > (3, 11)zpypa/distutils#148)Úreasonc           
      C   s*  |   ¡ }tj |d¡}tddiƒ}tj |d¡|_tj|tj |d¡d�|jd< t	|ƒ}||_
| ¡  |j|ks:J ‚|j|ksAJ ‚dd	„ }tjj d
d¡}tj |d|¡}||j|ƒ ttddƒ}tj |||¡}	||j|	ƒ ||j|ƒ ||jtj |d|d¡ƒ ||jtj |d¡ƒ ||j|ƒ d S )NÚinstallationÚnameÚfoopkgzsetup.pyÚlib)Ú
build_baseÚ	build_libÚbuildc                 S   s(   t j | ¡} t j |¡}| |ksJ ‚d S ©N)ÚosÚpathÚnormpath)ÚgotÚexpectedr   r   r   Ú
check_path8   s   z=TestInstall.test_home_installation_scheme.<locals>.check_pathÚcpythonÚpythonÚ
platlibdirÚincludeÚbin)Úmkdtempr   r   Újoinr   Úscript_namer
   ÚDummyCommandÚcommand_objr   ÚhomeÚensure_finalizedÚinstall_baseÚinstall_platbaseÚsysÚimplementationr   ÚreplaceÚinstall_libÚgetattrÚinstall_platlibÚinstall_purelibÚinstall_headersÚinstall_scriptsÚinstall_data)
ÚselfÚbuilddirÚdestinationÚdistÚcmdr"   Ú	impl_nameÚlibdirÚ_platlibdirr%   r   r   r   Útest_home_installation_scheme   s6   þþz)TestInstall.test_home_installation_schemec                    sÀ  ˆ   ¡ ˆ _tj}tj}| tdtj ˆ jd¡¡ | tdtj ˆ jd¡¡ | t	dtj¡ | t	dtj¡ ‡ fdd„}| tjd|¡ dD ]}|t
v sMJ ‚qEtd	d
iƒ}t|ƒ}dd„ |jD ƒ}d|v sfJ ‚d|_tj tj¡rrJ ‚tj tj¡r{J ‚| ¡  tj tj¡sˆJ ‚tj tj¡s‘J ‚d|jv s˜J ‚d|jv sŸJ ‚tj |jtj¡}	tjdkrÃtƒ sÃtj tj |¡|¡}
tj |
d¡}nt dd¡}tj |d
¡}tj |	¡tj |¡ksÞJ ‚d S )NÚ	USER_BASEÚBÚ	USER_SITEÚSc                    s(   |   d¡rtj ˆ j| dd …  ¡S | S )Nú~é   )Ú
startswithr   r   r   Útmpdir)r   ©r;   r   r   Ú_expanduserV   s   
z/TestInstall.test_user_site.<locals>._expanduserÚ
expanduser)Únt_userÚ
posix_userr   Úxxc                 S   s   g | ]\}}}|‘qS r   r   )Ú.0r   ÚshortÚlabelr   r   r   Ú
<listcomp>d   s    z.TestInstall.test_user_site.<locals>.<listcomp>ÚuserTÚuserbaseÚusersiteÚntÚIncluder   Ú )r(   rK   ÚsiterF   rD   Úsetattrr   r   r)   Úinstall_moduler   r   r   Úuser_optionsrV   Úexistsr.   Úconfig_varsÚrelpathr8   r   r   Údirnamer   Úget_python_incÚnormcase)r;   ÚmonkeypatchÚ	orig_siteÚ	orig_baserM   Úkeyr>   r?   ÚoptionsÚactual_headersÚ	site_pathr&   Úexpect_headersr   rL   r   Útest_user_siteK   s<   
 zTestInstall.test_user_sitec                 C   s  t dddœƒ}t|ƒ}| ¡  |jddgksJ ‚|jdksJ ‚|jdks&J ‚dg|_| ¡  |jdgks6J ‚|jdks=J ‚|jdksDJ ‚d  |_|_| ¡  |jd u sUJ ‚|jdks\J ‚|jd u scJ ‚d|_t t¡� | ¡  W d   ƒ d S 1 s{w   Y  d S )NrQ   z	path,dirs)r   Ú
extra_pathr   Údirsr[   zpath,dirs,again)	r   r   Úhandle_extra_pathro   Ú
extra_dirsÚ	path_fileÚpytestÚraisesr   ©r;   r>   r?   r   r   r   Útest_handle_extra_path‚   s(   
"ÿz"TestInstall.test_handle_extra_pathc                 C   sÔ   t ddiƒ}t|ƒ}d|_d|_t t¡� | ¡  W d   ƒ n1 s$w   Y  d |_d|_t t¡� | ¡  W d   ƒ n1 sCw   Y  d |_d|_	t t¡� | ¡  W d   ƒ d S 1 scw   Y  d S )Nr   rQ   ÚprefixÚbaser-   rV   )
r   r   rx   r/   rt   ru   r   Úfinalize_optionsr-   rV   rv   r   r   r   Útest_finalize_optionsŸ   s"   
ÿ
ÿ
"ÿz!TestInstall.test_finalize_optionsc                 C   sÖ   |   ¡ }| jdgdgd�\}}t |¡ |  dd¡ |  dd¡ t|ƒ}||jd< ||_tj 	|d¡|_
| ¡  | ¡  t |j
¡jd	d
�}dd„ | ¡ D ƒ}ddtjj› d�ddjtjd d… Ž g}||ksiJ ‚d S )NÚhelloÚsayhi)Ú
py_modulesÚscriptszhello.pyzdef main(): print('o hai')zfrom hello import main; main()r   Úfilelistúutf-8©Úencodingc                 S   ó   g | ]}t  |¡j‘qS r   ©ÚpathlibÚPathr   ©rR   Úliner   r   r   rU   Ç   ó    z+TestInstall.test_record.<locals>.<listcomp>zhello.z.pycúUNKNOWN-0.0.0-py{}.{}.egg-infoé   )r(   Úcreate_distr   ÚchdirÚ
write_filer   r,   Úrootr   r)   Úrecordr.   Úrunr†   r‡   Ú	read_textÚ
splitlinesr1   r2   Ú	cache_tagÚformatÚversion_info)r;   Úinstall_dirÚproject_dirr>   r?   ÚcontentÚfoundr!   r   r   r   Útest_record·   s&   

üzTestInstall.test_recordc           	      C   s  t ƒ }|d urt d|›d�¡ |  ¡ }| jtddgƒgd�\}}t |¡ t 	|¡ t
|ƒ}t |¡ | ¡  t|ƒ}||jd< ||jd< ||_tj |d¡|_| ¡  | ¡  t |j¡jd	d
�}dd„ | ¡ D ƒ}tdƒdjtjd d… Ž g}||ks€J ‚d S )NzThe z command is not foundrQ   z
xxmodule.c)Úext_modulesr   r   r€   r�   r‚   c                 S   r„   r   r…   rˆ   r   r   r   rU   é   rŠ   z6TestInstall.test_record_extensions.<locals>.<listcomp>r‹   rŒ   )r	   rt   Úskipr(   r�   r   r   rŽ   r
   Úcopy_xxmodule_cr   Úfixup_build_extr.   r   r,   r�   r   r)   r‘   r’   r†   r‡   r“   r”   r   r–   r1   r—   )	r;   r?   r˜   r™   r>   Úbuildextcmdrš   r›   r!   r   r   r   Útest_record_extensionsÐ   s2   
ÿ




þz"TestInstall.test_record_extensionsc                 C   s>   |  tdd¡ | tj¡ |  ¡  tdd„ |jD ƒƒsJ ‚d S )NÚDEBUGTc                 s   s    � | ]}|j tjkr|V  qd S r   )ÚlevelnoÚloggingr£   )rR   Úrecr   r   r   Ú	<genexpr>õ   s   € z.TestInstall.test_debug_mode.<locals>.<genexpr>)r]   r^   Ú	set_levelr¥   r£   rœ   ÚanyÚrecords)r;   Úcaplogrf   r   r   r   Útest_debug_modeð   s   zTestInstall.test_debug_modeN)Ú__name__Ú
__module__Ú__qualname__rt   ÚmarkÚxfailrC   rn   rw   r{   rœ   r¢   r¬   r   r   r   r   r      s    þ
)7 r   )!Ú__doc__r¥   r   r†   r\   r1   Ú	distutilsr   Údistutils.commandr   r^   Údistutils.command.build_extr   Údistutils.command.installr   Údistutils.corer   Údistutils.errorsr   Údistutils.extensionr   Údistutils.testsr	   r
   Údistutils.utilr   rt   r   Úcombine_markersr°   ÚusefixturesÚTempdirManagerr   r   r   r   r   Ú<module>   s,    

ÿ