
    J/Ph(                     H   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c mZ d dlmZ d dlmZ d dlmZ e j        d	fd
Z G d de          Z G d de          Ze G d de                      Zedk    r ej                     dS dS )    NCompletedProcess)TemporaryDirectory)mock)TestCase
linux_only)	needs_gdb)collect_gdbinfo)_GDBTestWrapper<   c                     t          j        | t           j        t           j        |          }t          j        ||j                  }	 |                                 |                                \  }}|j        dk    r-t          d|j        d|
                                d          |
                                |
                                f|                                 S # |                                 w xY w)N)stdoutstderrenvr   zprocess failed with code z: stderr follows

)
subprocessPopenPIPE	threadingTimerkillstartcommunicate
returncodeAssertionErrordecodecancel)cmdliner   timeoutpopentimeout_timerouterrs          T/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_cli.pyrun_cmdr%      s    W$.O$.O!$& & &E
 OGUZ88M	$$&&Sq   .!!!3::<<<<12 2 2 zz||SZZ\\)s   B
C' 'C=c                   6    e Zd Zd Zd Zd Zed             ZdS )TestCLIc                     t           j        ddg}|                     t                    5 }t	          |           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )N-mnumbazprocess failed with code 1)sys
executableassertRaisesr   r%   assertInstr	exception)selfr   raisess      r$   test_as_module_exit_codez TestCLI.test_as_module_exit_code+   s    >41~.. 	&G	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	2C8H4I4IJJJJJs   AA
A
c                 v    t           j        dddg}t          |          \  }}|                     d|           d S )Nr)   r*   z-szSystem infor+   r,   r%   r.   r1   r   o_s       r$   test_sysinfo_from_modulez TestCLI.test_sysinfo_from_module2   s=    >4$7w1mQ'''''    c                    t                      5 }t          j                            |d          }t          j        ddd|g}t          |           |                     | d          5  |                     t          j        	                    |                     d d d            n# 1 swxY w Y   |                     d          5  t          |d          5 }t          j        |          }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w 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tN          t          j(        t          j)        ftT          t          j+        fi}|,                                D ]T\  }}|D ]L}	|                     |		          5  | -                    ||	         |           d d d            n# 1 swxY w Y   MU	 d d d            d S # 1 swxY w Y   d S )
Nztest_json_sysinfo.jsonr)   r*   z
--sys-jsonz exists)msgz	json loadr)k).r   ospathjoinr+   r,   r%   subTest
assertTrueexistsopenjsonloadintnsi
_cpu_countfloat_runtimer/   _start
_start_utc_machine	_cpu_name_platform_name_os_name_os_version_python_comp_python_impl_python_version_llvm_versionbool_cu_dev_init_svml_state_svml_loaded_svml_operational_llvm_svml_patched_tbb_thread_openmp_thread_wkq_threadlist_errors	_warningsdict_numba_env_varsitemsassertIsInstance)
r1   dr@   r   finfosafe_contentstkeysr>   s
             r$   test_json_sysinfo_from_modulez%TestCLI.test_json_sysinfo_from_module7   s   !! 2	:Q7<<#;<<D~tWlDIGGT"2"2"233 6 6t 4 45556 6 6 6 6 6 6 6 6 6 6 6 6 6 6+.. ( ($__ (9Q<<D( ( ( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( ( ( ( N L JNLM&LO$$'% $O$)*O&O	 KM 'E%ML )..00 : :4 : :A** : :--d1gq999: : : : : : : : : : : : : : :::_2	: 2	: 2	: 2	: 2	: 2	: 2	: 2	: 2	: 2	: 2	: 2	: 2	: 2	: 2	: 2	: 2	: 2	:s   AK)3B(K(B,	,K/B,	0K	DC;/D;C??DC?DKD	KD	E*KJ-	!K-J11K4J15KKKc                     t           j        dddg}t          |          \  }}|                     d|           |                     d|           d S )Nr)   r*   -gzGDB infoz Numba printing extension supportr5   r6   s       r$   test_gdb_status_from_modulez#TestCLI.test_gdb_status_from_modulel   sV     >4$7w1j!$$$ 	8!<<<<<r:   N)__name__
__module____qualname__r3   r9   rn   r	   rq    r:   r$   r'   r'   )   s`        K K K( ( (
3: 3: 3:j = = Y= = =r:   r'   c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestGDBCLIInfoc                     g  _         d } j                             t          j                            t
          d|                     d} j                             t          j        |d                      fd}d } |d|           d } |d	|           d
 } |d|           d } |d|            j         D ]}|                                 d S )Nc                     d S Nru   r1   s    r$   <lambda>z&TestGDBCLIInfo.setUp.<locals>.<lambda>   s     r:   __init__z3numba.misc.numba_gdbinfo._GDBTestWrapper.gdb_binaryPATH_TO_GDBc                     j                             t          j                            t
          | |                     d S rz   )_patchesappendr   patchobjectr   )fnstrfuncr1   s     r$   _patchz$TestGDBCLIInfo.setUp.<locals>._patch   sB    M  !2!2?E37"9 "9 : : : : :r:   c                 "    t          dd          S )NCOMMAND STRINGr   r   r{   s    r$   mock_check_launchz/TestGDBCLIInfo.setUp.<locals>.mock_check_launch       #$4a888r:   check_launchc                 (    t          dddd          S )Nr   r   z(3, 2) r   r   r   r{   s    r$   mock_check_pythonz/TestGDBCLIInfo.setUp.<locals>.mock_check_python   s$    #$4a+3+-/ / / /r:   check_pythonc                 (    t          dddd          S )Nr   r   Truer   r   r   r{   s    r$   mock_check_numpyz.TestGDBCLIInfo.setUp.<locals>.mock_check_numpy   #    #$4a+-/ / / /r:   check_numpyc                 (    t          dddd          S )Nr   r   1.15r   r   r   r{   s    r$   mock_check_numpy_versionz6TestGDBCLIInfo.setUp.<locals>.mock_check_numpy_version   r   r:   check_numpy_version)r   r   r   r   r   r   r   )	r1   	mock_initbpathr   r   r   r   r   ps	   `        r$   setUpzTestGDBCLIInfo.setUpy   sI    %%	TZ..
/8: : 	; 	; 	; FTZ}==>>>	: 	: 	: 	: 	:	9 	9 	9 	~0111	/ 	/ 	/
 	~0111	/ 	/ 	/ 	}.///	/ 	/ 	/ 	$&>???  	 	AGGIIII	 	r:   c                 B    | j         D ]}|                                 d S rz   )r   stop)r1   r   s     r$   tearDownzTestGDBCLIInfo.tearDown   s,     	 	AFFHHHH	 	r:   c                    t                      }|                     |j        d           t          j                            t          j                            |j                            }|                     |           |                     |j	        d           |                     |j
        d           |                     d|j                   d S )Nr~   3.2r   Full)r
   assertEqual
binary_locr?   r@   rD   abspathextension_locrC   py_vernp_verr.   	supported)r1   	collectedextps      r$   
test_validzTestGDBCLIInfo.test_valid   s    #%%	-}===w~~bgooi.EFFGG)5111)6222fi122222r:   c                    d }t           j                            t          d|          5  t	                      }|                     d|j                   |                     d|j                   d d d            d S # 1 swxY w Y   d S )Nc                 "    t          dd          S )NINVALID_BINARY   r   r{   s    r$   mock_fnz3TestGDBCLIInfo.test_invalid_binary.<locals>.mock_fn   r   r:   r   zTesting gdb binary failed.z,gdb at 'PATH_TO_GDB' does not appear to work)r   r   r   r   r
   r.   r   )r1   r   rj   s      r$   test_invalid_binaryz"TestGDBCLIInfo.test_invalid_binary   s    	9 	9 	9 ZHH 	+ 	+"$$DMM6HHHMMH/+ + +	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+   AA<<B B c                    d }t           j                            t          d|          5  t	                      }|                     |j        d           |                     |j        d           d d d            d S # 1 swxY w Y   d S )Nc                 "    t          dd          S )N	NO PYTHONr   r   r{   s    r$   r   z.TestGDBCLIInfo.test_no_python.<locals>.mock_fn   s    #K333r:   r   No Python supportNone)r   r   r   r   r
   r   r   r   r1   r   r   s      r$   test_no_pythonzTestGDBCLIInfo.test_no_python   s    	4 	4 	4 ZHH 	: 	:'))IY-/BCCCY0&999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:r   c                     d }t           j                            t          d|          5  t	                      }|                     |j        d           d d d            d S # 1 swxY w Y   d S )Nc                 &    t          ddd          S )Nr   r   (NOT A VERSION))r   r   r{   s    r$   r   z>TestGDBCLIInfo.test_unparsable_python_version.<locals>.mock_fn   s    #K;LMMMMr:   r   r   )r   r   r   r   r
   r   r   r   s      r$   test_unparsable_python_versionz-TestGDBCLIInfo.test_unparsable_python_version   s    	N 	N 	N ZHH 	D 	D'))IY-/BCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D   *A!!A%(A%c                 H   d }t           j                            t          d|          5  t	                      }|                     |j        d           |                     |j        d           |                     d|j	                   d d d            d S # 1 swxY w Y   d S )Nc                 "    t          dd          S )NzNO NUMPYr   r   r{   s    r$   r   z-TestGDBCLIInfo.test_no_numpy.<locals>.mock_fn   s    #J222r:   r   zNo NumPy supportr   Partial)
r   r   r   r   r
   r   r   r   r.   r   r   s      r$   test_no_numpyzTestGDBCLIInfo.test_no_numpy   s    	3 	3 	3 ZwGG 	: 	:'))IY-/ABBBY-u555MM)Y%8999		: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s   A BBBc                     d }t           j                            t          d|          5  t	                      }|                     |j        d           d d d            d S # 1 swxY w Y   d S )Nc                 "    t          dd          S )NNO NUMPY VERSIONr   r   r{   s    r$   r   z5TestGDBCLIInfo.test_no_numpy_version.<locals>.mock_fn   s    #$6:::r:   r   Unknownr   r   r   r   r
   r   r   r   s      r$   test_no_numpy_versionz$TestGDBCLIInfo.test_no_numpy_version   s    	; 	; 	; Z0EwOO 	: 	:'))IY-y999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:r   c                     d }t           j                            t          d|          5  t	                      }|                     |j        d           d d d            d S # 1 swxY w Y   d S )Nc                 (    t          dddd          S )Nr   r   r   	Tracebackr   r   r{   s    r$   r   z?TestGDBCLIInfo.test_traceback_in_numpy_version.<locals>.mock_fn   s$    #$6+<+68 8 8 8r:   r   r   r   r   s      r$   test_traceback_in_numpy_versionz.TestGDBCLIInfo.test_traceback_in_numpy_version   s    	8 	8 	8
 Z0EwOO 	: 	:'))IY-y999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:r   N)rr   rs   rt   r   r   r   r   r   r   r   r   r   ru   r:   r$   rw   rw   w   s        , , ,\  
3 3 3	+ 	+ 	+: : :D D D: : :: : :: : : : :r:   rw   c                        e Zd Zd Zd Zd ZdS )TestGDBCLIInfoBrokenGdbsc                    t           j                                        }d|d<   t          j        dddg}t          ||          \  }}|                     d|           |                     d|           |                     d	|           d S )
N#THIS_IS_NOT_A_VALID_GDB_BINARY_NAMENUMBA_GDB_BINARYr)   r*   rp   r   Testing gdb binary failedNo such file or directoryz%'THIS_IS_NOT_A_VALID_GDB_BINARY_NAME'r?   environcopyr+   r,   r%   r.   r1   r   r   r   r   s        r$   test_cannot_find_gdb_from_namez7TestGDBCLIInfoBrokenGdbs.test_cannot_find_gdb_from_name   s    joo"G>4$7 c22216:::16:::=vFFFFFr:   c                    t           j                                        }t                      5 }t           j                            |d          }||d<   t          j        dddg}t          ||          \  }}| 	                    d|           | 	                    d|           | 	                    ||           d d d            d S # 1 swxY w Y   d S )	NCANNOT_EXISTr   r)   r*   rp   r   r   r   )
r?   r   r   r   r@   rA   r+   r,   r%   r.   )r1   r   rh   r@   r   r   r   s          r$   test_cannot_find_gdb_from_pathz7TestGDBCLIInfoBrokenGdbs.test_cannot_find_gdb_from_path   s   joo!! 	(Q7<<>22D&*C"#~tWd;G$W#666NFFMM5v>>>MM5v>>>MM$'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   BCC
C
c                     t           j                                        }d|d<   t          j        dddg}t          ||          \  }}|                     d|           |                     d|           d S )	Npythonr   r)   r*   rp   r   r   zUnknown optionr   r   s        r$   test_nonsense_gdb_binaryz1TestGDBCLIInfoBrokenGdbs.test_nonsense_gdb_binary  sv    joo"*>4$7 c22216::: 	&/////r:   N)rr   rs   rt   r   r   r   ru   r:   r$   r   r      sD        G G G( ( (
0 
0 
0 
0 
0r:   r   __main__)r?   r   r+   r   rF   r   tempfiler   unittestr   numba.tests.supportr   r   numba.misc.numba_sysinfomiscnumba_sysinforI   numba.tests.gdb_supportr	   numba.misc.numba_gdbinfor
   r   r   r%   r'   rw   r   rr   mainru   r:   r$   <module>r      s   
			     



      ' ' ' ' ' ' ' ' ' ' ' '        4 4 4 4 4 4 4 4 & & & & & & & & & - - - - - - 4 4 4 4 4 4 4 4 4 4 4 4 R    (K= K= K= K= K=h K= K= K=\t: t: t: t: t:X t: t: t:n &0 &0 &0 &0 &0x &0 &0 &0R zHMOOOOO r:   