
    h}3              	          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 d dlmZmZmZ  G d d	          Z G d
 de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z  G d de          Z! G d de          Z"d Z#g d!Z$ e%            Z&g Z'd"ed#ed$e(fd%Z)d4d&Z*de$e&fd'Z+d#ed(e,d$e,fd)Z-d#ed(e,d$efd*Z.d#ed(e,d$efd+Z/d, Z0d#ed(e,fd-Z1d#ed(e,d$e(fd.Z2	 d5d#ed(e,d0e(d$efd1Z3d(e,d2e4d$dfd3Z5dS )6    N)support)	os_helper)threading_helper)	Namespace)saved_test_environment)clear_cachesformat_durationprint_warningc            	       J    e Zd Z	 	 d	dededee         dz  ddfdZdefdZdS )

TestResult        Nnameduration_secxml_datareturnc                 0    || _         || _        || _        d S N)r   r   r   )selfr   r   r   s       //usr/lib/python3.11/test/libregrtest/runtest.py__init__zTestResult.__init__   s     	(     c                     | j          dS )Nz	 finishedr   r   s    r   __str__zTestResult.__str__   s    )&&&&r   )r   N)__name__
__module____qualname__strfloatlistr   r    r   r   r   r      s         "%)	! !! ! s)d"	!
 
! ! ! !' ' ' ' ' ' 'r   r   c                       e Zd ZdefdZdS )Passedr   c                     | j          dS )Nz passedr   r   s    r   r   zPassed.__str__$   s    )$$$$r   Nr   r   r   r   r   r"   r   r   r$   r$   #   s/        % % % % % % %r   r$   c                        e Zd Z	 	 	 	 ddededee         dz  deeeef                  dz  deeeef                  dz  ddf fd	Zdefd
Z xZ	S )Failedr   Nr   r   r   errorsfailuresr   c                 l    t                                          |||           || _        || _        d S )N)r   r   )superr   r)   r*   )r   r   r   r   r)   r*   	__class__s         r   r   zFailed.__init__)   s6     	L8LLL r   c           
         | j         r_| j        rXt          | j                   }t          | j                  }d|dk    rdndz   }d|dk    rdndz   }| j         d| d| d| d| d	
S | j         r1t          | j                   }d|dk    rdndz   }| j         d| d| d	S | j        r1t          | j                  }d|dk    rdndz   }| j         d| d| d	S | j         d
S )Nerror   s failurez	 failed ( z, ) failed)r)   r*   lenr   )r   lelferror_s	failure_ss        r   r   zFailed.__str__5   sC   ; 	L4= 	LT[!!BT]##BQB7G!BFFSS;IiKK"KKwKK"KKyKKKK; 	:T[!!BQB7Gi99"99w9999= 	<T]##B!BFFSS;Ii;;";;y;;;;)$$$$r   )r   NNN)
r   r   r   r   r    r!   tupler   r   __classcell__)r-   s   @r   r(   r(   (   s         "%)/315
! 
!
! 
! s)d"	
!
 U38_%,
! uS#X'$.
! 

! 
! 
! 
! 
! 
!% % % % % % % % %r   r(   c                       e Zd ZdefdZdS )UncaughtExceptionr   c                     | j          dS )Nz failed (uncaught exception)r   r   s    r   r   zUncaughtException.__str__K   s    )9999r   Nr&   r"   r   r   r?   r?   J   s/        : : : : : : :r   r?   c                       e Zd ZdefdZdS )
EnvChangedr   c                     | j          dS )Nz failed (env changed)r   r   s    r   r   zEnvChanged.__str__P   s    )2222r   Nr&   r"   r   r   rB   rB   O   s/        3 3 3 3 3 3 3r   rB   c                       e Zd ZdefdZdS )RefLeakr   c                     | j          dS )Nz failed (reference leak)r   r   s    r   r   zRefLeak.__str__U   s    )5555r   Nr&   r"   r   r   rE   rE   T   s/        6 6 6 6 6 6 6r   rE   c                       e Zd ZdefdZdS )Skippedr   c                     | j          dS )Nz skippedr   r   s    r   r   zSkipped.__str__Z       )%%%%r   Nr&   r"   r   r   rH   rH   Y   /        & & & & & & &r   rH   c                       e Zd ZdefdZdS )ResourceDeniedr   c                     | j          dS )Nz skipped (resource denied)r   r   s    r   r   zResourceDenied.__str___   s    )7777r   Nr&   r"   r   r   rM   rM   ^   s/        8 8 8 8 8 8 8r   rM   c                       e Zd ZdefdZdS )Interruptedr   c                     | j          dS )Nz interruptedr   r   s    r   r   zInterrupted.__str__d   s    )))))r   Nr&   r"   r   r   rP   rP   c   s/        * * * * * * *r   rP   c                       e Zd ZdefdZdS )
ChildErrorr   c                     | j          dS )Nz crashedr   r   s    r   r   zChildError.__str__i   rJ   r   Nr&   r"   r   r   rS   rS   h   rK   r   rS   c                       e Zd ZdefdZdS )	DidNotRunr   c                     | j          dS )Nz ran no testsr   r   s    r   r   zDidNotRun.__str__n   s    )****r   Nr&   r"   r   r   rV   rV   m   s/        + + + + + + +r   rV   c                       e Zd ZdefdZdS )Timeoutr   c                 @    | j          dt          | j                   dS )Nz timed out (r5   )r   r	   r   r   s    r   r   zTimeout.__str__s   s&    )NN9J)K)KNNNNr   Nr&   r"   r   r   rY   rY   r   s6        O O O O O O Or   rY   g      >@)
test_grammartest_opcodes	test_dicttest_builtintest_exceptions
test_typestest_unittesttest_doctesttest_doctest2test_supportresultnsr   c                 d    t          | t                    r|j        S t          | t                    S r   )
isinstancerB   fail_env_changedr(   )re   rf   s     r   	is_failedrj      s-    &*%% #""ff%%%r   c                     | pLt           j                            t           j                            t                              pt           j        S r   )ospathdirname__file__curdir)rm   s    r   findtestdirrq      s0    J27??27??8#<#<==JJr   c                 8   t          |           } t          j        |           }g }t          |          |z  }|D ]O}t          j                            |          \  }}|dd         dk    r|dv r||vr|                    |           P|t          |          z   S )z-Return a list of all applicable test modules.N   test_)z.pyr2   )rq   rl   listdirsetrm   splitextappendsorted)	testdirstdtestsnottestsnamestestsothersr   modexts	            r   	findtestsr      s    '""GJwEE]]X%F  7##D))Srr7g#"4"4F9J9JLLfUmm##r   	test_namec                 H    |                     d          s| j        r|S d|z   S )Nztest.)
startswithrz   rf   r   s     r   get_abs_moduler      s4    G$$ #
 # ""r   c                    | j         }| j        d uot          j        }|rt	          j        | j        d           t          j                    }	 t          j	        | j
        | j                   | j        rg nd xt          _        }| j        rdt          _        |r+dt          _        t!          j                    }t$          j        }t$          j        }t          j        }	|	j        }
