o
    NZh|                     @   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   N/var/www/auris/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   Z__outz--keep-egg-infor   z--output-dirr   r   r   r   z
*.egg-infoz	*.__bkp__)r   mkdirr$   lenr   r   int)r   r   r+   r   outoptsZexpected_egg_infor   r   r    test_output_dir4   s   zTestDistInfo.test_output_dirN)	__name__
__module____qualname__r!   r*   pytestmarkparametrizer1   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
    )) r9   ).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
)Z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_wheelr?   r"   zdir_wheel/dist/*.whlunpackzunpack/*.dist-infor   r@   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=   r>   r   iwheelZ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)r2   r3   r4   __doc__r   rD   ZEGG_INFO_OPTSr5   r6   r7   splitrJ   r   r   r   r    r8   E   s    r8   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kwargsr0   r   r   r    r      s   r   c                  O   s   t | i |jS )N)r   r   )argsrX   r   r   r    r$      s   r$   )rK   pathlibr   r(   rO   rR   	functoolsr   r5   Zsetuptools.archive_utilr   textwrapr   Path	read_textrF   r	   r8   r   r$   r   r   r   r    <module>   s    2@