
#þîh0#  ã               @   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
 j 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 Gd d „  d ƒ Z Gd d „  d ƒ Z e j d d „  ƒ Z d d „  Z d d „  Z  e j d d „  ƒ Z! e j 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)ÚDistutilsSetupErrorZautouseTc             C   s   d  S)N© )Z
tmpdir_cwdr   r   úF/tmp/pip-build-zijwfla7/setuptools/setuptools/tests/test_setuptools.pyÚisolated_dir   s    r	   c              K   sD   d t  j _ |  j d d g ƒ z t j |  �  SWd d t  j _ Xd 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_constantÚreasonzbytecode support not availablec               @   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   s°   t  t d ƒ s d  Sd d „  } | j } t j | d d
 ƒ d  k sI t ‚ t j | d d ƒ d k sj t ‚ t j | d d ƒ d k s‹ t ‚ t j | d	 d ƒ d  k s¬ t ‚ 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   éÿÿÿÿr    r    r    r    )ÚhasattrÚdepÚ__code__r   ÚAssertionError)Úselfr   Zfcr   r   r   ÚtestExtractConst0   s    	!!!zTestDepends.testExtractConstc             C   sn   t  j t ƒ � t j d ƒ Wd  QRXt  j t ƒ � t j d ƒ Wd  QRXt j d ƒ \ } } } | j ƒ  d  S)Nzno-such.-thingzsetuptools.non-existentzsetuptools.tests)ÚpytestÚraisesÚImportErrorr"   Úfind_moduleÚclose)r%   ÚfZ_pZ_ir   r   r   ÚtestFindModuleH   s    zTestDepends.testFindModulec             C   sq   d d l  m } t j d d ƒ | k s. t ‚ t j d d ƒ t j k sO t ‚ t j d d ƒ t k sm t ‚ d  S)	Nr   )Ú__version__Újsonr.   ÚsysÚversionz setuptools.tests.test_setuptoolsÚ__doc__)r/   r.   r"   r   r$   r0   r1   r2   )r%   r.   r   r   r   ÚtestModuleExtractP   s
    !zTestDepends.testModuleExtractc             C   sS  t  d d d ƒ } | j d k s' t ‚ | j d k s< t ‚ | j t d ƒ k sW t ‚ | j d k sl t ‚ | j ƒ  d k s„ t ‚ d d l m	 } t
 | j ƒ  ƒ | k s² t ‚ | j d ƒ sÇ t ‚ | j d	 ƒ sÝ t ‚ | j d
 ƒ só t ‚ | j ƒ  st ‚ | j ƒ  st ‚ t  d d d ƒ } | j ƒ  s<t ‚ | j ƒ  sOt ‚ d  S)NZJsonz1.0.3r/   r.   z
Json-1.0.3r   )r.   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_namer/   r.   ÚstrÚget_versionZ
version_okÚ
is_presentÚ
is_current)r%   Úreqr.   r   r   r   ÚtestRequire[   s     zTestDepends.testRequirec             C   sÕ   t  d d  d d d ƒ} | j d  k s- t ‚ | j d  k sB t ‚ | j d  k sW t ‚ | j ƒ  d k so t ‚ | j d k s„ t ‚ d d l m } d d „  | Dƒ } | j	 | ƒ s¼ t ‚ | j
 | ƒ sÑ t ‚ d  S)	NZTestsÚtestsÚhomepagezhttp://example.comr   )Ú__path__c             S   s"   g  |  ] } t  j j | ƒ ‘ q Sr   )ÚosÚpathÚdirname)Ú.0Úpr   r   r   ú
<listcomp>�   s   	 z4TestDepends.test_require_present.<locals>.<listcomp>)r   Úformatr$   r8   r7   r9   rA   Zsetuptools.testsrB   r<   r=   )r%   r>   rB   Úpathsr   r   r   Útest_require_presents   s    z TestDepends.test_require_presentN)	Ú__name__Ú
__module__Ú__qualname__r&   r-   Úneeds_bytecoder3   r?   rK   r   r   r   r   r   /   s
   r   c               @   sp   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   ss   t  d d g ƒ |  _ t  d d g ƒ |  _ t d d d d d	 d
 g d d d g d |  j |  j f d i  ƒ |  _ d  S)Nzbar.extzbar.czc.yzy.cÚpackagesÚaza.bza.b.cÚbÚcÚ