d }	 |t$          _        |t$          _        ||	_        t/          | |d          }t1          |t2                    s|                                }|t$          _        |t$          _        |
|	_        n$# |t$          _        |t$          _        |
|	_        w xY w|=t$          j                            |           t$          j                                         n)| j        t          _        t/          | || j                   }|rdd lmc m fd|D             |_         t          j                    |z
  |_!        ||rt	          j"                     d t          _        S # |rt	          j"                     d t          _        w xY w)NT)exitF)display_failurer   c                 `    g | ]*}                     |                              d           +S )zus-ascii)tostringdecode).0xETs     r   
<listcomp>z_runtest.<locals>.<listcomp>   sA        A%%j11  r   )#verbose3timeoutr   can_start_threadfaulthandlerdump_traceback_latertimeperf_counterr   set_match_testsmatch_testsignore_testsxmlpathjunit_xml_listfailfastverboseioStringIOsysstdoutstderrr
   orig_stderr_runtest_innerrh   r$   getvaluewriteflushxml.etree.ElementTreeetreeElementTreer   r   cancel_dump_traceback_later)rf   r   output_on_failureuse_timeout
start_timexml_liststreamorig_stdoutr   r
   orig_print_warnings_stderroutputre   r   s                @r   _runtestr      s     	
$D#3#D   A)"*4@@@@"$$J7&@@@24*,FBB$F; 	$#G #	D"GO[]]F*K*K#1M)6)B&FG#
#
 -3)'I8=? ? ?!&&11 /#__..F(
(
,F)) )
(
,F)FFFF!
  (((
  """ !jGO#B	8:
ND D DF  	.........   !  FO
 #/11J> 	74666!%  	74666!%%%%%s'   BI (AE"  I "!FB&I #I.c                     	 t          | |          S #  | j        s5t          j                    }t	          d| d| t
          j        d           t          |          cY S xY w)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filer   )r   pgo	traceback
format_excprintr   r   r(   )rf   r   msgs      r   runtestr      s}    !I&&&!v 	/&((C6)6666z/ / / /i     s
    AA!c                     t          j                    }|                    |           }|j        D ]}t	          |t
          j                   |j        rt          d          t          j	        |           d S )N)r   zerrors while loading tests)
unittest
TestLoaderloadTestsFromModuler)   r   r   r   	Exceptionr   run_unittest)
the_moduleloaderr~   r/   s       r   _test_moduler     s|     ""F&&z22E & &e#*%%%%%} 64555r   c                 F    t          || j        | j        | j                  S )N)r   )r   r   quietr   r   s     r   save_envr     s    !)RZrvNNNNr   c                 r   t          | |          }	 t          j        |= n# t          $ r Y nw xY wt	          j        |          }| j        rddlm} t          |dd           }|t          j        t          |          }	 t          | |          5  | j        r || ||          }n |             d}d d d            n# 1 swxY w Y   t          j                     t!          || j                   n-# t          j                     t!          || j                   w xY wt$          j        rzdt          _        t+          | dt-          t$          j                   d           t.                              t$          j                   t$          j                                         t          j                     |S )Nr   )dash_R	test_mainFTz	 created z uncollectable object(s).)r   r   modulesKeyError	importlibimport_module
huntrleakstest.libregrtest.refleakr   getattr	functoolspartialr   r   r   
gc_collectcleanup_test_droppingsr   gcgarbageenvironment_alteredr
   r7   FOUND_GARBAGEextendclearreap_children)rf   r   abstestr   r   test_runnerrefleaks          r   _runtest_inner2r     s    R++GK      (11J	} 4333333 *k488K'jAA6b)$$ 	  	 }   &Y<<	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	y"*5555 	y"*5555	z &*# 2 2S__ 2 2 2 	3 	3 	3
 	RZ(((

Ns<     
--?C1 "B=1C1 =CC1 CC1 1*DTr   c                    dt           _        | j        rd}	 t                       t          j                     t          | |          5  t          | |          }d d d            n# 1 swxY w Y   n# t           j        $ r=}| j        s| j        st          | d| d           t          |          cY d }~S d }~wt          j        $ r=}| j        s| j        st          | d| d           t          |          cY d }~S d }~wt           j        $ rQ}d| d}|r| d| }t          |t          j        d           t!          ||j        |j        	          cY d }~S d }~wt           j        $ rD}d| d}|r| d| }t          |t          j        d           t!          |          cY d }~S d }~wt           j        $ r t+          |          cY S t,          $ r  t                       t/          |          cY S  | j        s5t1          j                    }t          d| d
| t          j        d           t5          |          cY S xY w|rt7          |          S t           j        rt9          |          S t;          |          S )NFz skipped -- T)r   r   r6   z -- r   )r)   r*   r   )r   r   r   r   r   r   r   rM   r   r   r   SkipTestrH   TestFailedWithDetailsr   r   r(   r)   r*   
TestFailedTestDidNotRunrV   KeyboardInterruptrP   r   r   r?   rE   rB   r$   )rf   r   r   r   r   excs         r   r   r   R  sz    #(G	v  $,b)$$ 	5 	5%b)44G	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5! ) ) )x 	? 	?Y11C11>>>>i(((((((( " " "x 	? 	?Y11C11>>>>y!!!!!!!!( K K K(i((( 	$##c##Cc
$////i
S\JJJJJJJJJ ! ! !(i((( 	$##c##Cc
$////i          $ $ $##### & & &9%%%%%,v 	/&((C6)6666z/ / / / +++++ "y!!!" %)$$$)s   1A2 A%A2 %A))A2 ,A)-A2 2I2B93I9I2D=IIAE!I!I39F2,I2!I&I=AIr   c                 f   t           j        fD ]!}t          j                            |          s#t          j                            |          rdd l}d|j        }}nAt          j                            |          rdt          j	        }}nt          d|d          |r#t          |  d| d|           dt          _        	 dd l}t          j        ||j        |j        z  |j        z              ||           # t&          $ r%}t          |  d| d|d	|            Y d }~d }~ww xY wd S )
Nr   	directoryr   zos.path says z) exists but is neither directory nor filez left behind r4   Tz and it couldn't be removed: )r   TESTFNrl   rm   existsisdirshutilrmtreeisfileunlinkRuntimeErrorr
   r   r   statchmodS_IRWXUS_IRWXGS_IRWXOr   )r   r   r   r   kindnukerr   r   s           r   r   r     s    !# @ @w~~d## 	7== 	6MMM%v}%DDW^^D!! 	6 ")%DD  5t  5  5  5 6 6 6  	/YDDTDDDDDEEE*.G'	@KKKHT4<$,6EFFFE$KKKK 	@ 	@ 	@Y ? ?T ? ?D ? ?9<? ? @ @ @ @ @ @ @ @	@-@ @s   9C??
D.	D))D.r   )T)6r   r   r   r   r   rl   r   r   r   r   testr   test.supportr   r   test.libregrtest.cmdliner   test.libregrtest.save_envr   test.libregrtest.utilsr   r	   r
   r   r$   r(   r?   rB   rE   rH   rM   rP   rS   rV   rY   PROGRESS_MIN_TIMESTDTESTSrv   NOTTESTSr   boolrj   rq   r   r   r   r   r   r   r   r   r   intr   r"   r   r   <module>r	     s           				     				 				 



             " " " " " " ) ) ) ) ) ) . . . . . . < < < < < < O O O O O O O O O O' ' ' ' ' ' ' '% % % % %Z % % %
% % % % %Z % % %D: : : : : : : :
3 3 3 3 3 3 3 3
6 6 6 6 6f 6 6 6
& & & & &j & & &
8 8 8 8 8W 8 8 8
* * * * ** * * *
& & & & & & & &
+ + + + +
 + + +
O O O O Of O O O     355 &j &i &D & & & &K K K K X 
$ 
$ 
$ 
$#y #S #S # # # #D& D&s D&z D& D& D& D&N!	 !c !j ! ! ! !*     O Os O O O O4	 4c 4d 4 4 4 4p <@6 66!64866 6 6 6r@c @C @D @ @ @ @ @ @r   