
    J/Ph,                         d dl Z d dlZd dlZd dlmZ d dlZd dlZ	 d dlZdZn# e	$ r dZY nw xY w	 d dl
Z
dZn# e	$ r dZY nw xY w G d dej                  Zedk    r ej                     dS dS )    N)cudaTFc                   *   e Zd ZdZdddZd Zd Zd Zd Zd	 Z	d
 Z
d Z ej         ej                     d          d             Zd Zd Zd Zd Zd Zd Z ej        ed          d             Z ej        ed          d             Zd ZdS )TestCasezThese test cases are meant to test the Numba test infrastructure itself.
    Therefore, the logic used here shouldn't use numba.testing, but only the
    upstream unittest, and run the numba test suite only in a subprocess.Nsubp_kwargsc                    |pi }t           j        dddgt          |          z   }t          j        |fi |}|                    d                                          }d |D             }|S )zX
        Use `subp_kwargs` to pass extra argument to `subprocess.check_output`.
        z-mznumba.runtestsz-lUTF-8c                 :    g | ]}|                                 |S  )strip.0lines     Y/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_runtests.py
<listcomp>z2TestCase.get_testsuite_listing.<locals>.<listcomp>%   s%    888$4::<<8888    )sys
executablelist
subprocesscheck_outputdecode
splitlines)selfargsr   cmd	out_bytesliness         r   get_testsuite_listingzTestCase.get_testsuite_listing   sy     "'R~t%5t<tDzzI+C??;??	  ))446688%888r   c                     |                      |g          }|d d         D ]B}d                    ||          }|                     |                    |          |           Cd S )Nz{!r} not startswith {!r})msg)r   format
assertTrue
startswith)r   prefixlistinglnerrmsgs        r   check_listing_prefixzTestCase.check_listing_prefix(   sr    ,,fX66#2#, 	? 	?B/66r6BBFOOBMM&11vO>>>>	? 	?r   c                 X   |                      |          }|d         }|                     d|v            t          |                    d          d                   }|                     t          |          t          |dz   |dz                        |                     ||           |S )zR
        Check that the reported numbers of tests are at least *minsize*.
        r!   tests found r         )r   r$   intsplitassertInlenrangeassertGreaterEqual)r   r   minsizer   	last_linenumbers         r   check_testsuite_sizezTestCase.check_testsuite_size.   s     **400"I	2333Y__S))!,-- 	c%jj%
