
    ܙd&                         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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-lzUTF-8c                 :    g | ]}|                                 |S  )strip.0lines     9lib/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   )r8   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.testsrG   rH   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_availabler8   )r   r5   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)   rH   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
      r8   rH   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   rW   rH   s    r   test_subpackagezTestCase.test_subpackagec   s"    !!#9":B?????r   c                 6    |                      g dd           d S )N)z--randomz0.1rZ      rW   rH   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   r1   r/   r0   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, importantrK   z--tagsz--exclude-tagsz	--tags=%sz--exclude-tags=%s)assertEqual)r   rd   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   setrE   
assertLessabsr2   )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   rn   z{}:3z--tagalways_testr-   c                 ,    g | ]}t          |          S r
   )ro   )r   rB   s     r   r   z;TestCase.test_check_sharding_equivalent.<locals>.<listcomp>   s    0001A000r   rT   )r   r3   r   r"   rE   appendro   r4   r2   rf   r1   removeassertNotIn	itertoolscombinationsassertFalseupdate)r   shardedisubsetslisttmpalways_runningsharded_setsshardtestabsum_of_partsrB   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   r1   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jobsrT   
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}   rf   r2   ro   maxr3   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)__name__
__module____qualname____doc__r   r)   r8   r?   rE   rI   rL   rP   unittestskipIfr   rO   rR   rX   r\   r_   rl   rx   r   
skipUnlesshas_gitpythonr   
has_pyyamlr   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 )O )O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cO cO cO cO cOx  cO cO cOL zHMOOOOO s   # --8 AA