o
    JAf¿B  ã                   @   sV  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 ddlmZ zddlZdZW n eyC   dZY nw zddlZddlZdZW n ey[   dZY nw 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r©ee)ƒ ƒ dS dS )z"Tests for distutils.command.sdist.é    N)Újoin)Údedent)Úcaptured_stdoutÚrun_unittest)Úcheck_warningsTF)Ú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u d¡e 
edƒdu 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u d¡e 
edƒdu 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ú#úsetup.py)Úsuperr   ÚsetUpÚosÚgetcwdÚold_pathÚmkdirr   Útmp_dirÚ
write_fileÚSETUP_PYÚchdir©Úself©Ú	__class__© ú1/usr/lib/python3.10/distutils/tests/test_sdist.pyr   :   s   
zSDistTestCase.setUpc                    s   t  | j¡ tt| ƒ ¡  d S ©N)r   r    r   r   r   ÚtearDownr!   r#   r%   r&   r(   H   s   zSDistTestCase.tearDownNc                 C   sJ   |du 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ÚurlZauthorZauthor_emailr   r   Tr   )r	   Zscript_nameZpackagesZinclude_package_datar   Údist_dir)r"   Úmetadatar   Úcmdr%   r%   r&   Úget_cmdM   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 | ¡  n| ¡  w g d¢}|  
t|ƒdd„ |D ƒ¡ d S )Nr   z.svnzok.pyr   ú.hgÚokz.gitz.nfs0001Úzipr   úfake-1.0.zip)Ú úPKG-INFOr   r   ú	somecode/úsomecode/__init__.pyc                 S   ó   g | ]}d | ‘qS ©z	fake-1.0/r%   ©Ú.0Úxr%   r%   r&   Ú
<listcomp>†   ó    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_list[   s8   ÿÿÿÿ

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ÚgztarrO   r   zfake-1.0.tarúfake-1.0.tar.gz)r/   r?   r@   rA   r   r   r   rB   ÚsortrC   Úremove)r"   r   r.   rI   Ú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	g d¢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 |	 ¡  n|	 ¡  w g d¢}|  t|
ƒdd„ |D ƒ¡ tt| jdƒƒ}z
| ¡ }W | ¡  n| ¡  w |  |tdtji ¡ d S ) Nz*.cfgz*.datú*.txt)r4   r   r   údoc.txtr   zdoc.datÚdatazdata.dtZsomer0   zlast-message.txtúbuildout.cfgú
inroot.txtzfile.txtzother_file.txt)údata/data.dtrZ   r[   Znotexistingúsome/file.txtúsome/other_file.txtÚscriptsz	script.pyr2   Tr   r3   )r4   r5   r   rZ   zdata/r\   r[   zscripts/zscripts/script.pyr   zsome/r]   r^   r6   r7   zsomecode/doc.datzsomecode/doc.txtc                 S   r8   r9   r%   r:   r%   r%   r&   r=   î   r>   z3SDistTestCase.test_add_defaults.<locals>.<listcomp>ÚMANIFESTÚsep)r/   Úpackage_datar   r   r   r   r   Z
data_filesr_   r?   Zuse_defaultsr@   rA   rB   rC   rD   rE   rF   rG   rH   ÚopenÚreadr`   ra   )r"   r   r.   Zdata_dirZsome_dirZhg_dirZ
script_dirrI   rJ   rK   rL   rM   ÚfÚmanifestr%   r%   r&   Útest_add_defaults©   sX   ÿ



û



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   ó   g | ]	}|  d ¡r|‘qS ©zwarning: check:©Ú
startswith©r;   Úmsgr%   r%   r&   r=     ó    
ÿz<SDistTestCase.test_metadata_check_option.<locals>.<listcomp>é   r   c                 S   rh   ri   rj   rl   r%   r%   r&   r=     rn   )	r/   r@   rA   Úget_logsr   rC   ÚlenZ
clear_logsZmetadata_check)r"   r   r.   Úwarningsr%   r%   r&   Útest_metadata_check_optionø   s   z(SDistTestCase.test_metadata_check_optionc                 C   s\   |   ¡ \}}tƒ }t d¡ | ¡  |  t|jƒd¡ W d   ƒ d S 1 s'w   Y  d S )NÚalwaysé   )r/   r   rr   ÚsimplefilterZcheck_metadatarC   rq   )r"   r   r.   Úwr%   r%   r&   Útest_check_metadata_deprecated  s   
"ýz,SDistTestCase.test_check_metadata_deprecatedc                 C   sd   t ƒ }tƒ  W d   ƒ n1 sw   Y  tt ¡ ƒ}dd„ | ¡  d¡D ƒ}|  t|ƒ|¡ d S )Nc                 S   s   g | ]}|  ¡  d ¡r|‘qS )z
--formats=)Ústriprk   ©r;   Úliner%   r%   r&   r=     s    
ÿz3SDistTestCase.test_show_formats.<locals>.<listcomp>Ú
)r   r   rq   r   ÚkeysÚgetvalueÚsplitrC   )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 )Nr`   úMANIFEST.inr   ru   r2   Zsupazipa)	r/   Zfinalize_optionsrC   rf   Útemplater,   r?   Z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 )Nrƒ   ru   )r/   r   r    r   r   r@   r   ÚfilelistZread_templaterp   r   rC   rq   )r"   rL   r   r.   rr   r%   r%   r&   Ú_check_template8  s   
zSDistTestCase._check_templatec                 C   ó   |   d¡ d S )Nztaunt knights *©r‡   r!   r%   r%   r&   Ú%test_invalid_template_unknown_commandB  s   z3SDistTestCase.test_invalid_template_unknown_commandc                 C   rˆ   )NZpruner‰   r!   r%   r%   r&   Ú%test_invalid_template_wrong_argumentsE  s   z3SDistTestCase.test_invalid_template_wrong_argumentsÚntztest relevant for Windows onlyc                 C   rˆ   )Nzinclude examples/r‰   r!   r%   r%   r&   Ú test_invalid_template_wrong_pathI  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 | ¡  n| ¡  w |  t|ƒd	¡ |  | jdd
fd¡ | d¡}d|_| ¡  | ¡  t|jƒ}zdd„ | 	¡  
d¡D ƒ}W | ¡  n| ¡  w |  t|ƒd¡ |  d
|d ¡ d S )Nr   rW   rX   r   rQ   c                 S   ó    g | ]}|  ¡ d kr|  ¡ ‘qS ©r4   ©ry   rz   r%   r%   r&   r=   ]  ó    ÿz4SDistTestCase.test_get_file_list.<locals>.<listcomp>r|   é   zdoc2.txtÚbuild_pyFc                 S   rŽ   r   r   rz   r%   r%   r&   r=   p  r‘   é   éÿÿÿÿ)r/   rb   r   r   r?   r@   rA   rc   rf   rd   r   rG   rC   rq   Zget_command_objZ	finalizedZassertIn)r"   r   r.   re   rf   r“   Z	manifest2r%   r%   r&   Útest_get_file_listO  s,   


