o
    ªZhÒ:  ã                   @   s  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	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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 m!Z! dZ"dZ#ej$dddd„ ƒZ%dd„ Z&G dd„ dej'ƒZ(dS )z"Tests for distutils.command.sdist.é    N)ÚARCHIVE_FORMATS)ÚsdistÚshow_formats)ÚDistribution)ÚDistutilsOptionError)ÚFileList)Újoin)Údedent)Úilené   )Úsupport)ÚgrpÚpwdÚrequire_uid_0Úrequire_unix_idzF
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
T)Zautousec                 c   sf    | j }| ¡ |_tj ddidtdœ|j¡ t |j¡ d V  W d   ƒ d S 1 s,w   Y  d S )Nz__init__.pyú#Úxxx)ÚsomecodeÚREADMEúsetup.py)ÚinstanceÚmkdtempÚtmp_dirÚjaracoÚpathÚbuildÚSETUP_PYÚPath)ÚrequestZdistutils_managed_tempdirÚself© r    ú]/var/www/html/lang_env/lib/python3.10/site-packages/setuptools/_distutils/tests/test_sdist.pyÚproject_dir/   s   €
ÿûø
"ÿr"   c                 c   sR    t  | ¡jdd}td ttj|ƒƒE d H  W d   ƒ d S 1 s"w   Y  d S )Núutf-8©Úencoding)Úpathlibr   ÚopenÚfilterÚmapÚstrÚstrip)ÚfilepathÚfr    r    r!   Úclean_linesA   s   €"ÿr.   c                   @   sL  e Zd Zd)dd„Zej d¡dd„ ƒZej d¡ej d¡ej d¡d	d
„ ƒƒƒZ	ej d¡dd„ ƒZ
ed*dd„ƒZej d¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zej d¡dd„ ƒZej d¡dd „ ƒZej d¡d!d"„ ƒZej d¡d#d$„ ƒZej d¡d%d&„ ƒZej d¡eeej d¡ej d¡d'd(„ ƒƒƒƒƒZdS )+Ú	TestSDistNc                 C   sJ   |du rddddddœ}t |ƒ}d|_dg|_d|_t|ƒ}d	|_||fS )
zReturns a cmdNzns.fake--pkgz1.0r   )ÚnameÚversionÚurlZauthorZauthor_emailr   r   TÚdist)r   Úscript_nameÚpackagesZinclude_package_datar   Údist_dir)r   Úmetadatar3   Úcmdr    r    r!   Úget_cmdG   s   ûzTestSDist.get_cmdZ
needs_zlibc                 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ksmJ ‚t
 t|dƒ¡}z
| ¡ }W | ¡  n| ¡  w g d¢}t|ƒdd„ |D ƒks–J ‚d S )Nr   z.svnzok.pyr   ú.hgÚokz.gitz.nfs0001Úzipr3   úns_fake_pkg-1.0.zip)Ú úPKG-INFOr   r   ú	somecode/úsomecode/__init__.pyc                 S   ó   g | ]}d | ‘qS ©zns_fake_pkg-1.0/r    ©Ú.0Úxr    r    r!   Ú
<listcomp>ˆ   ó    z2TestSDist.test_prune_file_list.<locals>.<listcomp>)ÚosÚmkdirr   r   Ú
write_filer9   ÚformatsÚensure_finalizedÚrunÚlistdirÚzipfileÚZipFileÚnamelistÚcloseÚsorted)r   r3   r8   Údist_folderÚfilesÚzip_fileÚcontentÚexpectedr    r    r!   Útest_prune_file_listY   s(   

zTestSDist.test_prune_file_listznot shutil.which('tar')znot shutil.which('gzip')c                 C   s´   |   ¡ \}}ddg|_| ¡  | ¡  t| jdƒ}t |¡}| ¡  |ddgks*J ‚t 	t|dƒ¡ t 	t|dƒ¡ ddg|_| ¡  | ¡  t |¡}| ¡  |ddgksXJ ‚d S )NÚgztarÚtarr3   zns_fake_pkg-1.0.tarúns_fake_pkg-1.0.tar.gz)
r9   rL   rM   rN   r   r   rI   rO   ÚsortÚremove)r   r3   r8   rU   Úresultr    r    r!   Útest_make_distributionŠ   s    



