
    xKg(                     8   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j8                          yy)    NCompletedProcess)TemporaryDirectory)mock)TestCase
linux_only)	needs_gdb)collect_gdbinfo)_GDBTestWrapper<   c                    t        j                  | t         j                  t         j                  |      }t        j                  ||j
                        }	 |j                          |j                         \  }}|j                  dk7  r*t        d|j                  d|j                         d      |j                         |j                         f|j                          S # |j                          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          X/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_cli.pyrun_cmdr%      s    W$.OO$.OO!$&E
 OOGUZZ8M	$$&Sq  !!3::<12 2 zz|SZZ\)s   A;C# #C5c                   .    e Zd Zd Zd Zd Zed        Zy)TestCLIc                     t         j                  ddg}| j                  t              5 }t	        |       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)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+   sT    >>41~.&G / 	2C8H8H4IJ /.s   A##A,c                 l    t         j                  dddg}t        |      \  }}| j                  d|       y )Nr)   r*   z-szSystem infor+   r,   r%   r.   r1   r   o_s       r$   test_sysinfo_from_modulez TestCLI.test_sysinfo_from_module2   s0    >>4$7w1mQ'    c                    t               5 }t        j                  j                  |d      }t        j
                  ddd|g}t        |       | j                  | d      5  | j                  t        j                  j                  |             d d d        | j                  d      5  t        |d      5 }t        j                  |      }d d d        d d d        t        t        j                  ft         t        j"                  ft$        t        j&                  t        j(                  t        j*                  t        j,                  t        j.                  t        j0                  t        j2                  t        j4                  t        j6                  t        j8                  t        j:                  ft<        t        j>                  t        j@                  t        jB                  t        jD                  t        jF                  t        jH                  t        jJ                  t        jL                  ftN        t        jP                  t        jR                  ftT        t        jV                  fi}|jY                         D ]<  \  }}|D ]2  }	| j                  |		      5  | j[                  |	   |       d d d        4 > 	 d d d        y # 1 sw Y   6xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   y xY w)
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%   !Q77<<#;<D~~tWlDIGGTF'"23t 45 4+.$_99Q<D % / NN LL JJNNLLMM&&LLOO$$$$''%% $$OO$$))**OO&&OO	 KKMM ''E%ML )..04A*--d1gq9 +*  1_ "! 43 %_ /.V +*c "!sm   AK7!/KK7*K7KKGK7K+	.K7K		K7KKK(	#K7+K40K77L c                     t         j                  dddg}t        |      \  }}| j                  d|       | j                  d|       y )Nr)   r*   -gzGDB infoz Numba printing extension supportr5   r6   s       r$   test_gdb_status_from_modulez#TestCLI.test_gdb_status_from_modulel   sC     >>4$7w1j!$ 	8!<r:   N)__name__
__module____qualname__r3   r9   rn   r	   rq    r:   r$   r'   r'   )   s'    K(
3:j = =r:   r'   c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestGDBCLIInfoc                     g  _         d } j                   j                  t        j                  j	                  t
        d|             d} j                   j                  t        j                  |d              fd}d } |d|       d } |d	|       d
 } |d|       d } |d|        j                   D ]  }|j                           y )Nc                      y Nru   r1   s    r$   <lambda>z&TestGDBCLIInfo.setUp.<locals>.<lambda>   s    r:   __init__z3numba.misc.numba_gdbinfo._GDBTestWrapper.gdb_binaryPATH_TO_GDBc                     j                   j                  t        j                  j	                  t
        | |             y rz   )_patchesappendr   patchobjectr   )fnstrfuncr1   s     r$   _patchz$TestGDBCLIInfo.setUp.<locals>._patch   s-    MM  !2!2?E37"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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   s     %	TZZ..
