B
    18™\—B  ã               @   sP  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mZmZ yddlZdZW n ek
r€   dZY nX yddlZddlZdZW n ek
r²   dZY nX 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 ddlm Z  ddl!m"Z" ddl#m$Z$ dZ%dZ&G dd„ deƒZ'dd„ Z(e)dkrLee(ƒ ƒ dS )z"Tests for distutils.command.sdist.é    N)Újoin)Údedent)Úcaptured_stdoutÚcheck_warningsÚrun_unittestTF)ÚsdistÚshow_formats)ÚDistribution)ÚBasePyPIRCCommandTestCase)ÚDistutilsOptionError)Úfind_executable)ÚWARN)ÚFileList)ÚARCHIVE_FORMATSzF
from distutils.core import setup
import somecode

setup(name='fake')
zõ# file GENERATED by distutils, do NOT edit
README
buildout.cfg
inroot.txt
setup.py
data%(sep)sdata.dt
scripts%(sep)sscript.py
some%(sep)sfile.txt
some%(sep)sother_file.txt
somecode%(sep)s__init__.py
somecode%(sep)sdoc.dat
somecode%(sep)sdoc.txt
c                   sŒ  e Zd Z‡ fdd„Z‡ fdd„Zd1dd„Ze ed¡d	d
„ ƒZ	e ed¡e 
edƒdkd¡e 
edƒdkd¡dd„ ƒƒƒZe ed¡dd„ ƒZe ed¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Ze 
ejd!kd"¡d#d$„ ƒZe ed¡d%d&„ ƒZe ed¡d'd(„ ƒZe ed¡d)d*„ ƒZe ed¡d+d,„ ƒZe ed-¡e ed.¡e 
edƒdkd¡e 
edƒdkd¡d/d0„ ƒƒƒƒZ‡  ZS )2ÚSDistTestCasec                s„   t t| ƒ ¡  t ¡ | _t t| jdƒ¡ t t| jdƒ¡ |  	| jdfd¡ |  	| jddfd¡ |  	| jdft
¡ t | j¡ d S )NÚsomecodeÚdistÚREADMEÚxxxz__init__.pyú#zsetup.py)Úsuperr   ÚsetUpÚosÚgetcwdÚold_pathÚmkdirr   Útmp_dirÚ
write_fileÚSETUP_PYÚchdir)Úself)Ú	__class__© ú^/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/distutils/tests/test_sdist.pyr   9   s    
zSDistTestCase.setUpc                s   t  | j¡ tt| ƒ ¡  d S )N)r   r   r   r   r   ÚtearDown)r    )r!   r"   r#   r$   G   s    zSDistTestCase.tearDownNc             C   sJ   |dkrddddddœ}t |ƒ}d|_dg|_d|_t|ƒ}d	|_||fS )
zReturns a cmdNZfakez1.0r   )ÚnameÚversionÚurlÚauthorÚauthor_emailzsetup.pyr   Tr   )r	   Úscript_nameÚpackagesZinclude_package_datar   Údist_dir)r    Úmetadatar   Úcmdr"   r"   r#   Úget_cmdL   s    zSDistTestCase.get_cmdzNeed zlib support to runc             C   s0  t  t| jddƒ¡ |  | jdddfd¡ t  t| jddƒ¡ |  | jdddfd¡ t  t| jddƒ¡ |  | jdddfd¡ |  | jddfd¡ |  ¡ \}}d	g|_| ¡  | ¡  t| jd
ƒ}t  	|¡}|  
|dg¡ t t|dƒ¡}z| ¡ }W d | ¡  X ddddddg}|  
t|ƒdd„ |D ƒ¡ d S )Nr   z.svnzok.pyr   z.hgÚokz.gitz.nfs0001Úzipr   zfake-1.0.zipÚ zPKG-INFOr   zsetup.pyz	somecode/zsomecode/__init__.pyc             S   s   g | ]}d | ‘qS )z	fake-1.0/r"   )Ú.0Úxr"   r"   r#   ú
<listcomp>…   s    z6SDistTestCase.test_prune_file_list.<locals>.<listcomp>)r   r   r   r   r   r/   ÚformatsÚensure_finalizedÚrunÚlistdirÚassertEqualÚzipfileÚZipFileÚnamelistÚcloseÚsorted)r    r   r.   Údist_folderÚfilesÚzip_fileÚcontentÚexpectedr"   r"   r#   Útest_prune_file_listZ   s.    