z SDistTestCase.test_get_file_listc                 C   sj   |   ¡ \}}| ¡  | ¡  t|jƒ}zdd„ | ¡  d¡D ƒ}W | ¡  n| ¡  w |  |d d¡ d S )Nc                 S   rŽ   r   r   rz   r%   r%   r&   r=   ‚  r‘   z6SDistTestCase.test_manifest_marker.<locals>.<listcomp>r|   r   z*# file GENERATED by distutils, do NOT edit)	r/   r@   rA   rc   rf   rd   r   rG   rC   )r"   r   r.   re   rf   r%   r%   r&   Útest_manifest_markery  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/   r@   r   r   rf   rA   rC   r†   rJ   )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 | ¡  n| ¡  w |  |dg¡ t| jddƒ}t 
|¡}zd	d„ |D ƒ}W | ¡  n| ¡  w |  t|ƒg d
¢¡ d S )NrQ   zREADME.manualz0This project maintains its MANIFEST file itself.c                 S   rŽ   r   r   rz   r%   r%   r&   r=   ©  r‘   z6SDistTestCase.test_manual_manifest.<locals>.<listcomp>r|   r   rR   c                 S   s   g | ]}|j ‘qS r%   )r)   )r;   Útarinfor%   r%   r&   r=   ³  s    )zfake-1.0zfake-1.0/PKG-INFOzfake-1.0/README.manual)r/   r?   r@   r   r   rf   rA   rC   r†   rJ   rc   rd   r   rG   r   ÚtarfilerH   )r"   r   r.   re   rf   Ú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 |¡}z| ¡ D ]}|  |jd¡ |  |jd¡ q3W | ¡  n| ¡  w |   ¡ \}}dg|_| ¡  | 	¡  t
| jddƒ}t |¡}z| ¡ D ]}|  |jt ¡ ¡ qrW | ¡  d S | ¡  w )NrQ   r   r   rR   )r/   r?   ÚpwdÚgetpwuidÚownerÚgrpÚgetgrgidÚgroupr@   rA   r   r   r›   rc   Z
getmembersrC   ÚuidÚgidrG   r   Úgetuid)r"   r   r.   rœ   r   Úmemberr%   r%   r&   Ú"test_make_distribution_owner_group¹  s2   
þ
ÿz0SDistTestCase.test_make_distribution_owner_groupr'   )Ú__name__Ú
__module__Ú__qualname__r   r(   r/   ÚunittestZ
skipUnlessÚZLIB_SUPPORTrN   ZskipIfr   rV   rg   rs   rx   r‚   r…   r‡   rŠ   r‹   r   r)   r   r–   r—   r™   rŸ   ÚUID_GID_SUPPORTrª   Ú__classcell__r%   r%   r#   r&   r   8   sV    



,ÿÿ


N






)






ÿÿr   c                   C   s
   t  t¡S r'   )r®   Z	makeSuiter   r%   r%   r%   r&   Ú
test_suiteé  s   
r²   Ú__main__)+Ú__doc__r   r›   r®   rr   rD   Zos.pathr   Útextwrapr   Ztest.supportr   r   Ztest.support.warnings_helperr   Úzlibr¯   ÚImportErrorr£   r    r°   Zdistutils.command.sdistr   r   Zdistutils.corer	   Zdistutils.tests.test_configr
   Zdistutils.errorsr   Zdistutils.spawnr   Zdistutils.logr   Zdistutils.filelistr   Zdistutils.archive_utilr   r   r`   r   r²   r«   r%   r%   r%   r&   Ú<module>   sR    ÿÿ   4ÿ