/8: 	; FTZZ}=>	:	9 	~01	/
 	~01	/ 	}./	/ 	$&>? AGGI r:   c                 F    | j                   D ]  }|j                           y rz   )r   stop)r1   r   s     r$   tearDownzTestGDBCLIInfo.tearDown   s    AFFH r:   c                    t               }| j                  |j                  d       t        j                  j                  t        j                  j                  |j                              }| j                  |       | j                  |j                  d       | j                  |j                  d       | j                  d|j                         y )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    #%	--}=ww~~bggooi.E.EFG))51))62fi112r:   c                    d }t         j                  j                  t        d|      5  t	               }| j                  d|j                         | j                  d|j                         d d d        y # 1 sw Y   y xY w)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 ZZH"$DMM6HMMH//+ IHH   AA55A>c                    d }t         j                  j                  t        d|      5  t	               }| j                  |j                  d       | j                  |j                  d       d d d        y # 1 sw Y   y xY w)Nc                     t        dd      S )N	NO PYTHONr   r   r{   s    r$   r   z.TestGDBCLIInfo.test_no_python.<locals>.mock_fn   s    #K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   sa    	4 ZZH')IY--/BCY00&9 IHHr   c                     d }t         j                  j                  t        d|      5  t	               }| j                  |j                  d       d d d        y # 1 sw Y   y xY w)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Mr:   r   r   )r   r   r   r   r
   r   r   r   s      r$   test_unparsable_python_versionz-TestGDBCLIInfo.test_unparsable_python_version   sL    	N ZZH')IY--/BC IHH   'AA"c                 :   d }t         j                  j                  t        d|      5  t	               }| j                  |j                  d       | j                  |j                  d       | j                  d|j                         d d d        y # 1 sw Y   y xY w)Nc                     t        dd      S )NzNO NUMPYr   r   r{   s    r$   r   z-TestGDBCLIInfo.test_no_numpy.<locals>.mock_fn   s    #J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   su    	3 ZZwG')IY--/ABY--u5MM)Y%8%89	 HGGs   ABBc                     d }t         j                  j                  t        d|      5  t	               }| j                  |j                  d       d d d        y # 1 sw Y   y xY w)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   sK    	; ZZ0EwO')IY--y9 POOr   c                     d }t         j                  j                  t        d|      5  t	               }| j                  |j                  d       d d d        y # 1 sw Y   y xY w)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 8r:   r   r   r   r   s      r$   test_traceback_in_numpy_versionz.TestGDBCLIInfo.test_traceback_in_numpy_version   sK    	8
 ZZ0EwO')IY--y9 POOr   N)rr   rs   rt   r   r   r   r   r   r   r   r   r   ru   r:   r$   rw   rw   w   s1    ,\
3	+:D:::r:   rw   c                       e Zd Zd Zd Zd Zy)TestGDBCLIInfoBrokenGdbsc                     t         j                  j                         }d|d<   t        j                  dddg}t        ||      \  }}| j                  d|       | j                  d|       | j                  d	|       y )
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   sl    jjoo"G>>4$7 c216:16:=vFr:   c                 |   t         j                  j                         }t               5 }t         j                  j                  |d      }||d<   t        j                  dddg}t        ||      \  }}| j                  d|       | j                  d|       | j                  ||       d d d        y # 1 sw Y   y xY w)	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    jjoo!Q77<<>2D&*C"#~~tWd;G$W#6NFFMM5v>MM5v>MM$' "!!s   B B22B;c                     t         j                  j                         }d|d<   t        j                  dddg}t        ||      \  }}| j                  d|       | j                  d|       y )	Npythonr   r)   r*   rp   r   r   zUnknown optionr   r   s        r$   test_nonsense_gdb_binaryz1TestGDBCLIInfoBrokenGdbs.test_nonsense_gdb_binary  s_    jjoo"*>>4$7 c216: 	&/r:   N)rr   rs   rt   r   r   r   ru   r:   r$   r   r      s    G(
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 R (K=h K=\t:X t:n &0x &0 &0R zHMMO r:   