o
    LK&hÖ:  ã                   @   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)Ú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)ÚrequestÚdistutils_managed_tempdirÚself© r"   úY/var/www/html/venv/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   €"ÿr0   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ÚurlÚauthorÚauthor_emailr   r   TÚdist)r   Úscript_nameÚpackagesÚinclude_package_datar   Údist_dir)r!   Úmetadatar7   Úcmdr"   r"   r#   Úget_cmdG   s   ûzTestSDist.get_cmdÚ
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Úzipr7   ú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_filer>   ÚformatsÚensure_finalizedÚrunÚlistdirÚzipfileÚZipFileÚnamelistÚcloseÚsorted)r!   r7   r=   Ú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Útarr7   zns_fake_pkg-1.0.tarúns_fake_pkg-1.0.tar.gz)
r>   rR   rS   rT   r   r   rO   rU   ÚsortÚremove)r!   r7   r=   r[   Ú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)rD   r   r   údoc.txtr   zdoc.datÚdatazdata.dtÚsomer@   zlast-message.txtúbuildout.cfgú
inroot.txtzfile.txtzother_file.txt)údata/data.dtrl   rm   Únotexistingúsome/file.txtúsome/other_file.txtÚscriptsz	script.pyrB   Tr7   rC   )rD   rE   r   rl   zdata/rn   rm   zscripts/zscripts/script.pyr   zsome/rp   rq   rF   rG   zsomecode/doc.datzsomecode/doc.txtc                 S   rH   rI   r"   rJ   r"   r"   r#   rM   ø   rN   z/TestSDist.test_add_defaults.<locals>.<listcomp>ÚMANIFESTr%   r&   Úsep)r>   Úpackage_datarQ   r   r   rO   rP   Ú
data_filesrr   rR   Úuse_defaultsrS   rT   rU   rV   rW   rX   rY   rZ   r(   r   Ú	read_textrs   rt   )r!   r7   r=   Údata_dirÚsome_dirÚhg_dirÚ
script_dirr[   r\   r]   r^   r_   Ú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)rK   Úmsg©Úprefixr"   r#   rM      s    z&TestSDist.warnings.<locals>.<listcomp>r"   )Úmessagesrƒ   r"   r‚   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)r<   zwarning: check: r   Fr   )r>   rS   rT   Úlenr…   r„   ÚclearÚmetadata_check)r!   Úcaplogr7   r=   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-   r€   )rK   Úliner"   r"   r#   rM     s    ýÿz/TestSDist.test_show_formats.<locals>.<listcomp>Ú
)r   r†   r   ÚkeysÚ
readouterrÚoutÚsplit)r!   ÚcapsysÚ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 )Nrs   úMANIFEST.inr7   r   rB   Úsupazipa)	r>   Úfinalize_optionsr}   Útemplater;   rR   ÚpytestÚraisesr   ©r!   r7   r=   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   )r>   rO   Úchdirr   rQ   rS   r   ÚfilelistÚread_templater†   r…   r„   )r!   r^   r‰   r7   r=   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¡   )NÚ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   rh   ri   r   ra   é   zdoc2.txtÚbuild_pyFé   éÿÿÿÿ)r>   ru   rQ   r   rR   rS   rT   r
   r0   r}   Úget_command_objÚ	finalizedÚlistr†   )r!   r7   r=   r©   Ú	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)r>   rS   rT   Únextr0   r}   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	   r>   rS   rQ   r   r}   rT   rž   r\   )r!   Úcontentsr7   r=   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 )	Nra   zREADME.manualz0This project maintains its MANIFEST file itself.r7   rc   c                 S   s   g | ]}|j ‘qS r"   )r2   )rK   Útarinfor"   r"   r#   rM      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)r>   rR   rS   rQ   r   r}   rT   rž   r\   r®   r0   r   Útarfiler)   rY   rZ   )r!   r7   r=   Ú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 )Nra   r   r7   rc   )r>   rR   r   ÚgetpwuidÚownerr   ÚgetgrgidÚgrouprS   rT   r   r   r¶   r)   Ú
getmembersÚuidÚgidrY   rO   Úgetuid)r!   r7   r=   r·   r¸   Úmemberr"   r"   r#   Ú"test_make_distribution_owner_group©  s2   
þ
ÿz,TestSDist.test_make_distribution_owner_group)N)r   )Ú__name__Ú
__module__Ú__qualname__r>   r™   ÚmarkÚusefixturesr`   Úskipifrg   r~   Ústaticmethodr…   rŠ   r”   rœ   r    r¤   r¦   r§   r°   r²   r´   rº   r   r   rÄ   r"   r"   r"   r#   r1   F   sF    



0



T

	












r1   ))Ú__doc__rO   r(   Úshutilr¶   rV   Údistutils.archive_utilr   Údistutils.command.sdistr   r   Údistutils.corer   Údistutils.errorsr   Údistutils.filelistr   Úos.pathr   Útextwrapr	   Újaraco.pathr   r   r™   Úmore_itertoolsr
   rD   r   Úunix_compatr   r   r   r   r   rs   Úfixturer$   r0   ÚTempdirManagerr1   r"   r"   r"   r#   Ú<module>   s2    

