o
    IXh1                  	   @   sB  d dl Z d dlZd dlZd dlZd dlZ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mZ d dlmZmZmZ G dd dZG d	d
 d
eZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZ G dd deZ!dZ"g d Z#e$ Z%g Z&d!ed"ed#e'fd$d%Z(d>d&d'Z)de#e%fd(d)Z*d"ed*e+d#e+fd+d,Z,d"ed*e+d#efd-d.Z-d"ed*e+d#efd/d0Z.d1d2 Z/d"ed*e+fd3d4Z0d"ed*e+d#e'fd5d6Z1	7d?d"ed*e+d8e'd#efd9d:Z2d*e+d;e3d#dfd<d=Z4dS )@    N)support)	os_helper)	Namespace)saved_test_environment)clear_cachesformat_durationprint_warningc                	   @   sB   e Zd Z		ddededee dB ddfddZdefd	d
ZdS )
TestResult        Nnameduration_secxml_datareturnc                 C   s   || _ || _|| _d S N)r   r   r   )selfr   r   r    r   B/opt/python-3.10.19/usr/lib/python3.10/test/libregrtest/runtest.py__init__   s   
zTestResult.__init__c                 C      | j  dS )Nz	 finishedr   r   r   r   r   __str__      zTestResult.__str__)r
   N)__name__
__module____qualname__strfloatlistr   r   r   r   r   r   r	      s    


r	   c                   @      e Zd ZdefddZdS )Passedr   c                 C   r   )Nz passedr   r   r   r   r   r   #   r   zPassed.__str__Nr   r   r   r   r   r   r   r   r   r    "       r    c                       sv   e Zd Z				ddededee dB deeeef  dB deeeef  dB ddf fd	d
ZdefddZ  Z	S )Failedr
   Nr   r   r   errorsfailuresr   c                    s"   t  j|||d || _|| _d S )N)r   r   )superr   r$   r%   )r   r   r   r   r$   r%   	__class__r   r   r   (   s   
zFailed.__init__c              
   C   s   | j r6| jr6t| j }t| j}d|dkrdnd }d|dkr!dnd }| j d| d| d| d| d	
S | j rTt| j }d|dkrEdnd }| j d| d| d	S | jrrt| j}d|dkrcdnd }| j d| d| d	S | j d
S )Nerror   s Zfailurez	 failed ( z, ) failed)r$   r%   lenr   )r   leZlfZerror_sZ	failure_sr   r   r   r   4   s   

$

zFailed.__str__)r
   NNN)
r   r   r   r   r   r   tupler   r   __classcell__r   r   r'   r   r#   '   s&    
r#   c                   @   r   )UncaughtExceptionr   c                 C   r   )Nz failed (uncaught exception)r   r   r   r   r   r   J   r   zUncaughtException.__str__Nr!   r   r   r   r   r4   I   r"   r4   c                   @   r   )
EnvChangedr   c                 C   r   )Nz failed (env changed)r   r   r   r   r   r   O   r   zEnvChanged.__str__Nr!   r   r   r   r   r5   N   r"   r5   c                   @   r   )RefLeakr   c                 C   r   )Nz failed (reference leak)r   r   r   r   r   r   T   r   zRefLeak.__str__Nr!   r   r   r   r   r6   S   r"   r6   c                   @   r   )Skippedr   c                 C   r   )Nz skippedr   r   r   r   r   r   Y   r   zSkipped.__str__Nr!   r   r   r   r   r7   X   r"   r7   c                   @   r   )ResourceDeniedr   c                 C   r   )Nz skipped (resource denied)r   r   r   r   r   r   ^   r   zResourceDenied.__str__Nr!   r   r   r   r   r8   ]   r"   r8   c                   @   r   )Interruptedr   c                 C   r   )Nz interruptedr   r   r   r   r   r   c   r   zInterrupted.__str__Nr!   r   r   r   r   r9   b   r"   r9   c                   @   r   )
ChildErrorr   c                 C   r   )Nz crashedr   r   r   r   r   r   h   r   zChildError.__str__Nr!   r   r   r   r   r:   g   r"   r:   c                   @   r   )	DidNotRunr   c                 C   r   )Nz ran no testsr   r   r   r   r   r   m   r   zDidNotRun.__str__Nr!   r   r   r   r   r;   l   r"   r;   c                   @   r   )Timeoutr   c                 C   s   | j  dt| j dS )Nz timed out (r.   )r   r   r   r   r   r   r   r   r   s   zTimeout.__str__Nr!   r   r   r   r   r<   q   r"   r<   g      >@)
Ztest_grammarZtest_opcodesZ	test_dictZtest_builtinZtest_exceptionsZ
test_typesZtest_unittestZtest_doctestZtest_doctest2Ztest_supportresultnsr   c                 C   s   t | tr|jS t | tS r   )
isinstancer5   Zfail_env_changedr#   )r=   r>   r   r   r   	is_failed   s   

r@   c                 C   s   | pt jt jtpt jS r   )ospathdirname__file__curdir)rB   r   r   r   findtestdir   s   rF   c           	      C   sr   t | } t| }g }t||B }|D ]}tj|\}}|dd dkr2|dv r2||vr2|| q|t| S )z-Return a list of all applicable test modules.N   Ztest_)z.pyr,   )rF   rA   listdirsetrB   splitextappendsorted)	testdirZstdtestsZnottestsnamestestsZothersr   modextr   r   r   	findtests   s   
 