z"SDistTestCase.test_prune_file_listÚtarzThe tar command is not foundÚgzipzThe gzip command is not foundc             C   s´   |   ¡ \}}ddg|_| ¡  | ¡  t| jdƒ}t |¡}| ¡  |  	|ddg¡ t 
t|dƒ¡ t 
t|dƒ¡ ddg|_| ¡  | ¡  t |¡}| ¡  |  	|ddg¡ d S )NÚgztarrF   r   zfake-1.0.tarzfake-1.0.tar.gz)r/   r6   r7   r8   r   r   r   r9   Úsortr:   Úremove)r    r   r.   r@   Úresultr"   r"   r#   Útest_make_distribution‡   s     



z$SDistTestCase.test_make_distributionc             C   s$  |   ¡ \}}ddgdgdœ|_|  | jddfd¡ |  | jddfd¡ t| jd	ƒ}t |¡ |  |d
fd¡ t| jdƒ}t |¡ t| jdƒ}t |¡ |  |dfd¡ |  | jdfd¡ |  | jdfd¡ |  |dfd¡ |  |dfd¡ d	ddddgfddg|_t| jdƒ}t |¡ |  |dfd¡ tddƒg|_dg|_	d|_
| ¡  | ¡  t| jdƒ}t |¡}|  |dg¡ t t|dƒ¡}	z|	 ¡ }
W d |	 ¡  X dddddddd d!d"d#ddd$d%d&d'g}|  t|
ƒd(d)„ |D ƒ¡ tt| jd*ƒƒ}z| ¡ }W d | ¡  X |  |td+tji ¡ d S ),Nz*.cfgz*.datz*.txt)r2   r   r   zdoc.txtr   zdoc.datÚdatazdata.dtÚsomez.hgzlast-message.txtzbuildout.cfgz
inroot.txtzfile.txtzother_file.txtzdata/data.dtZnotexistingzsome/file.txtzsome/other_file.txtÚscriptsz	script.pyr1   Tr   zfake-1.0.zipr2   zPKG-INFOr   zdata/zscripts/zscripts/script.pyzsetup.pyzsome/z	somecode/zsomecode/__init__.pyzsomecode/doc.datzsomecode/doc.txtc             S   s   g | ]}d | ‘qS )z	fake-1.0/r"   )r3   r4   r"   r"   r#   r5   í   s    z3SDistTestCase.test_add_defaults.<locals>.<listcomp>ÚMANIFESTÚsep)r/   Úpackage_datar   r   r   r   r   Ú
data_filesrO   r6   Zuse_defaultsr7   r8   r9   r:   r;   r<   r=   r>   r?   ÚopenÚreadrP   rQ   )r    r   r.   Zdata_dirZsome_dirZhg_dirZ
script_dirr@   rA   rB   rC   rD   ÚfÚmanifestr"   r"   r#   Útest_add_defaults¨   sd    






zSDistTestCase.test_add_defaultsc             C   s–   | j i d\}}| ¡  | ¡  dd„ |  t¡D ƒ}|  t|ƒd¡ |  ¡  |   ¡ \}}| ¡  d|_| ¡  dd„ |  t¡D ƒ}|  t|ƒd¡ d S )N)r-   c             S   s   g | ]}|  d ¡r|‘qS )zwarning: check:)Ú
startswith)r3   Úmsgr"   r"   r#   r5      s    z<SDistTestCase.test_metadata_check_option.<locals>.<listcomp>é   r   c             S   s   g | ]}|  d ¡r|‘qS )zwarning: check:)rY   )r3   rZ   r"   r"   r#   r5   
  s    )	r/   r7   r8   Úget_logsr   r:   ÚlenÚ
clear_logsZmetadata_check)r    r   r.   Úwarningsr"   r"   r#   Útest_metadata_check_option÷   s    z(SDistTestCase.test_metadata_check_optionc          	   C   sF   |   ¡ \}}tƒ *}t d¡ | ¡  |  t|jƒd¡ W d Q R X d S )NÚalwaysé   )r/   r   r_   ÚsimplefilterÚcheck_metadatar:   r]   )r    r   r.   Úwr"   r"   r#   Útest_check_metadata_deprecated  s
    
