o
    5‘ði�  ã                   @   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Zddl	m
Z
 ddlmZ eejjdd�ZG d	d
„ d
ƒZG dd„ dƒZdd„ Zdd„ ZdS )z$Test .dist-info style distributions.é    N)Úpartial)Úunpack_archiveé   )ÚDALSúutf-8©Úencodingc                   @   s2   e Zd Zdd„ Zdd„ Zej dd¡dd„ ƒZd	S )
ÚTestDistInfoc                 C   sh   d}|d j |dd� t dtjtjB ¡}td|dd�}|js!J ‚| |j¡s)J ‚t	| 
d	¡ƒr2J ‚d
S )zA
        Supplying an invalid version crashes dist_info.
        z@[metadata]
name=proj
version=42
[egg_info]
tag_build=invalid!!!
ú	setup.cfgr   r   zinvalid versionÚ	dist_infoF)ÚcwdÚcheckú*.dist-infoN)Ú
write_textÚreÚcompileÚ	MULTILINEÚ
IGNORECASEÚrun_command_innerÚ
returncodeÚsearchÚstdoutÚlistÚglob)ÚselfÚtmp_pathÚconfigÚmsgÚproc© r   ú^/root/parts/websockify/install/lib/python3.10/site-packages/setuptools/tests/test_dist_info.pyÚtest_invalid_version   s   
z!TestDistInfo.test_invalid_versionc                 C   s†   d}|d j |dd� ttdd|d�ƒ t| d¡ƒ}|j d	¡s#J ‚t |¡ ttdd
d|d�ƒ t| d¡ƒ}|j d¡sAJ ‚d S )Nz
        [metadata]
        name=proj
        version=42
        [egg_info]
        tag_date=1
        tag_build=.post
        r
   r   r   r   z	--no-date©r   r   zproj-42z--tag-buildz.azproj-42a)	r   ÚprintÚrun_commandÚnextr   ÚnameÚ
startswithÚshutilÚrmtree)r   r   r   r   r   r   r    Útest_tag_arguments    s   
zTestDistInfo.test_tag_argumentsÚkeep_egg_info)FTc                 C   sö   d}|d j |dd� |d }| ¡  |rdgng }tdd|g|¢R d	|iŽ tt| d
¡ƒƒdks4J ‚tt| d
¡ƒƒdksAJ ‚t|ƒ}tt| d¡ƒƒ|ksRJ ‚tt| d¡ƒƒdks_J ‚tt| d¡ƒƒdkslJ ‚tt| d¡ƒƒdksyJ ‚d S )Nz [metadata]
name=proj
version=42
r
   r   r   Ú__outz--keep-egg-infor   z--output-dirr   r   r   r   z
*.egg-infoz	*.__bkp__)r   Úmkdirr$   Úlenr   r   Úint)r   r   r+   r   ÚoutÚoptsÚexpected_egg_infor   r   r    Útest_output_dir4   s   zTestDistInfo.test_output_dirN)	Ú__name__Ú
__module__Ú__qualname__r!   r*   ÚpytestÚmarkÚparametrizer3   r   r   r   r    r	      s
    r	   c                   @   sX   e Zd ZdZedƒZg d¢Zej 	dd 
¡ ¡ej 	ddg¡ej 	de¡d	d
„ ƒƒƒZdS )ÚTestWheelCompatibilityz‡Make sure the .dist-info directory produced with the ``dist_info`` command
    is the same as the one produced by ``bdist_wheel``.
    ae  
    [metadata]
    name = {name}
    version = {version}

    [options]
    install_requires =
        foo>=12; sys_platform != "linux"

    [options.extras_require]
    test = pytest

    [options.entry_points]
    console_scripts =
        executable-name = my_package.module:function
    discover =
        myproj = my_package.other_module:function
    ))Ú r;   )ú.postz[egg_info]
tag_build = post
)r<   z[egg_info]
tag_build = .post
)r<   z)[egg_info]
tag_build = post
tag_date = 1
)ú.devz[egg_info]
tag_build = .dev
)r=   z)[egg_info]
tag_build = .dev
tag_date = 1
)Úa1z[egg_info]
tag_build = .a1
)z+localz[egg_info]
tag_build = +local
r&   zmy-proj my_proj my.proj My.ProjÚversionz0.42.13)ÚsuffixÚcfgc                 C   sì   | j j||d�| }dD ]}||  ¡  || d j|dd� qtd|d d� t| d	¡ƒ}t||d
 ƒ t| d¡ƒ}	td|d d� t| d¡ƒ}
|
j|	jksTJ ‚|
j 	d|› |› �¡saJ ‚dD ]}t
|
| ƒt
|	| ƒkssJ ‚qcd S )N)r&   r?   )Ú	dir_wheelÚdir_distr
   r   r   Úbdist_wheelrB   r"   zdir_wheel/dist/*.whlÚunpackzunpack/*.dist-infor   rC   zdir_dist/*.dist-infozmy_proj-)ÚMETADATAzentry_points.txt)ÚSETUPCFGÚformatr-   r   r$   r%   r   r   r&   r'   Úread)r   r&   r?   r   r@   rA   r   ÚiÚwheelÚwheel_dist_infor   Úfiler   r   r    Ú&test_dist_info_is_the_same_as_in_wheelk   s   ÿz=TestWheelCompatibility.test_dist_info_is_the_same_as_in_wheelN)r4   r5   r6   Ú__doc__r   rG   ÚEGG_INFO_OPTSr7   r8   r9   ÚsplitrN   r   r   r   r    r:   E   s    ÿr:   c                  O   s@   t jt jddddœ|¥}tjddgtt| ƒ¢} t j| fi |¤ŽS )NTr   )Ústderrr   Útextr   r   z-cz __import__('setuptools').setup())Ú
subprocessÚSTDOUTÚPIPEÚsysÚ
executableÚmapÚstrÚrun)ÚcmdÚkwargsr1   r   r   r    r   …   s   ûúr   c                  O   s   t | i |¤ŽjS )N)r   r   )Úargsr]   r   r   r    r$   ’   s   r$   )rO   Úpathlibr   r(   rT   rW   Ú	functoolsr   r7   Úsetuptools.archive_utilr   Útextwrapr   ÚPathÚ	read_textrI   r	   r:   r   r$   r   r   r   r    Ú<module>   s    2@