U
    aÊ¹j#  ã                   @   s:  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!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)Zautousec                 c   s
   d V  d S ©N© )Z
tmpdir_cwdr   r   ú_/var/www/html/bwave/python/venv/lib/python3.8/site-packages/setuptools/tests/test_setuptools.pyÚisolated_dir   s    r
   c                  K   s6   dt j_|  ddg¡ ztjf | ŽW ¢S dt j_X dS )zDReturn distribution from 'setup(**args)', without executing commandsÚcommandlineÚscript_argsÚinstallN)Ú	distutilsÚcoreÚ_setup_stop_afterÚ
setdefaultÚ
setuptoolsÚsetup)Úargsr   r   r	   Ú	makeSetup   s
    r   Úget_module_constantzbytecode support not available)Úreasonc                   @   s@   e Zd Zdd„ Z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 ks2t‚t |dd¡dksHt‚t |dd¡dks^t‚t |d	d¡d kstt‚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   ÚAssertionError)Úselfr   Úfcr   r   r	   ÚtestExtractConst0   s    
zTestDepends.testExtractConstc              	   C   s\   t  t¡� t d¡ W 5 Q R X t  t¡� t d¡ W 5 Q R X 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   sN   ddl m} t dd¡|ks t‚t dd¡tjks6t‚t dd¡tksJt‚d S )	Nr   ©Ú__version__Újsonr2   ÚsysÚversionz setuptools.tests.test_setuptoolsÚ__doc__)r3   r2   r"   r   r$   r4   r5   r6   )r%   r2   r   r   r	   ÚtestModuleExtractP   s    
ÿÿzTestDepends.testModuleExtractc                 C   sâ   t dddƒ}|jdkst‚|jdks(t‚|jtdƒks:t‚|jdksHt‚| ¡ dksXt‚ddlm	} t
| ¡ ƒ|ksxt‚| d¡s†t‚| d	¡r”t‚| d
¡r¢t‚| ¡ s®t‚| ¡ sºt‚t dddƒ}| ¡ rÒt‚| ¡ rÞt‚d S )NZJsonz1.0.3r3   r2   z
Json-1.0.3r   r1   z1.0.9z0.9.1ÚunknownzDo-what-I-meanz1.0zd-w-i-m)r   Únamer$   ÚmoduleÚrequested_versionr   Ú	attributeÚ	full_namer3   r2   ÚstrÚget_versionZ
version_okÚ
is_presentÚ
is_current)r%   Úreqr2   r   r   r	   ÚtestRequire[   s     zTestDepends.testRequirec                 C   s’   t dd ddd�}|jd kst‚|jd ks,t‚|jd ks:t‚| ¡ dksJt‚|jdksXt‚ddlm} dd„ |D ƒ}| 	|¡s€t‚| 
|¡sŽt‚d S )	NZTestsZtestszhttp://example.com)Úhomepager   )Ú__path__c                 S   s   g | ]}t j |¡‘qS r   )ÚosÚpathÚdirname)Ú.0r.   r   r   r	   Ú
<listcomp>�   s     z4TestDepends.test_require_present.<locals>.<listcomp>)r   Úformatr$   r<   r;   r=   rD   Zsetuptools.testsrE   r@   rA   )r%   rB   rE   Úpathsr   r   r	   Útest_require_presents   s    z TestDepends.test_require_presentN)	Ú__name__Ú
__module__Ú__qualname__r'   r0   Úneeds_bytecoder7   rC   rM   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   sH   t ddgƒ| _t ddgƒ| _tddddd	g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t‚d S r   )Ú
isinstancer\   r   ÚDistributionr$   ©r%   r   r   r	   ÚtestDistroType’   s    zTestDistro.testDistroTypec                 C   sº   | j  d¡ | j jddgks t‚| j  d¡ | j jdgks>t‚| j jdgksPt‚| j j| j| jgksht‚| j  d¡ | j jg ks„t‚| j jdgks–t‚| j j| jgksªt‚tƒ  d¡ d S )NrS   rT   rU   r   )	r\   Úexclude_packagerV   r$   rW   rX   rZ   r[   r   ra   r   r   r	   ÚtestExcludePackage•   s    zTestDistro.testExcludePackagec                 C   s~   | j j| jgd� | j j| jgks&t‚| j j| jgd� | j j| j| jgksPt‚| j j| jgd� | j j| j| jgkszt‚d S )N©rX   )r\   ÚexcluderZ   rX   r[   r$   Úincludera   r   r   r	   ÚtestIncludeExclude¦   s    zTestDistro.testIncludeExcludec                 C   sN   | j jdddgd� | j jg ks$t‚| j jdgks6t‚| j j| jgksJt‚d S )NrU   rT   rS   ©rV   r   )r\   rf   rV   r$   rW   rX   rZ   ra   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 )NrS   rT   )rV   rW   rX   )r   rg   r[   rf   )r%   r\   r   r   r	   Ú	testEmpty¹   s    zTestDistro.testEmptyc                 C   sˆ   | j  d¡st‚| j  d¡ | j  d¡r,t‚| j  d¡s<t‚| j  d¡ | j  d¡rXt‚| j  d¡sht‚| j  d¡ | j  d¡r„t‚d S )NrS   rT   rU   )r\   Zhas_contents_forr$   rc   ra   r   r   r	   ÚtestContents¿   s    zTestDistro.testContentsc              	   C   s8  t  t¡� | jjdd� W 5 Q R X t  t¡� | jjdd� W 5 Q R X t  t¡� | jjddid� W 5 Q R X t  t¡� | jjddid� W 5 Q R X t  t¡� | jjddid� W 5 Q R X t  t¡� | jjddid� W 5 Q R X t  t¡� | jjdgd� W 5 Q R X t  t¡� | jjdgd� W 5 Q R X d S )Nr   )Znonexistent_optionr   ri   re   r   )rY   )r(   r)   r   r\   rg   rf   ra   r   r   r	   ÚtestInvalidIncludeExcludeÌ   s     z$TestDistro.testInvalidIncludeExcludeN)rN   rO   rP   r^   rb   rd   rh   rj   rk   rl   rm   r   r   r   r	   rR   †   s   rR   c                 C   s*   |   d¡ | d  d¡ | d  d¡ | S )NÚfooú
foo/bar.pyÚ ú
readme.txt)ÚmkdirÚwrite)Útmpdirr   r   r	   Úexample_sourceà   s    
ru   c                    s<   t t tˆ ƒ¡ƒ}ddg}‡ fdd„|D ƒ}||ks8t‚d S )Nrq   ro   c                    s   g | ]}ˆ   |¡‘qS r   )Újoin)rI   Úfn©ru   r   r	   rJ   ë   s     z test_findall.<locals>.<listcomp>)Úlistr   Úfindallr>   r$   ©ru   ÚfoundÚexpectedr   rx   r	   Útest_findallè   s    r~   c              	   C   sB   |   ¡ � tt ¡ ƒ}W 5 Q R X dtj dd¡g}||ks>t‚d S )Nrq   rn   zbar.py)Úas_cwdry   r   rz   rF   rG   rv   r$   r{   r   r   r	   Útest_findall_curdirï   s    
r€   c              
   C   sL   d}d}zt  ||¡ W n$ tttfk