z,SDistTestCase.test_check_metadata_deprecatedc          	   C   sP   t ƒ }tƒ  W d Q R X tt ¡ ƒ}dd„ | ¡  d¡D ƒ}|  t|ƒ|¡ d S )Nc             S   s   g | ]}|  ¡  d ¡r|‘qS )z
--formats=)ÚstriprY   )r3   Úliner"   r"   r#   r5     s    z3SDistTestCase.test_show_formats.<locals>.<listcomp>Ú
)r   r   r]   r   ÚkeysÚgetvalueÚsplitr:   )r    ÚstdoutZnum_formatsÚoutputr"   r"   r#   Útest_show_formats  s
    zSDistTestCase.test_show_formatsc             C   sz   |   ¡ \}}| ¡  |  |jd¡ |  |jd¡ |  |jd¡ d|_|  t|j¡ dg|_| ¡  d|_|  t|j¡ d S )NrP   zMANIFEST.inr   rb   r1   Zsupazipa)	r/   Úfinalize_optionsr:   rW   Útemplater,   r6   ÚassertRaisesr   )r    r   r.   r"   r"   r#   Útest_finalize_options   s    z#SDistTestCase.test_finalize_optionsc             C   sZ   |   ¡ \}}t | j¡ |  d|¡ | ¡  tƒ |_| ¡  |  	t
¡}|  t|ƒd¡ d S )NzMANIFEST.inrb   )r/   r   r   r   r   r7   r   ÚfilelistZread_templater\   r   r:   r]   )r    rC   r   r.   r_   r"   r"   r#   Ú_check_template7  s    
zSDistTestCase._check_templatec             C   s   |   d¡ d S )Nztaunt knights *)ru   )r    r"   r"   r#   Ú%test_invalid_template_unknown_commandA  s    z3SDistTestCase.test_invalid_template_unknown_commandc             C   s   |   d¡ d S )NÚprune)ru   )r    r"   r"   r#   Ú%test_invalid_template_wrong_argumentsD  s    z3SDistTestCase.test_invalid_template_wrong_argumentsÚntztest relevant for Windows onlyc             C   s   |   d¡ d S )Nzinclude examples/)ru   )r    r"   r"   r#   Ú test_invalid_template_wrong_pathH  s    z.SDistTestCase.test_invalid_template_wrong_pathc             C   s  |   ¡ \}}ddgi|_|  | jddfd¡ dg|_| ¡  | ¡  t|jƒ}zdd„ | 	¡  
d¡D ƒ}W d | ¡  X |  t|ƒd	¡ |  | jdd
fd¡ | d¡}d|_| ¡  | ¡  t|jƒ}zdd„ | 	¡  
d¡D ƒ}W d | ¡  X |  t|ƒd¡ |  d
|d ¡ d S )Nr   z*.txtzdoc.txtr   rH   c             S   s    g | ]}|  ¡ d kr|  ¡ ‘qS )r2   )rg   )r3   rh   r"   r"   r#   r5   \  s    z4SDistTestCase.test_get_file_list.<locals>.<listcomp>ri   é   zdoc2.txtÚbuild_pyFc             S   s    g | ]}|  ¡ d kr|  ¡ ‘qS )r2   )rg   )r3   rh   r"   r"   r#   r5   o  s    é   éÿÿÿÿ)r/   rR   r   r   r6   r7   r8   rT   rW   rU   rl   r>   r:   r]   Úget_command_objÚ	finalizedÚassertIn)r    r   r.   rV   rW   r|   Z	manifest2r"   r"   r#   Útest_get_file_listN  s,    




z SDistTestCase.test_get_file_listc             C   sb   |   ¡ \}}| ¡  | ¡  t|jƒ}zdd„ | ¡  d¡D ƒ}W d | ¡  X |  |d d¡ d S )Nc             S   s    g | ]}|  ¡ d kr|  ¡ ‘qS )r2   )rg   )r3   rh   r"   r"   r#   r5     s    z6SDistTestCase.test_manifest_marker.<locals>.<listcomp>ri   r   z*# file GENERATED by distutils, do NOT edit)	r/   r7   r8   rT   rW   rU   rl   r>   r:   )r    r   r.   rV   rW   r"   r"   r#   Útest_manifest_markerx  s    


