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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MIrun_command_inner
returncodesearchstdoutlistglob)selftmp_pathconfigmsgproc r   R/var/www/html/venv/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 )TestWheelCompatibilityzMake 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@