o
    Df                     @   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                   @   *   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      |pt j| _d S N)sysstdout_stdout)selfr    r   `/home/ubuntu/webapp/venv/lib/python3.10/site-packages/numpy/distutils/tests/test_exec_command.py__init__      zredirect_stdout.__init__c                 C      t j| _| jt _d S r   )r   r   
old_stdoutr   r   r   r   r   	__enter__      zredirect_stdout.__enter__c                 C       | j   | jt_| j   d S r   )r   flushr   r   r   closer   exc_type	exc_value	tracebackr   r   r   __exit__      
zredirect_stdout.__exit__r   __name__
__module____qualname____doc__r   r   r"   r   r   r   r   r      
    
r   c                   @   r
   )
redirect_stderrz9Context manager to redirect stderr for exec_command test.Nc                 C   r   r   )r   stderr_stderr)r   r+   r   r   r   r       r   zredirect_stderr.__init__c                 C   r   r   )r   r+   
old_stderrr,   r   r   r   r   r   #   r   zredirect_stderr.__enter__c                 C   r   r   )r,   r   r-   r   r+   r   r   r   r   r   r"   '   r#   zredirect_stderr.__exit__r   r$   r   r   r   r   r*      r)   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   r   r   )osname	_old_namer0   r   r   r   r   r   2   r   zemulate_nonposix.__enter__c                 C   s   | j t_d S r   )r4   r2   r3   r   r   r   r   r"   6      zemulate_nonposix.__exit__N)r/   r$   r   r   r   r   r.   -   r)   r.   c                   C   sV  t t 6 tt ! tt td W d    n1 s w   Y  W d    n1 s/w   Y  W d    n1 s>w   Y  tjdkrt	 T t t 6 tt ! tt td W d    n1 slw   Y  W d    n1 s{w   Y  W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S d S )Ncd '.'posix)
r   r	   r*   r   r   DeprecationWarningr   r2   r3   r.   r   r   r   r   test_exec_command_stdout:   s0   


"r9   c                   C   sZ  t tdd6 tt ! tt td W d    n1 s"w   Y  W d    n1 s1w   Y  W d    n1 s@w   Y  tjdkrt	 T t t 6 tt ! tt td W d    n1 snw   Y  W d    n1 s}w   Y  W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S d S )Nzw+)moder6   r7   )
r   r   r*   r	   r   r8   r   r2   r3   r.   r   r   r   r   test_exec_command_stderrR   s0   


"r;   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   r5   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   r>   r   kwssor   r   r   check_ntg   s   zTestExecCommand.check_ntc                 K   s  t j di |\}}t|dk t|dk t j di |\}}t|dk t|dk t j dddi|\}}t|dk t|dk t j di |\}}t|dk t|dk d	tjvrd
tjd	< t j di |\}}t|dk t|d
k t j dd	di|\}}t|dk t|dk t j di |\}}t|dk t|d
k tjd	= t j di |\}}t|dk t|dk t j di |\}}t|dk t|dk t j di |\}}t|dk t|dk t j d| j fi |\}}t|dk t|dk d S )N
echo Hellor   Hello	echo $AAAr@   echo "$AAA"AAATereBBBHiecho "$BBB"Heythis_is_not_a_commandecho path=$PATHz1"%s" -c "import sys,os;sys.stderr.write(os.name)"r7   )rG   )rI   )rJ   )rO   )rQ   )rR   )r   r   r2   environr>   rB   r   r   r   check_posixq   sT   


zTestExecCommand.check_posixc                 G   s   t j d| j fi |\}}t|dk t|dk t j d| j fi |\}}t|dk t|dk t j d| j fi |\}}t|dk t|dk t j d| j fi |\}}t|dk t|d	k d S )
Nz"%s" -c "raise 'Ignore me.'"r   r@   zV"%s" -c "import sys;sys.stderr.write('0');sys.stderr.write('1');sys.stderr.write('2')"012z!"%s" -c "import sys;sys.exit(15)"   z"%s" -c "print('Heipa'")Heipa)r   r>   r   rB   r   r   r   check_basic   s<   



zTestExecCommand.check_basicc              	   K   s   t  f}d}tj||}t|d}|d W d    n1 s"w   Y  tjd| j|f fi |\}}t|dk t|dk tjd| j|f fd|i|\}}t|dk t|dk W d    d S 1 slw   Y  d S )	NfilewrH   z("%s" -c "f = open('%s', 'r'); f.close()"r   r@   z9"%s" -c "f = open('%s', 'r'); print(f.read()); f.close()"
execute_in)	r   r2   pathjoinopenwriter   r>   r   )r   rC   tmpdirfntmpfilefrD   rE   r   r   r   check_execute_in   s6   

"z TestExecCommand.check_execute_inc              
   C   s   t t i tt K tt7 tjdkr#| jdd | jdd ntjdkr4| jdd | jdd | j	dd | j	dd W d    n1 sJw   Y  W d    n1 sYw   Y  W d    d S W d    d S 1 sqw   Y  d S )Nr7   r   )use_tee   nt)
r   r	   r*   r   r8   r2   r3   rT   rF   rd   r   r   r   r   
test_basic   s"   


"zTestExecCommand.test_basicN)	r%   r&   r'   r?   rF   rT   rX   rd   rh   r   r   r   r   r=   b   s    
4r=   )r2   pytestr   tempfiler   numpy.distutilsr   numpy.distutils.exec_commandr   numpy.testingr   r   r   r   ior	   r   r*   r.   r9   r;   markskipifr=   r   r   r   r   <module>   s    