r<   t d¡ Y nX t  |¡ dS )z/
    Skip if cannot create a symbolic link
    ÚlinkÚtargetzCannot create symbolic linksN)rF   ÚsymlinkÚOSErrorÚNotImplementedErrorÚAttributeErrorr(   ÚskipÚremove)rt   Zlink_fnZ	target_fnr   r   r	   Úcan_symlinkö   s    r‰   c              	   C   s<   |   ¡ �* t dd¡ tt ¡ ƒ}|g ks.t‚W 5 Q R X d S )Nrn   Úbar)r   rF   rƒ   ry   r   rz   r$   )rt   r‰   r|   r   r   r	   Útest_findall_missing_symlink  s    
r‹   z$unable to exclude tests; #4475 #3260c              	   C   s@   t | ƒ�}dd„ | ¡ D ƒ}W 5 Q R X |D ]}d|ks*t‚q*d S )Nc                 S   s   g | ]}|  tjd ¡‘qS ©ú/©ÚreplacerF   Úsep©rI   r-   r   r   r	   rJ     s     z=test_its_own_wheel_does_not_contain_tests.<locals>.<listcomp>z/tests/)r   Únamelistr$   )Úsetuptools_wheelÚzipfileÚcontentsÚmemberr   r   r	   Ú)test_its_own_wheel_does_not_contain_tests  s    
r—   c              	   C   s@   t | ƒ�}dd„ | ¡ D ƒ}W 5 Q R X tdd„ |D ƒƒs<t‚d S )Nc                 S   s   g | ]}|  tjd ¡‘qS rŒ   rŽ   r‘   r   r   r	   rJ     s     z3test_wheel_includes_cli_scripts.<locals>.<listcomp>c                 s   s   | ]}d |kV  qdS )z
cli-64.exeNr   ©rI   r–   r   r   r	   Ú	<genexpr>  s     z2test_wheel_includes_cli_scripts.<locals>.<genexpr>©r   r’   Úanyr$   ©r“   r”   r•   r   r   r	   Útest_wheel_includes_cli_scripts  s    
r�   c              	   C   s@   t | ƒ�}dd„ | ¡ D ƒ}W 5 Q R X tdd„ |D ƒƒs<t‚d S )Nc                 S   s   g | ]}|  tjd ¡‘qS rŒ   rŽ   r‘   r   r   r	   rJ     s     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    )'r6   rF   rž   r4   r”   r   r(   Zpackaging.versionr   r   Zsetuptools.dependsÚdependsr"   Zsetuptools.distr   Údistutils.cmdr   Údistutils.corer   Údistutils.errorsr   Zfixturer
   r   ÚmarkZskipifr!   rQ   r   rR   ru   r~   r€   r‰   r‹   Zxfailr—   r�   r    r   r   r   r	   Ú<module>   sD   


þWZ


