o
    i(                     @   s   d dl 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 d dlm	Z	 d dlZd dl
mZmZ d dlm  mZ d dlmZ d dlmZ d dlmZ e jd	fd
dZG dd deZG dd deZeG dd deZedkrye  dS dS )    NCompletedProcess)TemporaryDirectory)mock)TestCase
linux_only)	needs_gdb)collect_gdbinfo)_GDBTestWrapper<   c                 C   s~   t j| t jt j|d}t||j}z'|  | \}}|jdkr-t	d|j|
 f |
 |
 fW |  S |  w )N)stdoutstderrenvr   z/process failed with code %s: stderr follows
%s
)
subprocessPopenPIPE	threadingTimerkillstartcommunicate
returncodeAssertionErrordecodecancel)cmdliner   timeoutpopenZtimeout_timerouterr r    c/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/numba/tests/test_cli.pyrun_cmd   s"   
r"   c                   @   s0   e Zd Zdd Zdd Zdd Zedd Zd	S )
TestCLIc                 C   sT   t jddg}| t}t| W d    n1 sw   Y  | dt|j d S )N-mnumbazprocess failed with code 1)sys
executableassertRaisesr   r"   assertInstr	exception)selfr   Zraisesr    r    r!   test_as_module_exit_code+   s
   
z TestCLI.test_as_module_exit_codec                 C   s*   t jdddg}t|\}}| d| d S )Nr$   r%   z-szSystem infor&   r'   r"   r)   r,   r   o_r    r    r!   test_sysinfo_from_module2   s   z TestCLI.test_sysinfo_from_modulec           
      C   s  t  }tj|d}tjddd|g}t| | j| dd | tj	| W d    n1 s4w   Y  | jdd" t
|d}t|}W d    n1 sUw   Y  W d    n1 sdw   Y  ttjfttjfttjtjtjtjtjtjtjtjtjtjtjfttjtj tj!tj"tj#tj$tj%tj&ft'tj(tj)ft*tj+fi}|, D ]'\}}|D ] }	| j|	d	 | -||	 | W d    n1 sw   Y  qqW d    d S 1 sw   Y  d S )
Nztest_json_sysinfo.jsonr$   r%   z
--sys-jsonz exists)msgz	json loadr)k).r   ospathjoinr&   r'   r"   ZsubTest
assertTrueexistsopenjsonloadintnsiZ
_cpu_countfloatZ_runtimer*   _startZ
_start_utcZ_machineZ	_cpu_nameZ_platform_nameZ_os_nameZ_os_versionZ_python_compZ_python_implZ_python_versionZ_llvm_versionboolZ_cu_dev_initZ_svml_stateZ_svml_loadedZ_svml_operationalZ_llvm_svml_patchedZ_tbb_threadZ_openmp_threadZ_wkq_threadlist_errors	_warningsdictZ_numba_env_varsitemsZassertIsInstance)
r,   dr7   r   finfoZsafe_contentstkeysr5   r    r    r!   test_json_sysinfo_from_module7   sv   
&"z%TestCLI.test_json_sysinfo_from_modulec                 C   s6   t jdddg}t|\}}| d| | d| d S )Nr$   r%   -gzGDB infoz Numba printing extension supportr.   r/   r    r    r!   test_gdb_status_from_modulel   s   z#TestCLI.test_gdb_status_from_moduleN)__name__
__module____qualname__r-   r2   rM   r   rO   r    r    r    r!   r#   )   s    5r#   c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )TestGDBCLIInfoc           	         s   g  _ dd } j tjtd| d} j t|d  fdd}dd	 }|d
| dd }|d| dd }|d| dd }|d|  j D ]}|  qLd S )Nc                 S   s   d S Nr    r,   r    r    r!   <lambda>   s    z&TestGDBCLIInfo.setUp.<locals>.<lambda>__init__z3numba.misc.numba_gdbinfo._GDBTestWrapper.gdb_binaryPATH_TO_GDBc                    s    j tjt| | d S rT   )_patchesappendr   patchobjectr
   )ZfnstrfuncrU   r    r!   _patch   s   
z$TestGDBCLIInfo.setUp.<locals>._patchc                 S   
   t ddS )NCOMMAND STRINGr   r   rU   r    r    r!   mock_check_launch      