z"SDistTestCase.test_manifest_markerc             C   s„   t dƒ}|  ¡ \}}| ¡  |  | j|jf|¡ |  | jdfd¡ |  | jdfd¡ |  | jdfd¡ | ¡  |  |jj	dg¡ d S )NzI            # bad.py
            #bad.py
            good.py
            zgood.pyz
# pick me!zbad.pyz# don't pick me!z#bad.py)
r   r/   r7   r   r   rW   r8   r:   rt   rA   )r    Úcontentsr   r.   r"   r"   r#   Útest_manifest_comments‰  s    z$SDistTestCase.test_manifest_commentsc             C   sì   |   ¡ \}}dg|_| ¡  |  | j|jfd¡ |  | jdfd¡ | ¡  |  |jj	dg¡ t
|jƒ}zdd„ | ¡  d¡D ƒ}W d | ¡  X |  |dg¡ t| jddƒ}t 
|¡}zd	d„ |D ƒ}W d | ¡  X |  t|ƒd
ddg¡ d S )NrH   zREADME.manualz0This project maintains its MANIFEST file itself.c             S   s    g | ]}|  ¡ d kr|  ¡ ‘qS )r2   )rg   )r3   rh   r"   r"   r#   r5   ¨  s    z6SDistTestCase.test_manual_manifest.<locals>.<listcomp>ri   r   zfake-1.0.tar.gzc             S   s   g | ]
}|j ‘qS r"   )r%   )r3   Útarinfor"   r"   r#   r5   ²  s    zfake-1.0zfake-1.0/PKG-INFOzfake-1.0/README.manual)r/   r6   r7   r   r   rW   r8   r:   rt   rA   rT   rU   rl   r>   r   Útarfiler?   )r    r   r.   rV   rW   Úarchive_nameÚarchiveÚ	filenamesr"   r"   r#   Útest_manual_manifestš  s(    



z"SDistTestCase.test_manual_manifestzrequires zlibzRequires grp and pwd supportc             C   s  |   ¡ \}}dg|_t d¡d |_t d¡d |_| ¡  | 	¡  t
| jddƒ}t |¡}z2x,| ¡ D ] }|  |jd¡ |  |jd¡ qhW W d | ¡  X |   ¡ \}}dg|_| ¡  | 	¡  t
| jddƒ}t |¡}z(x"| ¡ D ]}|  |jt ¡ ¡ qâW W d | ¡  X d S )NrH   r   r   zfake-1.0.tar.gz)r/   r6   ÚpwdÚgetpwuidÚownerÚgrpÚgetgrgidÚgroupr7   r8   r   r   r‡   rT   Ú
getmembersr:   ÚuidÚgidr>   r   Úgetuid)r    r   r.   rˆ   r‰   Úmemberr"   r"   r#   Ú"test_make_distribution_owner_group¸  s.    


z0SDistTestCase.test_make_distribution_owner_group)N)Ú__name__Ú
__module__Ú__qualname__r   r$   r/   ÚunittestÚ
skipUnlessÚZLIB_SUPPORTrE   ÚskipIfr   rL   rX   r`   rf   ro   rs   ru   rv   rx   r   r%   rz   r‚   rƒ   r…   r‹   ÚUID_GID_SUPPORTr—   Ú__classcell__r"   r"   )r!   r#   r   7   s8   
-
O

*

r   c               C   s
   t  t¡S )N)r›   Ú	makeSuiter   r"   r"   r"   r#   Ú
test_suiteè  s    r¢   Ú__main__)*Ú__doc__r   r‡   r›   r_   r;   Úos.pathr   Útextwrapr   Ztest.supportr   r   r   Úzlibr   ÚImportErrorr   rŒ   rŸ   Zdistutils.command.sdistr   r   Údistutils.corer	   Zdistutils.tests.test_configr
   Zdistutils.errorsr   Údistutils.spawnr   Zdistutils.logr   Údistutils.filelistr   Zdistutils.archive_utilr   r   rP   r   r¢   r˜   r"   r"   r"   r#   Ú<module>   sH   

   4
