o
    LK&hÃ  ã                   @   sŽ   d 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
 ddlmZ ddlZddlZddlmZ ddlmZ G d	d
„ d
ejƒZdS )zTests for distutils.spawn.é    N)ÚDistutilsExecError)Úfind_executableÚspawn)Úsupport)Ú
unix_shellé   )Úpy39c                   @   s<   e Zd Zej d¡dd„ ƒZdd„ Zedd„ ƒZ	dd	„ Z
d
S )Ú	TestSpawnzos.name not in ('nt', 'posix')c                 C   sò   |   ¡ }tjdkrtj |d¡}|  |dt› d¡ ntj |d¡}|  |d¡ t |d¡ t	 
t¡ t|gƒ W d   ƒ n1 sCw   Y  tjdkr_tj |d¡}|  |dt› d¡ ntj |d¡}|  |d	¡ t |d¡ t|gƒ d S )
NÚwin32zfoo.shz#!z
exit 1zfoo.batzexit 1iÿ  z
exit 0zexit 0)ÚmkdtempÚsysÚplatformÚosÚpathÚjoinÚ
write_filer   ÚchmodÚpytestÚraisesr   r   )ÚselfÚtmpdirÚexe© r   úY/var/www/html/venv/lib/python3.10/site-packages/setuptools/_distutils/tests/test_spawn.pyÚ
test_spawn   s"   
ÿ
zTestSpawn.test_spawnc           
      C   s´  |   |d¡}|j}| d¡j}t|ƒ}t |¡}t||d}||ks$J ‚tjdkr5t||d}||ks5J ‚| t|ƒ}||ksBJ ‚W d   ƒ n1 sLw   Y  d| }t||d}|d u saJ ‚t	 
¡ `}	d|	d< tjd|dd	D t d
|¡. t|ƒ}|d u s„J ‚| t|ƒ}||ks‘J ‚W d   ƒ n1 s›w   Y  W d   ƒ n1 sªw   Y  W d   ƒ n1 s¹w   Y  W d   ƒ n1 sÈw   Y  t	 
¡ d}	tj|	d< tjdddd	F t d
d¡/ t|ƒ}|d u sñJ ‚| t|ƒ}||ksþJ ‚W d   ƒ n	1 s	w   Y  W d   ƒ n	1 sw   Y  W d   ƒ n	1 s)w   Y  W d   ƒ n	1 s9w   Y  t	 
¡ }	|	 dd ¡ tjdtdd* t d
|¡ t|ƒ}||ksdJ ‚W d   ƒ n	1 sow   Y  W d   ƒ n	1 sw   Y  tjd|dd	* t d
d¡ t|ƒ}||ksŸJ ‚W d   ƒ n	1 sªw   Y  W d   ƒ n1 sºw   Y  W d   ƒ d S W d   ƒ d S 1 sÓw   Y  d S )Nz.exeÚ )r   r
   Ú
dontexist_ÚPATHzdistutils.spawn.os.confstrT)Úreturn_valueÚcreatezdistutils.spawn.os.defpath)Úside_effectr   )Ú_make_executableÚnameÚwith_suffixÚstrr   ÚPathr   r   r   Ú	os_helperÚEnvironmentVarGuardÚmockÚpatchr   ÚpathsepÚpopÚ
ValueError)
r   Útmp_pathÚprogram_pathÚprogramÚprogram_noeextÚfilenameÚtmp_dirÚrvÚdont_exist_programÚenvr   r   r   Útest_find_executable/   s¤   

þ
ÿÿ
üþ€ö€ €þ

ÿ
þþ€ø€ €þ
ÿÿ
üù€ ÿÿ
üù€  ò$òzTestSpawn.test_find_executablec                 C   s.   |   d¡ |¡}|jddd | tj¡ |S )Nr/   r   zutf-8)Úencoding)Újoinpathr#   Ú
write_textr   ÚstatÚS_IXUSR)r-   Úextr/   r   r   r   r!      s   zTestSpawn._make_executablec                 C   sJ   t  t¡}tdgƒ W d   ƒ n1 sw   Y  dt|jƒv s#J ‚d S )Nzdoes-not-existzcommand 'does-not-exist' failed)r   r   r   r   r$   Úvalue)r   Úctxr   r   r   Útest_spawn_missing_exeŠ   s   ÿz TestSpawn.test_spawn_missing_exeN)Ú__name__Ú
__module__Ú__qualname__r   ÚmarkÚskipifr   r6   Ústaticmethodr!   r?   r   r   r   r   r	      s    

R
r	   )Ú__doc__r   r:   r   Úunittest.mockr(   Údistutils.errorsr   Údistutils.spawnr   r   Údistutils.testsr   r   r   Útest.supportr   Úcompatr   r&   ÚTempdirManagerr	   r   r   r   r   Ú<module>   s    