o
    !g                     @   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   e/root/parts/websockify/install/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 sJ | t|}||ksJ W d    n1 sw   Y  W d    n1 sw   Y  W d    n1 sw   Y  W d    n1 sw   Y  t	
 d}	tj|	d< tjdddd	F td
d/ t|}|d u sJ | t|}||ksJ 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sJ W d    n	1 sw   Y  W d    n1 sw   Y  W d    d S W d    d S 1 sw   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    