o
    5‘ðik$  ã                   @   sF  d Z ddlZddlZddlZddlmZ ddlZddlmZ ddl	Z	ddl
mZ ddlZ	ddl
mZ ddlZddlZddlmZ ddlmZ ejdd	�d
d„ ƒZdd„ Zejjeedƒ dd�ZG dd„ dƒZG dd„ dƒZejdd„ ƒZdd„ Zdd„ Z ejdd„ ƒZ!ej "d¡dd„ ƒZ#ejj$dd�d d!„ ƒZ%d"d#„ Z&d$d%„ Z'dS )&z"Tests for the 'setuptools' packageé    N)ÚZipFile)ÚVersion)ÚRequire)Ú	Extension)ÚDistutilsSetupErrorT)Úautousec                 C   s   d S ©N© )Ú
tmpdir_cwdr	   r	   ú_/root/parts/websockify/install/lib/python3.10/site-packages/setuptools/tests/test_setuptools.pyÚisolated_dir   s   r   c                  K   s<   dt j_|  ddg¡ ztjdi | ¤ŽW dt j_S dt j_w )zDReturn distribution from 'setup(**args)', without executing commandsÚcommandlineÚscript_argsÚinstallNr	   )Ú	distutilsÚcoreÚ_setup_stop_afterÚ
setdefaultÚ
setuptoolsÚsetup)Úargsr	   r	   r   Ú	makeSetup   s
   r   Úget_module_constantzbytecode support not available)Úreasonc                   @   sN   e Zd Zdd„ Zdd„ Zejdd„ ƒZedd„ ƒZ	ed	d