rR   	test_namec                 C   s   | ds| jr
|S d| S )Nztest.)
startswithrM   r>   rS   r   r   r   get_abs_module   s   rV   c                    sX  | j }| jd u}|rtj| jdd t }zt| j| j	 | j
r$g nd  t_}| jr/dt_|rmdt_t }tj}tj}z'|t_|t_t| |dd}	t|	ts^| }
||
 |  W |t_|t_n|t_|t_w | jt_t| || j d}	|rdd lm  m   fdd|D |	_t | |	_|	W |rt  d t_S |rt  d t_w )NT)exitF)display_failurer   c                    s   g | ]
}  |d qS )zus-ascii)Ztostringdecode).0xZETr   r   
<listcomp>   s    z_runtest.<locals>.<listcomp>)Zverbose3timeoutfaulthandlerZdump_traceback_latertimeperf_counterr   Zset_match_testsZmatch_testsZignore_testsZxmlpathZjunit_xml_listZfailfastverboseioStringIOsysstdoutstderr_runtest_innerr?   r    getvaluewriteflushZxml.etree.ElementTreeZetreeZElementTreer   r   Zcancel_dump_traceback_later)r>   rS   Zoutput_on_failureZuse_timeoutZ
start_timeZxml_liststreamZorig_stdoutZorig_stderrr=   outputr   r\   r   _runtest   s^   



rn   c                 C   sJ   zt | |W S    | jst }td| d| tjdd t| Y S )a  Run a single test.

    ns -- regrtest namespace of options
    test_name -- the name of the test

    Returns a TestResult sub-class depending on the kind of result received.

    If ns.xmlpath is not None, xml_data is a list containing each
    generated testsuite element.
    test  crashed -- Tfilerk   )rn   pgo	traceback
format_excprintre   rg   r#   )r>   rS   msgr   r   r   runtest   s   rx   c                 C   sH   t  }|| }|jD ]	}t|tjd q|jrtdt	| d S )N)rr   zerrors while loading tests)
unittestZ
TestLoaderZloadTestsFromModuler$   rv   re   rg   	Exceptionr   Zrun_unittest)
the_moduleloaderrO   r)   r   r   r   _test_module   s   

r}   c                 C   s   t || j| j| jdS )N)rs   )r   rb   quietrs   rU   r   r   r   save_env  s   r   c              	   C   s  t | |}ztj|= W n	 ty   Y nw t|}| jr#ddlm} t	|dd }|d u r3t
t|}z,t| | | jrD|| ||}n|  d}W d    n1 sSw   Y  W t|| j nt|| j w t  tjrdt_t| dttj d ttj tj  t  |S )Nr   )dash_RZ	test_mainFTz	 created z uncollectable object(s).)rV   re   modulesKeyError	importlibimport_moduleZ
huntrleaksZtest.libregrtest.refleakr   getattr	functoolspartialr}   r   cleanup_test_droppingsrb   r   
gc_collectgcZgarbageenvironment_alteredr   r0   FOUND_GARBAGEextendclearreap_children)r>   rS   Zabstestr{   r   Ztest_runnerrefleakr   r   r   _runtest_inner2  s<   


r   TrX   c              
   C   sF  dt _| jrd}zt  t| | t| |}W d    n1 s!w   Y  W n t jyO } z| jsA| jsAt| d| dd t|W  Y d }~S d }~w t	j
yv } z| jsh| jsht| d| dd t|W  Y d }~S d }~w t jy } z&d| d}|r| d| }t|tjdd t||j|jd	W  Y d }~S d }~w t jy } z!d| d}|r| d| }t|tjdd t|W  Y d }~S d }~w t jy   t| Y S  ty   t  t| Y S    | js
t }td| d
| tjdd t| Y S |rt|S t jrt|S t|S )NFz skipped -- T)rk   ro   r/   z -- rq   )r$   r%   rp   )r   r   rs   r   r   r   r8   r~   rv   ry   ZSkipTestr7   ZTestFailedWithDetailsre   rg   r#   r$   r%   Z
TestFailedZTestDidNotRunr;   KeyboardInterruptr9   rt   ru   r4   r6   r5   r    )r>   rS   rX   r   rw   excr   r   r   rh   ?  sd   rh   rb   c                 C   s  t   tjfD ]x}tj|sqtj|r"dd l}d|j	}}ntj
|r/dtj}}ntd|d|rHt|  d| d| dt _zdd l}t||j|jB |jB  || W q ty } zt|  d| d|d	|  W Y d }~qd }~ww d S )
Nr   Z	directoryrr   zos.path says z) exists but is neither directory nor filez left behind r-   Tz and it couldn't be removed: )r   r   r   ZTESTFNrA   rB   existsisdirshutilrmtreeisfileunlinkRuntimeErrorr   r   statchmodS_IRWXUS_IRWXGS_IRWXOrz   )rS   rb   r   r   kindZnukerr   r   r   r   r   r   w  s0   r   r   )T)5r_   r   r   r   rc   rA   re   r`   rt   ry   testr   Ztest.supportr   Ztest.libregrtest.cmdliner   Ztest.libregrtest.save_envr   Ztest.libregrtest.utilsr   r   r   r	   r    r#   r4   r5   r6   r7   r8   r9   r:   r;   r<   ZPROGRESS_MIN_TIMEZSTDTESTSrI   ZNOTTESTSr   boolr@   rF   rR   r   rV   rn   rx   r}   r   r   rh   intr   r   r   r   r   <module>   sf    "
9
4
8