z TestSDist.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ks»J ‚t t|dƒ¡}	z
|	 ¡ }
W |	 ¡  n|	 ¡  w g d¢}t|
ƒdd„ |D ƒksäJ ‚t | jd¡jdd }|td!tji ksúJ ‚d S )"Nz*.cfgz*.datú*.txt)r>   r   r   údoc.txtr   zdoc.datÚdatazdata.dtZsomer:   zlast-message.txtúbuildout.cfgú
inroot.txtzfile.txtzother_file.txt)údata/data.dtre   rf   Znotexistingúsome/file.txtúsome/other_file.txtÚscriptsz	script.pyr<   Tr3   r=   )r>   r?   r   re   zdata/rg   rf   zscripts/zscripts/script.pyr   zsome/rh   ri   r@   rA   zsomecode/doc.datzsomecode/doc.txtc                 S   rB   rC   r    rD   r    r    r!   rG   ø   rH   z/TestSDist.test_add_defaults.<locals>.<listcomp>ÚMANIFESTr#   r$   Úsep)r9   Úpackage_datarK   r   r   rI   rJ   Z
data_filesrj   rL   Zuse_defaultsrM   rN   rO   rP   rQ   rR   rS   rT   r&   r   Ú	read_textrk   rl   )r   r3   r8   Údata_dirZsome_dirZhg_dirZ
script_dirrU   rV   rW   rX   rY   Úmanifestr    r    r!   Útest_add_defaults©   sN   



ý


zTestSDist.test_add_defaultsú	warning: c                    s   ‡ fdd„| D ƒS )Nc                    s   g | ]	}|  ˆ ¡r|‘qS r    )Ú
startswith)rE   Úmsg©Úprefixr    r!   rG      s    z&TestSDist.warnings.<locals>.<listcomp>r    )Úmessagesrv   r    ru   r!   Úwarningsþ   s   zTestSDist.warningsc                 C   s‚   | j i d\}}| ¡  | ¡  t|  |jd¡ƒdksJ ‚| ¡  |   ¡ \}}| ¡  d|_| ¡  t|  |jd¡ƒdks?J ‚d S )N)r7   zwarning: check: r   r   )r9   rM   rN   Úlenrx   rw   ÚclearZmetadata_check)r   Úcaplogr3   r8   r    r    r!   Útest_metadata_check_option  s   z$TestSDist.test_metadata_check_optionc                 C   s@   t ƒ  tt ¡ ƒ}dd„ | ¡ j d¡D ƒ}t|ƒ|ksJ ‚d S )Nc                 S   s   g | ]}|  ¡  d ¡r|‘qS )z
--formats=)r+   rs   )rE   Úliner    r    r!   rG     s    ýÿz/TestSDist.test_show_formats.<locals>.<listcomp>Ú
)r   ry   r   ÚkeysZ
readouterrÚoutÚsplit)r   ZcapsysZnum_formatsÚoutputr    r    r!   Útest_show_formats  s   þzTestSDist.test_show_formatsc                 C   sÄ   |   ¡ \}}| ¡  |jdksJ ‚|jdksJ ‚|jdksJ ‚d|_t t¡ | ¡  W d   ƒ n1 s6w   Y  dg|_| ¡  d|_t t¡ | ¡  W d   ƒ d S 1 s[w   Y  d S )Nrk   úMANIFEST.inr3   r   r<   Zsupazipa)	r9   Úfinalize_optionsrp   Útemplater6   rL   ÚpytestZraisesr   ©r   r3   r8   r    r    r!   Útest_finalize_options!  s   
ÿ
"ÿzTestSDist.test_finalize_optionsc                 C   sX   |   ¡ \}}t | j¡ |  d|¡ | ¡  tƒ |_| ¡  t	|  
|j¡ƒdks*J ‚d S )Nr„   r   )r9   rI   Úchdirr   rK   rM   r   ÚfilelistZread_templatery   rx   rw   )r   rX   r{   r3   r8   r    r    r!   Ú_check_template:  s   zTestSDist._check_templatec                 C   ó   |   d|¡ d S )Nztaunt knights *©rŒ   ©r   r{   r    r    r!   Ú%test_invalid_template_unknown_commandC  s   z/TestSDist.test_invalid_template_unknown_commandc                 C   r   )NZprunerŽ   r   r    r    r!   Ú%test_invalid_template_wrong_argumentsF  s   z/TestSDist.test_invalid_template_wrong_argumentszplatform.system() != 'Windows'c                 C   r   )Nzinclude examples/rŽ   r   r    r    r!   Ú test_invalid_template_wrong_pathJ  s   z*TestSDist.test_invalid_template_wrong_pathc                 C   sÀ   |   ¡ \}}ddgi|_|  | jddfd¡ dg|_| ¡  | ¡  tt|j	ƒƒdks-J ‚|  | jddfd¡ | 
d¡}d	|_| ¡  | ¡  tt|j	ƒƒ}t|ƒd
ksVJ ‚d|d v s^J ‚d S )Nr   rb   rc   r   r[   é   zdoc2.txtÚbuild_pyFé   éÿÿÿÿ)r9   rm   rK   r   rL   rM   rN   r
   r.   rp   Zget_command_objZ	finalizedÚlistry   )r   r3   r8   r”   Z	manifest2r    r    r!   Útest_get_file_listP  s   
