U
    ¸mœdã  ã                   @   s¼   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 d dl	m
Z
mZmZmZ d dlmZ G dd„ dƒZG d	d
„ d
ƒZG dd„ dƒZdd„ Zdd„ Zejjedd�G dd„ dƒƒZdS )é    N)ÚTemporaryFile)Úexec_command)Úget_pythonexe)ÚtempdirÚassert_Úassert_warnsÚIS_WASM)ÚStringIOc                   @   s*   e Zd ZdZd	dd„Zdd„ Zdd„ ZdS )
Úredirect_stdoutz9Context manager to redirect stdout for exec_command test.Nc                 C   s   |pt j| _d S ©N)ÚsysÚstdoutÚ_stdout)Úselfr   © r   ú`/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numpy/distutils/tests/test_exec_command.pyÚ__init__   s    zredirect_stdout.__init__c                 C   s   t j| _| jt _d S r   )r   r   Ú
old_stdoutr   ©r   r   r   r   Ú	__enter__   s    zredirect_stdout.__enter__c                 C   s    | j  ¡  | jt_| j  ¡  d S r   )r   Úflushr   r   r   Úclose©r   Úexc_typeÚ	exc_valueÚ	tracebackr   r   r   Ú__exit__   s    
zredirect_stdout.__exit__)N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r   r
      s   
r
   c                   @   s*   e Zd ZdZd	dd„Zdd„ Zdd„ ZdS )
Úredirect_stderrz9Context manager to redirect stderr for exec_command test.Nc                 C   s   |pt j| _d S r   )r   ÚstderrÚ_stderr)r   r#   r   r   r   r       s    zredirect_stderr.__init__c                 C   s   t j| _| jt _d S r   )r   r#   Ú
old_stderrr$   r   r   r   r   r   #   s    zredirect_stderr.__enter__c                 C   s    | j  ¡  | jt_| j  ¡  d S r   )r$   r   r%   r   r#   r   r   r   r   r   r   '   s    
zredirect_stderr.__exit__)Nr   r   r   r   r   r"      s   
r"   c                   @   s*   e Zd ZdZd
dd„Zdd„ Zdd„ Zd	S )Úemulate_nonposixz.Context manager to emulate os.name != 'posix' ú	non-posixc                 C   s
   || _ d S r   )Ú	_new_name)r   Úosnamer   r   r   r   /   s    zemulate_nonposix.__init__c                 C   s   t j| _| jt _d S r   )ÚosÚnameÚ	_old_namer(   r   r   r   r   r   2   s    zemulate_nonposix.__enter__c                 C   s   | j t_d S r   )r,   r*   r+   r   r   r   r   r   6   s    zemulate_nonposix.__exit__N)r'   r   r   r   r   r   r&   -   s   
r&   c                   C   s´   t tƒ ƒ�: ttƒ ƒ�$ ttƒ� t d¡ W 5 Q R X W 5 Q R X W 5 Q R X tjdkr°t	ƒ �P t tƒ ƒ�: ttƒ ƒ�$ ttƒ� t d¡ W 5 Q R X W 5 Q R X W 5 Q R X W 5 Q R X d S )Núcd '.'Úposix)
r
   r	   r"   r   r   ÚDeprecationWarningr   r*   r+   r&   r   r   r   r   Útest_exec_command_stdout:   s    
(

r0   c                   C   s¸   t tdd�ƒ�: ttƒ ƒ�$ ttƒ� t d¡ W 5 Q R X W 5 Q R X W 5 Q R X tjdkr´t	ƒ �P t tƒ ƒ�: ttƒ ƒ�$ ttƒ� t d¡ W 5 Q R X W 5 Q R X W 5 Q R X W 5 Q R X d S )Nzw+)Úmoder-   r.   )
r
   r   r"   r	   r   r/   r   r*   r+   r&   r   r   r   r   Útest_exec_command_stderrR   s    
(

r2   zCannot start subprocess)Úreasonc                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestExecCommandc                 C   s   t ƒ | _d S r   )r   Úpyexer   r   r   r   Úsetup_methodd   s    zTestExecCommand.setup_methodc                 K   sV   t   d¡\}}t|dkƒ t|dkƒ t   d| j ¡\}}t|dkƒ t|dkƒ d S )Nzcmd /C echo path=%path%r   Ú z3"%s" -c "import sys;sys.stderr.write(sys.platform)"Úwin32)r   r   r5   ©r   ÚkwsÚsÚor   r   r   Úcheck_ntg   s    ÿzTestExecCommand.check_ntc                 K   sò  t j d|Ž\}}t|dkƒ t|dkƒ t j d|Ž\}}t|dkƒ t|dkƒ t j dddi|—Ž\}}t|dkƒ t|dkƒ t j d|Ž\}}t|dkƒ t|dkƒ d	tjk�rnd
tjd	< t j d|Ž\}}t|dkƒ t|d
kƒ t j dd	di|—Ž\}}t|dkƒ t|dkƒ t j d|Ž\}}t|dkƒ t|d
kƒ tjd	= t j d|Ž\}}t|dkƒ t|dkƒ t j d|Ž\}}t|dkƒ t|dkƒ t j d|Ž\}}t|dkƒ t|dkƒ t j d| j f|Ž\}}t|dkƒ t|dkƒ d S )Nú
echo Hellor   ÚHelloú	echo $AAAr7   úecho "$AAA"ZAAAZTereZBBBZHiúecho "$BBB"ZHeyÚthis_is_not_a_commandúecho path=$PATHz1"%s" -c "import sys,os;sys.stderr.write(os.name)"r.   )r>   )r@   )rA   )rA   )rB   )rB   )rB   )rB   )rC   )rD   )r   r   r*   Úenvironr5   r9   r   r   r   Úcheck_posixq   sT    
ÿÿþzTestExecCommand.check_posixc                 G   sÄ   t j d| j f|Ž\}}t|dkƒ t|dkƒ t j d| j f|Ž\}}t|dkƒ t|dkƒ t j d| j f|Ž\}}t|dkƒ t|dkƒ t j d| j f|Ž\}}t|dkƒ t|d	kƒ d S )
Nz"%s" -c "raise 'Ignore me.'"r   r7   zV"%s" -c "import sys;sys.stderr.write('0');sys.stderr.write('1');sys.stderr.write('2')"Z012z!"%s" -c "import sys;sys.exit(15)"é   z"%s" -c "print('Heipa'")ZHeipa)r   r5   r   r9   r   r   r   Úcheck_basic¥   s<    ÿÿþÿýÿÿÿÿzTestExecCommand.check_basicc              
   K   s¸   t ƒ �¨}d}tj ||¡}t|dƒ�}| d¡ W 5 Q R X tjd| j|f f|Ž\}}t|dkƒ t|dkƒ tjd| j|f fd|i|—Ž\}}t|dkƒ t|dkƒ W 5 Q R X d S )	NÚfileÚwr?   z("%s" -c "f = open('%s', 'r'); f.close()"r   r7   z9"%s" -c "f = open('%s', 'r'); print(f.read()); f.close()"Z
execute_in)	r   r*   ÚpathÚjoinÚopenÚwriter   r5   r   )r   r:   ZtmpdirÚfnZtmpfileÚfr;   r<   r   r   r   Úcheck_execute_in¼   s2    ÿÿþÿÿþþ
z TestExecCommand.check_execute_inc                 C   s¢   t tƒ ƒ�Ž ttƒ ƒ�x ttƒ�d tjdkrF| jdd� | jdd� n"tjdkrh| jdd� | jdd� | j	dd� | j	dd� W 5 Q R X W 5 Q R X W 5 Q R X d S )Nr.   r   )Zuse_teeé   Únt)
r
   r	   r"   r   r/   r*   r+   rF   r=   rQ   r   r   r   r   Ú
test_basicÎ   s    


zTestExecCommand.test_basicN)	r   r   r    r6   r=   rF   rH   rQ   rT   r   r   r   r   r4   b   s   
4r4   )r*   Zpytestr   Útempfiler   Znumpy.distutilsr   Znumpy.distutils.exec_commandr   Znumpy.testingr   r   r   r   Úior	   r
   r"   r&   r0   r2   ÚmarkZskipifr4   r   r   r   r   Ú<module>   s   