„ ƒZ
edd„ ƒZdS )ÚTestDependsc                 C   sx   t tdƒsd S dd„ }|j}t |dd¡d u sJ ‚t |dd¡dks$J ‚t |dd¡dks/J ‚t |d	d¡d u s:J ‚d S )
NÚextract_constantc                   S   s   da tad S )NÚtest)ÚxÚzÚyr	   r	   r	   r   Úf15   s   z(TestDepends.testExtractConst.<locals>.f1Úqéÿÿÿÿr   r   r   r   )ÚhasattrÚdepÚ__code__r   )Úselfr    Úfcr	   r	   r   ÚtestExtractConst0   s   
zTestDepends.testExtractConstc                 C   s„   t  t¡� t d¡ W d   ƒ n1 sw   Y  t  t¡� t d¡ W d   ƒ n1 s/w   Y  t d¡\}}}| ¡  d S )Nzno-such.-thingzsetuptools.non-existentzsetuptools.tests)ÚpytestÚraisesÚImportErrorr$   Úfind_moduleÚclose)r&   ÚfÚ_pÚ_ir	   r	   r   ÚtestFindModuleH   s   ÿÿzTestDepends.testFindModulec                 C   s@   |  t|ƒ¡ d}d}||› d� }|jd|›�dd� ||fS )NÚmod_with_versionz2.0.9z.pyz__version__ = zutf-8)Úencoding)Úsyspath_prependÚstrÚ
write_text)r&   ÚmonkeypatchÚtmp_pathÚmoduleÚversionÚfiler	   r	   r   Úsample_moduleP   s   zTestDepends.sample_modulec                 C   sJ   |\}}t  |d¡|ksJ ‚t  dd¡tjksJ ‚t  td¡tks#J ‚d S )NÚ__version__Úsysr:   Ú__doc__)r$   r   r>   r:   Ú__name__r?   )r&   r<   r9   r:   r	   r	   r   ÚtestModuleExtractY   s   zTestDepends.testModuleExtractc                 C   sÞ   |\}}t dd|ƒ}|jdksJ ‚|j|ksJ ‚|jtdƒks!J ‚|jdks(J ‚| ¡ dks0J ‚t| ¡ ƒ|ks:J ‚| 	d¡sAJ ‚| 	d¡rHJ ‚| 	d¡rOJ ‚| 
¡ sUJ ‚| ¡ s[J ‚t dd	d
ƒ}| 
¡ rgJ ‚| ¡ rmJ ‚d S )NÚ	GivenNamez1.0.3r=   zGivenName-1.0.3z1.0.9z0.9.1ÚunknownzDo-what-I-meanz1.0zd-w-i-m)r   Únamer9   Úrequested_versionr   Ú	attributeÚ	full_namer5   Úget_versionÚ
version_okÚ
is_presentÚ
is_current)r&   r<   r9   r:   Úreqr	   r	   r   ÚtestRequire`   s    zTestDepends.testRequirec                 C   s’   t dd ddd�}|jd u sJ ‚|jd u sJ ‚|jd u sJ ‚| ¡ dks%J ‚|jdks,J ‚ddlm} dd„ |D ƒ}| |¡s@J ‚| 	|¡sGJ ‚d S )	NÚTestsÚtestszhttp://example.com)Úhomepager   )Ú__path__c                 S   s   g | ]}t j |¡‘qS r	   )ÚosÚpathÚdirname)Ú.0Úpr	   r	   r   Ú
<listcomp>…   s    z4TestDepends.test_require_present.<locals>.<listcomp>)
r   ÚformatrF   rE   rG   rP   Úsetuptools.testsrQ   rJ   rK   )r&   rL   rQ   Úpathsr	   r	   r   Útest_require_presentw   s   z TestDepends.test_require_presentN)r@   Ú
__module__Ú__qualname__r(   r1   r)   Úfixturer<   Úneeds_bytecoderA   rM   r[   r	   r	   r	   r   r   /   s    


r   c                   @   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 )Ú
TestDistroc                 C   sB   t ddgƒ| _t ddgƒ| _tg d¢ddg| j| jfi d�| _d S )	Nzbar.extzbar.czc.yzy.c)Úaza.bza.b.cÚbÚczb.dr   )ÚpackagesÚ
py_modulesÚext_modulesÚpackage_dir)r   Úe1Úe2r   Údist)r&   Úmethodr	   r	   r   Úsetup_method‹   s   
üzTestDistro.setup_methodc                 C   s   t | jtjjƒs
J ‚d S r   )Ú
isinstancerj   r   ÚDistribution©r&   r	   r	   r   ÚtestDistroType–   s   zTestDistro.testDistroTypec                 C   sº   | j  d¡ | j jddgksJ ‚| j  d¡ | j jdgksJ ‚| j jdgks(J ‚| j j| j| jgks4J ‚| j  d¡ | j jg ksBJ ‚| j jdgksKJ ‚| j j| jgksUJ ‚tƒ  d¡ d S )Nra   rb   rc   r   )rj   Úexclude_packagerd   re   rf   rh   ri   r   ro   r	   r	   r   ÚtestExcludePackage™   s   zTestDistro.testExcludePackagec                 C   s~   | j j| jgd� | j j| jgksJ ‚| j j| jgd� | j j| j| jgks(J ‚| j j| jgd� | j j| j| jgks=J ‚d S )N©rf   )rj   Úexcluderh   rf   ri   Úincludero   r	   r	   r   ÚtestIncludeExcludeª   s   zTestDistro.testIncludeExcludec                 C   sL   | j jg d¢d� | j jg ksJ ‚| j jdgksJ ‚| j j| jgks$J ‚d S )N)rc   rb   ra   ©rd   r   )rj   rt   rd   re   rf   rh   ro   r	   r	   r   ÚtestExcludePackages·   s   zTestDistro.testExcludePackagesc                 C   s@   t ƒ }|jdgdg| jgd� t ƒ }|jdgdg| jgd� d S )Nra   rb   )rd   re   rf   )r   ru   ri   rt   )r&   rj   r	   r	   r   Ú	testEmpty½   s   zTestDistro.testEmptyc                 C   sˆ   | j  d¡sJ ‚| j  d¡ | j  d¡rJ ‚| j  d¡sJ ‚| j  d¡ | j  d¡r,J ‚| j  d¡s4J ‚| j  d¡ | j  d¡rBJ ‚d S )Nra   rb   rc   )rj   Úhas_contents_forrq   ro   r	   r	   r   ÚtestContentsÃ   s   zTestDistro.testContentsc                 C   sÚ  t  t¡� | jjdd� W d   ƒ n1 sw   Y  t  t¡� | jjdd� W d   ƒ n1 s3w   Y  t  t¡� | jjddid� W d   ƒ n1 sQw   Y  t  t¡� | jjddid� W d   ƒ n1 sow   Y  t  t¡� | jjddid� W d   ƒ n1 s�w   Y  t  t¡� | jjddid� W d   ƒ n1 s«w   Y  t  t¡� | jjdgd� W d   ƒ n1 sÈw   Y  t  t¡� | jjdgd� W d   ƒ d S 1 sæw   Y  d S )Nr   )Únonexistent_optionr   rw   rs   r!   )rg   )r)   r*   r   rj   ru   rt   ro   r	   r	   r   ÚtestInvalidIncludeExcludeÐ   s0   ÿÿÿÿÿÿÿ"ÿz$TestDistro.testInvalidIncludeExcludeN)r@   r\   r]   rl   rp   rr   rv   rx   ry   r{   r}   r	   r	   r	   r   r`   Š   s    r`   c                 C   s*   |   d¡ | d  d¡ | d  d¡ | S )NÚfooú
foo/bar.pyÚ ú
readme.txt)ÚmkdirÚwrite)Útmpdirr	   r	   r   Úexample_sourceä   s   
r…   c                    s<   t t tˆ ƒ¡ƒ}ddg}‡ fdd„|D ƒ}||ksJ ‚d S )Nr�   r   c                    s   g | ]}ˆ   |¡‘qS r	   )Újoin)rU   Úfn©r…   r	   r   rW   ï   s    z test_findall.<locals>.<listcomp>)Úlistr   Úfindallr5   ©r…   ÚfoundÚexpectedr	   rˆ   r   Útest_findallì   s   rŽ   c                 C   sV   |   ¡ � tt ¡ ƒ}W d   ƒ n1 sw   Y  dtj dd¡g}||ks)J ‚d S )Nr�   r~   zbar.py)Úas_cwdr‰   r   rŠ   rR   rS   r†   r‹   r	   r	   r   Útest_findall_curdiró   s
   
ÿr�   c              
   C   sJ   d}d}zt  ||¡ W n tttfy   t d¡ Y nw t  |¡ dS )z/
    Skip if cannot create a symbolic link
    ÚlinkÚtargetzCannot create symbolic linksN)rR   ÚsymlinkÚOSErrorÚNotImplementedErrorÚAttributeErrorr)   ÚskipÚremove)r„   Úlink_fnÚ	target_fnr	   r	   r   Úcan_symlinkú   s   ÿr›   c                 C   sR   |   ¡ � t dd¡ tt ¡ ƒ}|g ksJ ‚W d   ƒ d S 1 s"w   Y  d S )Nr~   Úbar)r�   rR   r“   r‰   r   rŠ   )r„   rŒ   r	   r	   r   Útest_findall_missing_symlink  s
   
"ýr�   z$unable to exclude tests; #4475 #3260c                 C   sT   t | ƒ�}dd„ | ¡ D ƒ}W d   ƒ n1 sw   Y  |D ]}d|vs'J ‚qd S )Nc                 S   ó   g | ]	}|  tjd ¡‘qS ©ú/©ÚreplacerR   Úsep©rU   r.   r	   r	   r   rW     ó    z=test_its_own_wheel_does_not_contain_tests.<locals>.<listcomp>z/tests/)r   Únamelist)Úsetuptools_wheelÚzipfileÚcontentsÚmemberr	   r	   r   Ú)test_its_own_wheel_does_not_contain_tests  s   
ÿÿr«   c                 C   óT   t | ƒ�}dd„ | ¡ D ƒ}W d   ƒ n1 sw   Y  tdd„ |D ƒƒs(J ‚d S )Nc                 S   rž   rŸ   r¡   r¤   r	   r	   r   rW     r¥   z3test_wheel_includes_cli_scripts.<locals>.<listcomp>c                 s   s   � | ]}d |v V  qdS )z
cli-64.exeNr	   ©rU   rª   r	   r	   r   Ú	<genexpr>  s   € z2test_wheel_includes_cli_scripts.<locals>.<genexpr>©r   r¦   Úany©r§   r¨   r©   r	   r	   r   Útest_wheel_includes_cli_scripts  s   
ÿr²   c                 C   r¬   )Nc                 S   rž   rŸ   r¡   r¤   r	   r	   r   rW   "  r¥   z9test_wheel_includes_vendored_metadata.<locals>.<listcomp>c                 s   s   � | ]	}t  d |¡V  qdS )z_vendor/.*\.dist-info/METADATAN)ÚreÚsearchr­   r	   r	   r   r®   $  s   € 
ÿz8test_wheel_includes_vendored_metadata.<locals>.<genexpr>r¯   r±   r	   r	   r   Ú%test_wheel_includes_vendored_metadata   s   
ÿÿrµ   )(r?   rR   r³   r>   r¨   r   r)   Úpackaging.versionr   r   Úsetuptools.dependsÚdependsr$   Úsetuptools.distr   Údistutils.cmdr   Údistutils.corer   Údistutils.errorsr   r^   r   r   ÚmarkÚskipifr#   r_   r   r`   r…   rŽ   r�   r›   Úusefixturesr�   Úxfailr«   r²   rµ   r	   r	   r	   r   Ú<module>   sH    


þ[Z




