U
    aÊ¹j  ã                   @   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é   )Úpy38c                   @   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r6tj |d¡}|  |dt› d�¡ ntj |d¡}|  |d¡ t |d¡ t	 
t¡� t|gƒ W 5 Q R X 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   )ÚselfZtmpdirÚexe© r   úe/var/www/html/bwave/python/venv/lib/python3.8/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sHt‚tj	dkrjt||d�}||ksjt‚|� t|ƒ}||ks„t‚W 5 Q R X d| }t||d�}|d ks®t‚t
 ¡ �|}	d|	d< tjd|dd	��X t d
|¡�@ t|ƒ}|d ksôt‚|� t|ƒ}||k�st‚W 5 Q R X W 5 Q R X W 5 Q R X W 5 Q R X t
 ¡ �€}	tj|	d< tjdddd	��Z t d
d¡�B t|ƒ}|d k�s‚t‚|� t|ƒ}||k�sžt‚W 5 Q R X W 5 Q R X W 5 Q R X W 5 Q R X t
 ¡ �¦}	|	 dd ¡ tjdtdd��4 t d
|¡� t|ƒ}||k�st‚W 5 Q R X W 5 Q R X tjd|dd	��4 t d
d¡� t|ƒ}||k�s\t‚W 5 Q R X W 5 Q R X W 5 Q R X d S )Nz.exeÚ )r   r
   Z
dontexist_ÚPATHzdistutils.spawn.os.confstrT)Zreturn_valueÚcreatezdistutils.spawn.os.defpath)Zside_effectr   )Ú_make_executableÚnameÚwith_suffixÚstrr   ÚPathr   ÚAssertionErrorr   r   Ú	os_helperZEnvironmentVarGuardÚmockÚpatchr   ÚpathsepÚpopÚ
ValueError)
r   Útmp_pathZprogram_pathÚprogramZprogram_noeextÚfilenameZtmp_dirÚrvZdont_exist_programÚenvr   r   r   Útest_find_executable/   s€    


  ÿ
þ6

  ÿ
þ6
  ÿ
þ"  ÿ
þ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   w   s    zTestSpawn._make_executablec              	   C   s6   t  t¡�}tdgƒ W 5 Q R X dt|jƒks2t‚d S )Nzdoes-not-existzcommand 'does-not-exist' failed)r   r   r   r   r    Úvaluer"   )r   Úctxr   r   r   Útest_spawn_missing_exe€   s    z TestSpawn.test_spawn_missing_exeN)Ú__name__Ú
__module__Ú__qualname__r   ÚmarkZskipifr   r.   Ústaticmethodr   r7   r   r   r   r   r	      s   

H
r	   )Ú__doc__r   r2   r   Zunittest.mockr$   Údistutils.errorsr   Údistutils.spawnr   r   Zdistutils.testsr   r   r   Ztest.supportr   Úcompatr   r#   ZTempdirManagerr	   r   r   r   r   Ú<module>   s   