FRK"@"@AAA000r   c                     |                      |d          }|                     t          d |D                                  |                     t          d |D                                  d S )Ni  c              3      K   | ]}d |v V  	dS )znumba.cuda.tests.Nr   r   s     r   	<genexpr>z%TestCase.check_all.<locals>.<genexpr>?   s(      JJD/47JJJJJJr   c              3      K   | ]}d |v V  	dS )znumba.tests.npyufunc.test_Nr   r   s     r   r<   z%TestCase.check_all.<locals>.<genexpr>A   s;       / / $ 9D@ / / / / / /r   )r9   r$   any)r   idsr   s      r   	check_allzTestCase.check_all<   s    ))#t44JJEJJJJJKKK / /(-/ / / / / 	1 	1 	1 	1 	1r   c                 $    t          d |          S )z|returns a filter on strings starting with 'numba.', useful for
        selecting the 'numba' test names from a test listing.c                 ,    |                      d          S )Nznumba.)r%   )xs    r   <lambda>z8TestCase._get_numba_tests_from_listing.<locals>.<lambda>G   s    X 6 6 r   )filter)r   r'   s     r   _get_numba_tests_from_listingz&TestCase._get_numba_tests_from_listingD   s     66@@@r   c                 0    |                      g            d S )Nr@   r   s    r   test_defaultzTestCase.test_defaultI   s    rr   c                 2    |                      dg           d S )Nnumba.testsrH   rI   s    r   test_allzTestCase.test_allL   s    '''''r   c                 b    t          j                    rdnd}|                     dg|           d S )Nd   r.   znumba.cuda.tests)r   is_availabler9   )r   r6   s     r   	test_cudazTestCase.test_cudaO   s;     *,,3##!!!#5"6@@@@@r   zNO CUDAc                     |                      d           |                      d           |                      d           |                      d           d S )Nznumba.cuda.tests.cudadrvznumba.cuda.tests.cudapyznumba.cuda.tests.nocudaznumba.cuda.tests.cudasim)r*   rI   s    r   test_cuda_submoduleszTestCase.test_cuda_submodulesU   s\    !!"<===!!";<<<!!";<<<!!"<=====r   c                     |                      dgd           |                      dgd           |                      ddgd           d S )Nznumba.tests.test_storeslice   znumba.tests.test_nested_calls
      r9   rI   s    r   test_modulezTestCase.test_module\   sl    !!#@"A1EEE!!#B"CRHHH!!#B#@#BCE	G 	G 	G 	G 	Gr   c                 4    |                      dgd           d S )Nnumba.tests.npyufunc2   rX   rI   s    r   test_subpackagezTestCase.test_subpackagec   s"    !!#9":B?????r   c                 6    |                      g dd           d S )N)z--randomz0.1r[      rX   rI   s    r   test_randomzTestCase.test_randomf   s/    !!777	< 	< 	< 	< 	<r   c                      fd}ddg} |dg          }|D ]p} |d|dg          } |d|dg          }                      |||z               |d|z  dg          } |d|z  dg          }                      |||z              qd S )	Nc                                          |           }                    d|d                    t          |d                                         d                   }                    |dk               |S )Nr,   r!   r   )r   r2   r0   r1   r$   )arg_listr   countr   s      r   	get_countz5TestCase.test_include_exclude_tags.<locals>.get_countk   si    ..x88EMM-r333b	))!,--EOOEAI&&&Lr   long_runningzlong_running, importantrL   z--tagsz--exclude-tagsz	--tags=%sz--exclude-tags=%s)assertEqual)r   re   tagstotaltagincludedexcludeds   `      r   test_include_exclude_tagsz"TestCase.test_include_exclude_tagsj   s    	 	 	 	 	  9:	=/** 	9 	9C y(C!?@@H y"2C!GHHHUHx$7888 !y+"3]!CDDH y"5";]!KLLHUHx$78888	9 	9r   c                    |                      g           }|                      ddg          }|                      ddg          }t          |                     |                    }t          |                     |                    }t          |                     |                    }|                     t	          t          |          t          |          z
            t          |          dz             |                     t          |          t          |                     |                     t          |          t          |                     d S )N-jz0:2z1:2r/   )r   setrF   
assertLessabsr3   )r   tmpAlltmp1tmp2lAlll1l2s          r   test_check_shardzTestCase.test_check_shard   s   ++B//))4-88))4-88455f==>>33D99::33D99:: 	CGGc"gg-..D		B???BT+++BT+++++r   c                    t                      }t          d          D ]X}|                     dd                    |          g          }g |                     |          }|                    |           Y|                     ddg          }t          |                     |                    }|                     t          |          d           d |D             }t          t          |                    D ]>}| 	                    t          ||                   t          ||                              ?|D ]H}|D ]C}	| 
                    |	|           |                    |	           |                     |	|           DIt          j        |d          D ]\  }
}|                     |
|z             t                      }|D ]}|                    |           |                    |           t          |                     |                     g                               }| 	                    ||           d S )	N   ro   z{}:3z--tagalways_testr.   c                 ,    g | ]}t          |          S r   )rp   )r   rC   s     r   r   z;TestCase.test_check_sharding_equivalent.<locals>.<listcomp>   s    0001A000r   rU   )r   r4   r   r#   rF   appendrp   r5   r3   rg   r2   removeassertNotIn	itertoolscombinationsassertFalseupdate)r   shardedisubsetslisttmpalways_runningsharded_setsshardtestabsum_of_partsrC   full_listings                  r   test_check_sharding_equivalentz'TestCase.test_check_sharding_equivalent   s_   &&q 	" 	"A//v}}Q7G7G0HIIFAd88@@AENN5!!!! (('=)ABBT??DDEE 	N 3 3Q777 10000s7||$$ 	D 	DASa113wqz??CCCC " 	. 	.E& . .dE***T"""  u----. *<;; 	$ 	$DAqQU####
 uu 	# 	#A""""N+++4==&&r**, , - - 	|44444r   zRequires gitpythonc                 .   	 t          j        dt           j        t           j                   n%# t          $ r |                     d           Y nw xY w|                     dg          }|                     d|           |                     dg          }|                     d|           t          t           j                  }| 	                    t           j
                  5  |                     dg|	           d d d            d S # 1 swxY w Y   d S )
Ngitstdoutstderrzno git availablez-gzGit diff by common ancestorz-g=ancestor)r   z	-g=ancestr   )r   callDEVNULLFileNotFoundErrorskipTestr   r   r2   dictassertRaisesCalledProcessError)r   outsr   s      r   test_gitdiffzTestCase.test_gitdiff   s~   	.OE#-#5#-#57 7 7 7 7 ! 	. 	. 	.MM,-----	. ))4&116===))=/::3T:::*"4555z<== 	O 	O&&}+&NNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	Os!   +. AA$D

DDzRequires pyyamlc                 *   ddl m} t          j                            t          j                            t                              }t          j                            |ddd          }t          j                            |          s| 	                    d           t          t          j                            |          d          5 }|                                }d d d            n# 1 swxY w Y   t          j        ||          }|d         }g }|d d         D ]B}	|	d	         d
         }
|
                                D ]}|                    |d                    Cg d}t          j        j        |g|R  }t          j                            |          s| 	                    d           t          t          j                            |          d          5 }|                                }d d d            n# 1 swxY w Y   t          j        ||          }|d         d         d         d
         }
|
                                D ]}|                    |d                    |                     t!          |          t!          t#          |                               t%          |          dz   }g t'          |          }|                     t)          |          |           |                     ||d         d                    d S )Nr   )Loader..zazure-pipelines.ymlz&'azure-pipelines.yml' is not availablertjobsrU   
parametersmatrixTEST_START_INDEX)r   r   buildscriptsazurezazure-windows.ymlz$'azure-windows.yml' is not availablestrategyr.   	variables
TEST_COUNT)yamlr   ospathdirnameabspath__file__joinisfiler   openreadloadvaluesr~   rg   r3   rp   maxr4   sorted)r   r   	base_path
azure_pipefdatapipe_yml	templatesstart_indexestmpltr   setupwinpathazure_windowswindows_ymllim_start_indexexpecteds                    r   test_azure_configzTestCase.test_azure_config   sF   GOOBGOOH$=$=>>	W\\)T49NOO
w~~j)) 	DMMBCCC"'//*--t44 	6688D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	9T&111V$	rr] 	@ 	@E<(2F @ @$$U+=%>????@ MLLY9999w~~m,, 	BMM@AAA"'//-00$77 	16688D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	iV444 V$Q'
3H=]]__ 	< 	<E  '9!:;;;; 	]++S]1C1C-D-DEEEm,,q0,U?++,..999(;*?*MNNNNNs$   C,,C03C0 HHHc                    d}|                      t          j                  5 }t          j        d|                    d          g}t          j        |t          j        d           d d d            n# 1 swxY w Y   |                     d|j	        j
                            d                     t          j        d|                    d          g}t          j        |t          j        t          j        	           d S )
NaJ  if 1:
        from unittest import mock
        from llvmlite import binding as llvm
        error = RuntimeError("Detected compilation during test listing")
        with mock.patch.object(llvm.ExecutionEngine, 'finalize_object',
                               side_effect=error):
            import numba
            {0}
        z-cznumba.njit(lambda:0)()<   )r   timeoutz(Detected compilation during test listingr	   znumba.test('-l')r   )r   r   r   r   r   r#   r   STDOUTr2   	exceptionr   r   
check_callr   )r   coderaisesr   s       r   test_no_compilation_on_listz$TestCase.test_no_compilation_on_list   s5    z<== 	0>45M)N)NOC#C+5+<,.0 0 0 0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0
 	@&-44W==	? 	? 	?
 ~tT[[1C%D%DEc%/%7%/%7	: 	: 	: 	: 	: 	:s   AA22A69A6)__name__
__module____qualname____doc__r   r*   r9   r@   rF   rJ   rM   rQ   unittestskipIfr   rP   rS   rY   r]   r`   rm   ry   r   
skipUnlesshas_gitpythonr   
has_pyyamlr   r   r   r   r   r   r      s       M M :> 	 	 	 	 	? ? ?  1 1 1A A A
  ( ( (A A A X_**,,,i88> > 98>G G G@ @ @< < <9 9 9,, , ,+5 +5 +5Z X(<==O O >=O( X%677)O )O 87)OV: : : : :r   r   __main__)r   r   r   numbar   r   r   r   r   ImportErrorr   r   r   r   mainr   r   r   <module>r      s    				 



               JJJ MM    MMM
KKK JJ    JJJ@: @: @: @: @:x  @: @: @:F zHMOOOOO s   # --8 AA