a
    6Rh0#                     @   sF  d 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	Z	ddl
mZ ddlZ	ddl
mZ ddlZddlZddlmZ ddlmZ ejdd	d
d Zdd Zejjeed ddZG dd dZG dd dZejdd Zdd Zdd Z ejdd Z!ej"ddd Z#ejj$ddd d! Z%d"d# Z&d$d% Z'dS )&z"Tests for the 'setuptools' package    N)ZipFile)Version)Require)	Extension)DistutilsSetupErrorT)Zautousec                 C   s   d S N )Z
tmpdir_cwdr   r   V/opt/python-3.9.24/usr/lib/python3.9/site-packages/setuptools/tests/test_setuptools.pyisolated_dir   s    r
   c                  K   s@   dt j_| ddg ztjf i | W dt j_S dt j_0 dS )zDReturn distribution from 'setup(**args)', without executing commandscommandlinescript_argsinstallN)	distutilscore_setup_stop_after
setdefault
setuptoolssetup)argsr   r   r	   	makeSetup   s    r   get_module_constantzbytecode support not available)reasonc                   @   s@   e Zd Zdd Zdd Zedd Zedd Zed	d
 ZdS )TestDependsc                 C   sx   t tdsd S dd }|j}t|ddd u s2J t|dddksHJ t|dddks^J t|d	dd u stJ d S )
Nextract_constantc                   S   s   da tad S )Ntest)xzyr   r   r   r	   f15   s    z(TestDepends.testExtractConst.<locals>.f1qr   r   r   r   )hasattrdep__code__r   )selfr   Zfcr   r   r	   testExtractConst0   s    
zTestDepends.testExtractConstc                 C   s   t t td W d    n1 s*0    Y  t t td W d    n1 s^0    Y  td\}}}|  d S )Nzno-such.-thingzsetuptools.non-existentzsetuptools.tests)pytestraisesImportErrorr"   find_moduleclose)r$   f_pZ_ir   r   r	   testFindModuleH   s    ((zTestDepends.testFindModulec                 C   sN   ddl m} tdd|ks J tddtjks6J tddtksJJ d S )	Nr   __version__jsonr/   sysversionz setuptools.tests.test_setuptools__doc__)r0   r/   r"   r   r1   r2   r3   )r$   r/   r   r   r	   testModuleExtractP   s    
zTestDepends.testModuleExtractc                 C   s   t ddd}|jdksJ |jdks(J |jtdks:J |jdksHJ | dksXJ ddlm} t	|
 |ksxJ |dsJ |d	rJ |d
rJ | sJ | sJ t ddd}| rJ | rJ d S )NZJsonz1.0.3r0   r/   z
Json-1.0.3r   r.   z1.0.9z0.9.1unknownzDo-what-I-meanz1.0zd-w-i-m)r   namemodulerequested_versionr   	attribute	full_namer0   r/   strget_versionZ
version_ok
is_present
is_current)r$   reqr/   r   r   r	   testRequire[   s     zTestDepends.testRequirec                 C   s   t dd ddd}|jd u sJ |jd u s,J |jd u s:J | dksJJ |jdksXJ ddlm} dd |D }||sJ |	|sJ d S )	NZTeststestszhttp://example.com)homepager   )__path__c                 S   s   g | ]}t j|qS r   )ospathdirname).0pr   r   r	   
<listcomp>       z4TestDepends.test_require_present.<locals>.<listcomp>)
r   formatr9   r8   r:   rB   Zsetuptools.testsrC   r=   r>   )r$   r?   rC   pathsr   r   r	   test_require_presents   s    z TestDepends.test_require_presentN)	__name__
__module____qualname__r%   r-   needs_bytecoder4   r@   rM   r   r   r   r	   r   /   s   


