B
    ?™c"  ã               @   sÀ   d 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mZmZ ddl	m
Z ddlmZ ddlmZ ddlmZ dd	lmZ ddlm
Z
 G d
d„ de
je
jejƒZdd„ Zedkr¼eeƒ ƒ dS )zTests for distutils.spawn.é    N)Úmock)Úrun_unittestÚ
unix_shell)Úsupport)Úfind_executable)Ú_nt_quote_args)Úspawn)ÚDistutilsExecErrorc               @   s6   e Zd Zdd„ Ze ejdkd¡dd„ ƒZdd„ Z	d	S )
ÚSpawnTestCasec             C   sF   x@ddgddgfddgddgffD ]\}}t |ƒ}|  ||¡ q"W d S )Nz
with spaceZnospacez"with space"Znochange)r   ÚassertEqual)ÚselfÚargsZwantedZres© r   ú+lib/python3.7/distutils/tests/test_spawn.pyÚtest_nt_quote_args   s    z SpawnTestCase.test_nt_quote_args)ÚntÚposixzRuns only under posix or ntc             C   sÆ   |   ¡ }tjdkr2tj |d¡}|  |dt ¡ ntj |d¡}|  |d¡ t |d¡ |  	t
t|g¡ tjdkr’tj |d¡}|  |dt ¡ ntj |d¡}|  |d¡ t |d¡ t|gƒ d S )	NÚwin32zfoo.shz#!%s
exit 1zfoo.batzexit 1iÿ  z#!%s
exit 0zexit 0)ZmkdtempÚsysÚplatformÚosÚpathÚjoinZ
write_filer   ÚchmodZassertRaisesr	   r   )r   ZtmpdirZexer   r   r   Ú
test_spawn   s    

zSpawnTestCase.test_spawnc             C   s¶  t  ¡ ¢}t j}|d }tj ||¡}t|dƒ W d Q R X t |tj	¡ t
||d}|  ||¡ tjdkr†t
||d}|  ||¡ t  |¡ t
|ƒ}|  ||¡ W d Q R X d| }t
||d}|  |¡ t  ¡ ‚}d|d< tjjd|d	d
\ tj d|¡B t
|ƒ}|  |¡ t  |¡ t
|ƒ}|  ||¡ W d Q R X W d Q R X W d Q R X W d Q R X t  ¡ „}tj|d< tjjddd	d
\ tj dd¡B t
|ƒ}|  |¡ t  |¡ t
|ƒ}|  ||¡ W d Q R X W d Q R X W d Q R X W d Q R X t  ¡ ª}| dd ¡ tjjdtd	d4 tj d|¡ t
|ƒ}|  ||¡ W d Q R X W d Q R X tjjd|d	d
4 tj dd¡ t
|ƒ}|  ||¡ W d Q R X W d Q R X W d Q R X W d Q R X d S )Nz.exeÚwb)r   r   Z
dontexist_Ú ÚPATHzdistutils.spawn.os.confstrT)Zreturn_valueÚcreatezdistutils.spawn.os.defpath)Zside_effectr   )Útest_supportZtemp_dirZTESTFNr   r   r   Úopenr   ÚstatÚS_IXUSRr   r   r   r   Z
change_cwdZassertIsNoneZEnvironmentVarGuardÚunittestr   ZpatchÚpathsepÚpopÚ
ValueError)r   Ztmp_dirZprogram_noeextZprogramÚfilenameÚrvZdont_exist_programÚenvr   r   r   Útest_find_executable:   sj    




4


4

 z"SpawnTestCase.test_find_executableN)
Ú__name__Ú
__module__Ú__qualname__r   r#   Z
skipUnlessr   Únamer   r*   r   r   r   r   r
      s   
r
   c               C   s
   t  t¡S )N)r#   Z	makeSuiter
   r   r   r   r   Ú
test_suiteŒ   s    r/   Ú__main__)Ú__doc__r   r!   r   r#   r   Ztest.supportr   r   Ztestr   r   Zdistutils.spawnr   r   r   Zdistutils.errorsr	   Zdistutils.testsZTempdirManagerZLoggingSilencerZTestCaser
   r/   r+   r   r   r   r   Ú<module>   s$   z