U
    hâËd�  ã                   @   s<   d dl Z d dlZd dlZdd„ Zdd„ ZG dd„ deƒZdS )é    Nc                 K   sŒ   ddl m} d| kr,tjtjd� |  d¡ d| krL|  d¡ tƒ  | |¡S d| krp|  d¡ tdd� | |¡S || fd	d
i|—Ž ¡ S d S )Nr   ©Ú	run_testsz--log)Úlevelz--failed-firstz--last-failedT©Úlast_failedZdefaultTestznumba.tests)	Únumba.testingr   ÚloggingÚbasicConfigÚDEBUGÚremoveÚ_FailedFirstRunnerÚmainÚwasSuccessful)ÚargvÚkwdsr   © r   úP/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numba/testing/_runtests.pyÚ_main   s    


ÿr   c                  O   s   t dgt| ƒ f|ŽS )z~keyword arguments are accepted for backward compatibility only.
    See `numba.testing.run_tests()` documentation for details.z<main>)r   Úlist)r   r   r   r   r   r      s    r   c                   @   s6   e Zd ZdZdZddd„Zdd„ Zdd	„ Zd
d„ ZdS )r   zI
    Test Runner to handle the failed-first (--failed-first) option.
    z.runtests_lastfailedFc                 C   s
   || _ d S ©Nr   )Úselfr   r   r   r   Ú__init__)   s    z_FailedFirstRunner.__init__c                    sú   ddl m} |d }|dd … }dd„ |D ƒ}|  |¡\}‰ ˆ r‚d}t| tˆ ƒ¡ƒ ‡ fdd„|D ƒ}| jrxtˆ ƒ}	q–ˆ | }	n| jrŽg }	nt|ƒ}	|	s¦tdƒ d	S td
 t|	ƒ¡ƒ td|ƒ ||g| |	 f|Ž}
t|	ƒ|
jkrò|  	|
|¡ |
 
¡ S )Nr   r   é   c                 S   s   g | ]}|  d ¡r|‘qS ©ú-©Ú
startswith©Ú.0Úar   r   r   Ú
<listcomp>0   s     
 z+_FailedFirstRunner.main.<locals>.<listcomp>z%There were {} previously failed testsc                    s   g | ]}|ˆ kr|‘qS r   r   )r   Út©Úfailed_testsr   r   r    7   s    ÿzNo tests to runTzRunning {} testsÚFlags)r   r   Úfind_last_failedÚprintÚformatÚlenr   r   ZtestsRunÚsave_failed_testsr   )r   r   r   r   ÚprogÚflagsÚ	all_testsÚftZremaing_testsÚtestsÚresultr   r"   r   r   ,   s0    


z_FailedFirstRunner.mainc              	   C   s‚   t d | j¡ƒ g }tƒ }|j|j D ]}| |d  ¡ ¡ q&|D ]}||krB| |¡ qBt	| jdƒ�}t
 ||¡ W 5 Q R X d S )NzSaving failed tests to {}r   Úw)r&   r'   Úcache_filenameÚsetÚerrorsZfailuresÚaddÚidÚappendÚopenÚjsonÚdump)r   r/   r,   ÚcacheÚfailedÚcaser!   Zfoutr   r   r   r)   P   s    z$_FailedFirstRunner.save_failed_testsc           
   	      s®   ddl m} dgdd„ |D ƒ }|dƒ�$}t|Ž  t d¡‰ | ¡  ¡ }W 5 Q R X ‡ fdd„|D ƒ}zt| jƒ}W n t	k
rŠ   g }Y nX |�}	t
 |	¡}W 5 Q R X ||fS )	Nr   )Úcaptured_outputz-lc                 S   s   g | ]}|  d ¡s|‘qS r   r   r   r   r   r   r    c   s     
 z7_FailedFirstRunner.find_last_failed.<locals>.<listcomp>Ústdoutz^(\w+\.)+\w+$c                    s   g | ]}ˆ   |¡d k	r|‘qS r   )Úmatch)r   Úx©Úpatr   r   r    i   s      )Znumba.tests.supportr=   r   ÚreÚcompileÚgetvalueÚ
splitlinesr7   r1   ÚOSErrorr8   Úload)
r   r   r=   ZlistargvÚstreamÚlinesr,   Zfobjr#   Zfinr   rA   r   r%   _   s    


z#_FailedFirstRunner.find_last_failedN)F)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r1   r   r   r)   r%   r   r   r   r   r   #   s   
$r   )r8   rC   r   r   r   Úobjectr   r   r   r   r   Ú<module>   s
   