zTestSDist.test_get_file_listc                 C   s6   |   ¡ \}}| ¡  | ¡  tt|jƒƒdksJ ‚d S )Nz*# file GENERATED by distutils, do NOT edit)r9   rM   rN   Únextr.   rp   rˆ   r    r    r!   Útest_manifest_markern  s   ÿzTestSDist.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ks@J ‚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	   r9   rM   rK   r   rp   rN   r‹   rV   )r   Úcontentsr3   r8   r    r    r!   Útest_manifest_commentsz  s   ÿz TestSDist.test_manifest_commentsc                 C   sÊ   |   ¡ \}}dg|_| ¡  |  | j|jfd¡ |  | jdfd¡ | ¡  |jjdgks.J ‚t	t
|jƒƒdgks:J ‚t| jddƒ}t |¡}zdd„ |D ƒ}W | ¡  n| ¡  w t|ƒg d¢kscJ ‚d S )	Nr[   zREADME.manualz0This project maintains its MANIFEST file itself.r3   r]   c                 S   s   g | ]}|j ‘qS r    )r0   )rE   Útarinfor    r    r!   rG      s    z2TestSDist.test_manual_manifest.<locals>.<listcomp>)zns_fake_pkg-1.0zns_fake_pkg-1.0/PKG-INFOzns_fake_pkg-1.0/README.manual)r9   rL   rM   rK   r   rp   rN   r‹   rV   r—   r.   r   Útarfiler'   rS   rT   )r   r3   r8   Úarchive_nameÚarchiveÚ	filenamesr    r    r!   Útest_manual_manifest  s"   þ
zTestSDist.test_manual_manifestc                 C   s  |   ¡ \}}dg|_t d¡d |_t d¡d |_| ¡  | 	¡  t
| jddƒ}t |¡}z| ¡ D ]}|jdks<J ‚|jdksCJ ‚q3W | ¡  n| ¡  w |   ¡ \}}dg|_| ¡  | 	¡  t
| jddƒ}t |¡}z| ¡ D ]}|jt ¡ ks}J ‚qrW | ¡  d S | ¡  w )Nr[   r   r3   r]   )r9   rL   r   ÚgetpwuidÚownerr   ÚgetgrgidÚgrouprM   rN   r   r   rž   r'   Ú
getmembersÚuidÚgidrS   rI   Úgetuid)r   r3   r8   rŸ   r    Úmemberr    r    r!   Ú"test_make_distribution_owner_group©  s2   
þ
ÿz,TestSDist.test_make_distribution_owner_group)N)rr   )Ú__name__Ú
__module__Ú__qualname__r9   r‡   ÚmarkZusefixturesrZ   Zskipifra   rq   Ústaticmethodrx   r|   rƒ   r‰   rŒ   r   r‘   r’   r˜   rš   rœ   r¢   r   r   r¬   r    r    r    r!   r/   F   sF    



0



T

	












r/   ))Ú__doc__rI   r&   Úshutilrž   rP   Zdistutils.archive_utilr   Zdistutils.command.sdistr   r   Zdistutils.corer   Zdistutils.errorsr   Zdistutils.filelistr   Zos.pathr   Útextwrapr	   Zjaraco.pathr   r   r‡   Zmore_itertoolsr
   r>   r   Zunix_compatr   r   r   r   r   rk   Zfixturer"   r.   ZTempdirManagerr/   r    r    r    r!   Ú<module>   s2    