r   c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )
TestDistroc                 C   sB   t ddg| _t ddg| _tg dddg| j| jfi d| _d S )	Nzbar.extzbar.czc.yzy.c)aza.bza.b.cbczb.dr   )packages
py_modulesext_modulespackage_dir)r   e1e2r   dist)r$   methodr   r   r	   setup_method   s    
zTestDistro.setup_methodc                 C   s   t | jtjjsJ d S r   )
isinstancer\   r   Distributionr$   r   r   r	   testDistroType   s    zTestDistro.testDistroTypec                 C   s   | j d | j jddgks J | j d | j jdgks>J | j jdgksPJ | j j| j| jgkshJ | j d | j jg ksJ | j jdgksJ | j j| jgksJ t d d S )NrS   rT   rU   r   )r\   exclude_packagerV   rW   rX   rZ   r[   r   ra   r   r   r	   testExcludePackage   s    zTestDistro.testExcludePackagec                 C   s~   | j j| jgd | j j| jgks&J | j j| jgd | j j| j| jgksPJ | j j| jgd | j j| j| jgkszJ d S )NrX   )r\   excluderZ   rX   r[   includera   r   r   r	   testIncludeExclude   s    zTestDistro.testIncludeExcludec                 C   sL   | j jg dd | j jg ks"J | j jdgks4J | j j| jgksHJ d S )N)rU   rT   rS   rV   r   )r\   rf   rV   rW   rX   rZ   ra   r   r   r	   testExcludePackages   s    zTestDistro.testExcludePackagesc                 C   s@   t  }|jdgdg| jgd t  }|jdgdg| jgd d S )NrS   rT   )rV   rW   rX   )r   rg   r[   rf   )r$   r\   r   r   r	   	testEmpty   s    zTestDistro.testEmptyc                 C   s   | j dsJ | j d | j dr,J | j ds<J | j d | j drXJ | j dshJ | j d | j drJ d S )NrS   rT   rU   )r\   Zhas_contents_forrc   ra   r   r   r	   testContents   s    zTestDistro.testContentsc                 C   s  t t | jjdd W d    n1 s.0    Y  t t | jjdd W d    n1 sf0    Y  t t" | jjddid W d    n1 s0    Y  t t" | jjddid W d    n1 s0    Y  t t" | jjddid W d    n1 s0    Y  t t" | jjddid W d    n1 sZ0    Y  t t  | jjdgd W d    n1 s0    Y  t t  | jjdgd W d    n1 s0    Y  d S )Nr   )Znonexistent_optionr   ri   re   r   )rY   )r&   r'   r   r\   rg   rf   ra   r   r   r	   testInvalidIncludeExclude   s     ,,00220z$TestDistro.testInvalidIncludeExcludeN)rN   rO   rP   r^   rb   rd   rh   rj   rk   rl   rm   r   r   r   r	   rR      s   rR   c                 C   s*   |  d | d d | d d | S )Nfoo
foo/bar.py 
readme.txt)mkdirwrite)tmpdirr   r   r	   example_source   s    
ru   c                    s<   t tt }ddg} fdd|D }||ks8J d S )Nrq   ro   c                    s   g | ]}  |qS r   )join)rG   fnru   r   r	   rI      rJ   z test_findall.<locals>.<listcomp>)listr   findallr;   ru   foundexpectedr   rx   r	   test_findall   s    r~   c                 C   sV   |    tt }W d    n1 s*0    Y  dtjddg}||ksRJ d S )Nrq   rn   zbar.py)as_cwdry   r   rz   rD   rE   rv   r{   r   r   r	   test_findall_curdir   s    
*r   c              
   C   sJ   d}d}zt || W n" tttfy:   td Y n0 t | dS )z/
    Skip if cannot create a symbolic link
    linktargetzCannot create symbolic linksN)rD   symlinkOSErrorNotImplementedErrorAttributeErrorr&   skipremove)rt   Zlink_fnZ	target_fnr   r   r	   can_symlink   s    r   c                 C   sP   |   4 tdd tt }|g ks.J W d    n1 sB0    Y  d S )Nrn   bar)r   rD   r   ry   r   rz   )rt   r|   r   r   r	   test_findall_missing_symlink  s    
r   z$unable to exclude tests; #4475 #3260c                 C   sT   t | "}dd | D }W d    n1 s00    Y  |D ]}d|vs>J q>d S )Nc                 S   s   g | ]}| tjd qS /replacerD   seprG   r+   r   r   r	   rI     rJ   z=test_its_own_wheel_does_not_contain_tests.<locals>.<listcomp>z/tests/)r   namelist)setuptools_wheelzipfilecontentsmemberr   r   r	   )test_its_own_wheel_does_not_contain_tests  s    
0r   c                 C   sT   t | "}dd | D }W d    n1 s00    Y  tdd |D sPJ d S )Nc                 S   s   g | ]}| tjd qS r   r   r   r   r   r	   rI     rJ   z3test_wheel_includes_cli_scripts.<locals>.<listcomp>c                 s   s   | ]}d |v V  qdS )z
cli-64.exeNr   rG   r   r   r   r	   	<genexpr>  rJ   z2test_wheel_includes_cli_scripts.<locals>.<genexpr>r   r   anyr   r   r   r   r   r	   test_wheel_includes_cli_scripts  s    
0r   c                 C   sT   t | "}dd | D }W d    n1 s00    Y  tdd |D sPJ d S )Nc                 S   s   g | ]}| tjd qS r   r   r   r   r   r	   rI     rJ   z9test_wheel_includes_vendored_metadata.<locals>.<listcomp>c                 s   s   | ]}t d |V  qdS )z_vendor/.*\.dist-info/METADATAN)researchr   r   r   r	   r      s   z8test_wheel_includes_vendored_metadata.<locals>.<genexpr>r   r   r   r   r	   %test_wheel_includes_vendored_metadata  s
    
0r   )(r3   rD   r   r1   r   r   r&   Zpackaging.versionr   r   Zsetuptools.dependsdependsr"   Zsetuptools.distr   distutils.cmdr   distutils.corer   distutils.errorsr   Zfixturer
   r   markZskipifr!   rQ   r   rR   ru   r~   r   r   Zusefixturesr   Zxfailr   r   r   r   r   r   r	   <module>   sF   


WZ