py_moduleszb.dr   Ú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)N)Ú
isinstancerZ   r   ÚDistributionr$   )r%   r   r   r   ÚtestDistroType’   s    zTestDistro.testDistroTypec             C   s  |  j  j d ƒ |  j  j d d g k s. t ‚ |  j  j d ƒ |  j  j d g k sY t ‚ |  j  j d g k st t ‚ |  j  j |  j |  j g k s˜ t ‚ |  j  j d ƒ |  j  j g  k sÀ t ‚ |  j  j d g k sÛ t ‚ |  j  j |  j g k sù t ‚ t ƒ  j d ƒ d  S)NrR   rS   rT   r   )	rZ   Úexclude_packagerQ   r$   rU   rV   rX   rY   r   )r%   r   r   r   ÚtestExcludePackage•   s    $zTestDistro.testExcludePackagec             C   sµ   |  j  j d |  j g ƒ |  j  j |  j g k s7 t ‚ |  j  j d |  j g ƒ |  j  j |  j |  j g k st t ‚ |  j  j d |  j g ƒ |  j  j |  j |  j g k s± t ‚ d  S)NrV   )rZ   ÚexcluderX   rV   rY   r$   Úinclude)r%   r   r   r   ÚtestIncludeExclude¦   s    $zTestDistro.testIncludeExcludec             C   sq   |  j  j d d d d g ƒ |  j  j g  k s4 t ‚ |  j  j d g k sO t ‚ |  j  j |  j g k sm t ‚ d  S)NrQ   rT   rS   rR   r   )rZ   rb   rQ   r$   rU   rV   rX   )r%   r   r   r   ÚtestExcludePackages³   s    zTestDistro.testExcludePackagesc             C   sf   t  ƒ  } | j d d g d d g d |  j g ƒ t  ƒ  } | j d d g d d g d |  j g ƒ d  S)NrQ   rR   rU   rS   rV   )r   rc   rY   rb   )r%   rZ   r   r   r   Ú	testEmpty¹   s    	(	zTestDistro.testEmptyc             C   sÇ   |  j  j d ƒ s t ‚ |  j  j d ƒ |  j  j d ƒ sA t ‚ |  j  j d ƒ sY t ‚ |  j  j d ƒ |  j  j d ƒ s‚ t ‚ |  j  j d ƒ sš t ‚ |  j  j d ƒ |  j  j d ƒ sÃ t ‚ d  S)NrR   rS   rT   )rZ   Zhas_contents_forr$   r`   )r%   r   r   r   ÚtestContents¿   s    zTestDistro.testContentsc          ;   C   sr  t  j t ƒ � |  j j d d ƒ Wd  QRXt  j t ƒ � |  j j d d ƒ Wd  QRXt  j t ƒ � |  j j d d d i ƒ Wd  QRXt  j t ƒ � |  j j d d d i ƒ Wd  QRXt  j t ƒ � |  j j d d d i ƒ Wd  QRXt  j t ƒ � |  j j d d d i ƒ Wd  QRXt  j t ƒ � |  j j d d g ƒ Wd  QRXt  j t ƒ � |  j j d d g ƒ Wd  QRXd  S)NZnonexistent_optionr   rQ   r   rV   rW   r   )r'   r(   r   rZ   rc   rb   )r%   r   r   r   ÚtestInvalidIncludeExcludeÌ   s         z$TestDistro.testInvalidIncludeExcludeN)rL   rM   rN   r\   r_   ra   rd   re   rf   rg   rh   r   r   r   r   rP   †   s   rP   c             C   s3   |  j  d ƒ |  d j d ƒ |  d j d ƒ |  S)NÚfooz
foo/bar.pyÚ z
readme.txt)ÚmkdirÚwrite)Útmpdirr   r   r   Úexample_sourceà   s    rn   c                sV   t  t j t ˆ  ƒ ƒ ƒ } d d g } ‡  f d d †  | Dƒ } | | k sR t ‚ d  S)Nz
readme.txtz
foo/bar.pyc                s   g  |  ] } ˆ  j  | ƒ ‘ q Sr   )Újoin)rF   Úfn)rn   r   r   rH   ë   s   	 z test_findall.<locals>.<listcomp>)Úlistr   Úfindallr:   r$   )rn   ÚfoundÚexpectedr   )rn   r   Útest_findallè   s    ru   c             C   sW   |  j  ƒ  � t t j ƒ  ƒ } Wd  QRXd t j j d d ƒ g } | | k sS t ‚ d  S)Nz
readme.txtri   zbar.py)Úas_cwdrq   r   rr   rC   rD   ro   r$   )rn   rs   rt   r   r   r   Útest_findall_curdirï   s    rw   c             C   s\   d } d } y t  j | | ƒ Wn( t t t f k
 rJ t j d ƒ Yn Xt  j | ƒ d S)z/
    Skip if cannot create a symbolic link
    ÚlinkÚtargetzCannot create symbolic linksN)rC   ÚsymlinkÚOSErrorÚNotImplementedErrorÚAttributeErrorr'   ÚskipÚremove)rm   Zlink_fnZ	target_fnr   r   r   Úcan_symlinkö   s    r€   c          
   C   sL   |  j  ƒ  �9 t j d d ƒ t t j ƒ  ƒ } | g  k sA t ‚ Wd  QRXd  S)Nri   Úbar)rv   rC   rz   rq   r   rr   r$   )rm   rs   r   r   r   Útest_findall_missing_symlink  s    r‚   z$unable to exclude tests; #4475 #3260c          
   C   sV   t  |  ƒ �  } d d „  | j ƒ  Dƒ } Wd  QRXx  | D] } d | k s6 t ‚ q6 Wd  S)Nc             S   s%   g  |  ] } | j  t j d  ƒ ‘ q S)ú/)ÚreplacerC   Úsep)rF   r,   r   r   r   rH     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   sR   t  |  ƒ �  } d d „  | j ƒ  Dƒ } Wd  QRXt d d „  | Dƒ ƒ sN t ‚ d  S)Nc             S   s%   g  |  ] } | j  t j d  ƒ ‘ q S)rƒ   )r„   rC   r…   )rF   r,   r   r   r   rH     s   	 z3test_wheel_includes_cli_scripts.<locals>.<listcomp>c             s   s   |  ] } d  | k Vq d S)z
cli-64.exeNr   )rF   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   sR   t  |  ƒ �  } d d „  | j ƒ  Dƒ } Wd  QRXt d d „  | Dƒ ƒ sN t ‚ d  S)Nc             S   s%   g  |  ] } | j  t j d  ƒ ‘ q S)rƒ   )r„   rC   r…   )rF   r,   r   r   r   rH     s   	 z9test_wheel_includes_vendored_metadata.<locals>.<listcomp>c             s   s!   |  ] } t  j d  | ƒ Vq d S)z_vendor/.*\.dist-info/METADATAN)ÚreÚsearch)rF   rŠ   r   r   r   rŒ   !  s    z8test_wheel_includes_vendored_metadata.<locals>.<genexpr>)r   r†   r�   r$   )r‡   rˆ   r‰   r   r   r   Ú%test_wheel_includes_vendored_metadata  s     r‘   )(r2   rC   r�   r0   rˆ   r   r'   Zpackaging.versionr   r   Zsetuptools.dependsÚdependsr"   Zsetuptools.distr   Údistutils.cmdr   Údistutils.corer   Zdistutils.errorsr   Zfixturer	   r   ÚmarkZskipifr!   rO   r   rP   rn   ru   rw   r€   Zusefixturesr‚   Zxfailr‹   rŽ   r‘   r   r   r   r   Ú<module>   s:   		WZ!	