z/TestGDBCLIInfo.setUp.<locals>.mock_check_launchcheck_launchc                 S      t dddddS )Nr`   r   z(3, 2) r   r   r   rU   r    r    r!   mock_check_python      z/TestGDBCLIInfo.setUp.<locals>.mock_check_pythoncheck_pythonc                 S   rd   )Nr`   r   Truere   rf   r   rU   r    r    r!   mock_check_numpy      z.TestGDBCLIInfo.setUp.<locals>.mock_check_numpycheck_numpyc                 S   rd   )Nr`   r   1.15re   rf   r   rU   r    r    r!   mock_check_numpy_version   rl   z6TestGDBCLIInfo.setUp.<locals>.mock_check_numpy_versioncheck_numpy_version)rY   rZ   r   r[   r\   r
   r   )	r,   Z	mock_initbpathr^   ra   rg   rk   ro   pr    rU   r!   setUpy   s&   





zTestGDBCLIInfo.setUpc                 C   s   | j D ]}|  qd S rT   )rY   stop)r,   rr   r    r    r!   tearDown   s   

zTestGDBCLIInfo.tearDownc                 C   sb   t  }| |jd tjtj|j}| | | |j	d | |j
d | d|j d S )NrX   3.2rn   Full)r	   assertEqual
binary_locr6   r7   r:   abspathZextension_locr9   py_vernp_verr)   	supported)r,   	collectedZextpr    r    r!   
test_valid   s   
zTestGDBCLIInfo.test_validc                 C   s`   dd }t jtd| t }| d|j | d|j W d    d S 1 s)w   Y  d S )Nc                 S   r_   )NZINVALID_BINARY   r   rU   r    r    r!   mock_fn   rb   z3TestGDBCLIInfo.test_invalid_binary.<locals>.mock_fnrc   zTesting gdb binary failed.z,gdb at 'PATH_TO_GDB' does not appear to work)r   r[   r\   r
   r	   r)   ry   )r,   r   rJ   r    r    r!   test_invalid_binary   s   "z"TestGDBCLIInfo.test_invalid_binaryc                 C   s`   dd }t jtd| t }| |jd | |jd W d    d S 1 s)w   Y  d S )Nc                 S   r_   )N	NO PYTHONr   r   rU   r    r    r!   r      rb   z.TestGDBCLIInfo.test_no_python.<locals>.mock_fnri   No Python supportNone)r   r[   r\   r
   r	   rx   r{   r}   r,   r   r~   r    r    r!   test_no_python   s   "zTestGDBCLIInfo.test_no_pythonc                 C   R   dd }t jtd| t }| |jd W d    d S 1 s"w   Y  d S )Nc                 S   s   t ddddS )Nr   r   (NOT A VERSION))r   r   rU   r    r    r!   r      s   z>TestGDBCLIInfo.test_unparsable_python_version.<locals>.mock_fnri   r   )r   r[   r\   r
   r	   rx   r{   r   r    r    r!   test_unparsable_python_version   
   "z-TestGDBCLIInfo.test_unparsable_python_versionc                 C   sn   dd }t jtd|! t }| |jd | |jd | d|j	 W d    d S 1 s0w   Y  d S )Nc                 S   r_   )NzNO NUMPYr   r   rU   r    r    r!   r      rb   z-TestGDBCLIInfo.test_no_numpy.<locals>.mock_fnrm   zNo NumPy supportrv   ZPartial)
r   r[   r\   r
   r	   rx   r|   r{   r)   r}   r   r    r    r!   test_no_numpy   s   "zTestGDBCLIInfo.test_no_numpyc                 C   r   )Nc                 S   r_   )NNO NUMPY VERSIONr   r   rU   r    r    r!   r      rb   z5TestGDBCLIInfo.test_no_numpy_version.<locals>.mock_fnrp   Unknownr   r[   r\   r
   r	   rx   r|   r   r    r    r!   test_no_numpy_version   r   z$TestGDBCLIInfo.test_no_numpy_versionc                 C   r   )Nc                 S   rd   )Nr   r   r   	Tracebackrf   r   rU   r    r    r!   r      rh   z?TestGDBCLIInfo.test_traceback_in_numpy_version.<locals>.mock_fnrp   r   r   r   r    r    r!   test_traceback_in_numpy_version   s
   "z.TestGDBCLIInfo.test_traceback_in_numpy_versionN)rP   rQ   rR   rs   ru   r   r   r   r   r   r   r   r    r    r    r!   rS   w   s    .		
rS   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestGDBCLIInfoBrokenGdbsc                 C   sX   t j }d|d< tjdddg}t||d\}}| d| | d| | d	| d S )
NZ#THIS_IS_NOT_A_VALID_GDB_BINARY_NAMENUMBA_GDB_BINARYr$   r%   rN   r   Testing gdb binary failedNo such file or directoryz%'THIS_IS_NOT_A_VALID_GDB_BINARY_NAME'r6   environcopyr&   r'   r"   r)   r,   r   r   r   r   r    r    r!   test_cannot_find_gdb_from_name   s   
z7TestGDBCLIInfoBrokenGdbs.test_cannot_find_gdb_from_namec                 C   s   t j }t 5}t j|d}||d< tjdddg}t||d\}}| 	d| | 	d| | 	|| W d    d S 1 s@w   Y  d S )	NZCANNOT_EXISTr   r$   r%   rN   r   r   r   )
r6   r   r   r   r7   r8   r&   r'   r"   r)   )r,   r   rH   r7   r   r   r   r    r    r!   test_cannot_find_gdb_from_path   s   
"z7TestGDBCLIInfoBrokenGdbs.test_cannot_find_gdb_from_pathc                 C   sL   t j }d|d< tjdddg}t||d\}}| d| | d| d S )	Npythonr   r$   r%   rN   r   r   zUnknown optionr   r   r    r    r!   test_nonsense_gdb_binary  s   
z1TestGDBCLIInfoBrokenGdbs.test_nonsense_gdb_binaryN)rP   rQ   rR   r   r   r   r    r    r    r!   r      s    
r   __main__)r6   r   r&   r   r<   r   tempfiler   Zunittestr   Znumba.tests.supportr   r   Znumba.misc.numba_sysinfomiscZnumba_sysinfor?   Znumba.tests.gdb_supportr   Znumba.misc.numba_gdbinfor	   r
   r   r"   r#   rS   r   rP   mainr    r    r    r!   <module>   s,   Nw)