
    z%iv                     (   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
Z
d dlmZ d dlmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZmZmZmZmZ d dl m!Z! d dl"m#Z# d d	l"m$Z$ d d
l"m%Z% dZ&dZ'dZ(dZ)dZ*dZ+ G d d      Z,ddZ-y)    N)_parse_args)	findtestssplit_test_packagesruntestabs_module_namePROGRESS_MIN_TIMEStateMatchTestsDictRunTests)setup_tests)setup_pgo_tests)strip_py_suffixcountformat_duration	printlistget_build_info)support)	TestStats)	os_helper)threading_helperg      ^@               c                       e Zd Z	 d Zd Zd(dZd)dZd Zd Zd Z	d Z
d	 Zd
 ZdefdZd Zd Zd Zd Zd Zd Zd Zd Zd ZdeddfdZd Zd Zd Zd Zd Zd Zd Z d  Z!d! Z"d" Z#d*d#Z$d$ Z%d% Z&d& Z'd' Z(y)+Regrtestc                    d | _         g | _        g | _        g | _        g | _        g | _        g | _        g | _        g | _        g | _	        g | _
        g | _        g | _        d | _        d| _        t               | _        g | _        d | _        t'        j(                         | _        d| _        d| _        d | _        d | _        d | _        d | _        d | _        y )NF    )nstestsselectedall_runtestsgoodbad	rerun_badskippedresource_deniedenvironment_changedrun_no_testsrerun
need_rerunfirst_stateinterruptedr   total_stats
test_timestracertimeperf_counter
start_timetest_count_texttest_count_widthnext_single_testnext_single_filenametestsuite_xmlwin_load_trackertmp_dirselfs    I/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/libregrtest/main.py__init__zRegrtest.__init__=   s     
,.  "	 $&"$*,.0 ') "
,.'+ $;   ++-! ! !%$(! " !%    c                    t        | j                        t        | j                        z  t        | j                        z  t        | j                        z  t        | j
                        z  t        | j                        z  S N)setr%   r&   r(   r)   r*   r+   r=   s    r?   get_executedzRegrtest.get_executedk   sg    DIITXX.T\\1BBd**+,.1$2J2J.KLd''() 	*rA   c                 8   | j                   j                  }|j                  }|j                  xt        j
                  k(  r | j                  j                  |       n<xt        j                  k(  r | j                  j                  |       nxt        j                  k(  r | j                  j                  |       nxt        j                  k(  r | j                  j                  |       nxt        j                  k(  r	 d| _        nt        j                   k(  r| j"                  j                  |       na	 |j%                  |      r7| j&                  j                  |       | j(                  j                  |       nt+        d|j                        |j-                         r)|s'| j.                  j                  |j0                  |f       |j2                  %| j4                  j7                  |j2                         |r| j8                  j                  |       |j:                  }|r<dd lmc m } |D ]-  }	 | jB                  j                  |jE                  |             / y y # |jF                  $ r tI        |tJ        jL                          w xY w)NTzinvalid test state: r   file)'r!   fail_env_changed	test_namestater	   PASSEDr%   appendENV_CHANGEDr*   SKIPPEDr(   RESOURCE_DENIEDr)   INTERRUPTEDr/   DID_NOT_RUNr+   	is_failedr&   r-   
ValueErrorhas_meaningful_durationr1   durationstatsr0   
accumulater,   xml_dataxml.etree.ElementTreeetreeElementTreer:   
fromstring
ParseErrorprintsys
__stderr__)r>   resultr,   rI   rJ   rY   ETes           r?   accumulate_resultzRegrtest.accumulate_resultp   s   7733$$	ll		  +"""((//	:##I.&&&$$++I6"""#' ""!!((3##$45HHOOI.OO**62$';FLL;K%LMM))+EOO""FOOY#?@<<#''5JJi(??.. &&--bmmA.>? 
 }} (8s   ?*I--,Jc                    | }| j                         }|	d|dd| }t        j                         | j                  z
  }t	        t        |      d      \  }}t	        |d      \  }}d|||fz  }| d| }|r|d d }t        |d       y )	Nz
load avg: z.2f <   z%d:%02d:%02dT)flush)
getloadavgr3   r4   r5   divmodintr_   )r>   lineemptyload_avg	test_timeminssecshourss           r?   logzRegrtest.log   s     ??$~Qtf5D %%'$//9	C	NB/
dT2&t"eT4%88	AdV$9Dd$rA   c                 8   | j                   j                  }| j                   j                  }|ry || j                   d| j                   }t        | j                        t        | j                        z   }|r	|s| d| }| j                  d| d|        y )Nr   /[z] )	r!   quietpgor7   r6   lenr&   r*   ru   )r>   
test_indextextry   rz   rn   failss          r?   display_progresszRegrtest.display_progress   s    ggkk d334@45d6J6J5KLDHHD$<$< ==V1UG$D1TF"TF#$rA   c                    t        t        j                  dd  fi |}|j                  rg xt        _        | _        t        |j                         |j                  rM|j                  \  }}}|dk  s|dk  r3d}t        |t        j                  d       t        j                  d       |j                  r.t        j                  j!                  |j                        |_        || _        y )Nr    zwInvalid values for the --huntrleaks/-R parameters. The number of warmups and repetitions must be at least 1 each (1:1).TrH   rj   r   )r   r`   argvxmlpathr   junit_xml_listr:   r   args
huntrleaksr_   stderrexittempdirospath
expanduserr!   )r>   kwargsr!   warmuprepetitions_msgs          r?   
parse_argszRegrtest.parse_args   s    !"00:::<<G"T%7 ==%']]"FKz[1_% c

$7::++BJJ7BJrA   c                 X   | j                   }|j                  }|j                  }|j                  }|j                  }|j
                  }|j                  }|j                  }	|| _        |rut        j                  j                  | j                  d      | _        	 t        | j                  d      5 }
|
j                         j!                         }|g| _        d d d        |rg | _        t%        j&                  d      }t        t        j                  j                  t(        j*                  |            5 }
|
D ]d  }|j-                  dd      d   }|j!                         }|j/                  |      }|<| j                  j1                  |j3                                f 	 d d d        t5        | j                         |rt7        |       t9               }|r)|j:                  D ]  }|j=                  |        g |_        t?        ||      }|sN| j                  xs |j:                  | _         | j@                  rtC        | j@                        | _         n|| _         n| j                  | _         |r@| j@                  d d | _         	 |jE                  | j@                  d         }||dz      | _#        |r)	 | j@                  d | j@                  jE                  |      = |	re|jR                  tU        jV                  d	      |_)        tU        jX                  |jR                         tU        jZ                  | j@                         y y # 1 sw Y   lxY w# t"        $ r Y {w xY w# 1 sw Y   xY w# tH        $ r Y w xY w# tJ        $ r& tM        d|        tO        jP                  d       Y w xY w)
N
pynexttestrz\btest_[a-zA-Z0-9_]+\b#r    r   )testdirexcludezCannot find starting test: i ).r!   singlefromfilerz   r   r   start	randomizer"   r   r   joinr<   r9   openreadstripOSErrorrecompiler   SAVEDCWDsplitsearchrM   groupr   r   rD   r   addr   r#   r   indexr8   
IndexErrorrT   r_   r`   r   random_seedrandom	randrangeseedshuffle)r>   r"   r!   r   r   rz   r   test_dirstarting_testr   fp	next_testregexrn   matchexclude_testsargalltestsposs                      r?   
find_testszRegrtest.find_tests   s   WW;;ff**::LL	
(*T\\<(PD%$33S9 -R "	 1I"+DJ- DJ JJ89Ebggll9#5#5x@A 9R 9D::c1-a0D::<D!LL.E(

))%++-899 	

#Bww '!!#&'BGX}E JJ1"''DM}} 3DMM B ( JJDM MM"1-DMnnT]]1%56(0q(9%
 MM"E4==#6#6}#E"EF
 ~~%!'!1!1(!;KK'NN4==)	 u- -  9 9H    3M?CDs`   M 0'MM 4>M3+M+M+ 1(M: MM 	MMM(+	M76M7:,N)(N)c                 <    | j                   D ]  }t        |        y rC   )r#   r_   )r>   names     r?   
list_testszRegrtest.list_tests   s    MM 	D$K	rA   c                 H   |D ]  }t        |t        j                  j                        r(t        |t        j                        r| j                  |       Tt        |t        j                        sot        j                  |      st        |j                                 y rC   )
isinstanceunittestloader_FailedTest	TestSuite_list_casesTestCaser   
match_testr_   id)r>   suitetests      r?   r   zRegrtest._list_cases$  sr     	%D$ ; ;<$ 2 23  &D("3"34%%d+$'')$	%rA   c                 h   | j                   }|j                  }dt        _        t        j                  |j
                  |j                         g }| j                  D ]?  }t        ||      }	 t        j                  j                  |      }| j                  |       A |rit        j                   j#                          t        j$                  }t'        |       t'        t)        t+        |      d      d|       t-        ||       y y # t        j                  $ r |j                  |       Y w xY w)NFrG   r   skipped:)r!   r   r   verboseset_match_testsmatch_testsignore_testsr#   r   r   defaultTestLoaderloadTestsFromNamer   SkipTestrM   r`   stdoutrj   r   r_   r   r{   r   )r>   r!   r   r(   rJ   module_namer   r   s           r?   
list_caseszRegrtest.list_cases.  s    WW::@ 	*I))X>K* 22DD[Q  '		* JJZZFv%Gf-zGgF+  $$ *y)*s   ,0D

$D10D1returnc                 \    i }|D ]$  }|j                         }|s|||j                  <   & |S rC   )get_rerun_match_testsrJ   )r>   
rerun_listrerun_match_testsrb   r   s        r?   get_rerun_matchzRegrtest.get_rerun_matchD  sC      	BF 668K6A!&"2"23		B
 ! rA   c                 \   | j                   }d|_        d|_        d|_        d|_        |j
                  d|_        |D cg c]  }|j                   }}| j                  |      }| j                  |       | j                  j                  | j                         | j                  j                          | j                  j                          | j                  dt        |       d       t!        ||d      }| j"                  j%                  |       | j'                  |       y c c}w )NTFr    zRe-running z- failed tests in verbose mode in subprocesses)r   r,   )r!   r   failfastverbose3foreveruse_mprJ   r   	set_testsr'   extendr&   clearr-   ru   r{   r   r$   rM   _run_tests_mp)r>   r-   r!   rb   r"   r   runtestss          r?   _rerun_failed_testszRegrtest._rerun_failed_testsM  s    WW

99BI 1;;f!!;;**:6u 	dhh' 	;s5zl*WXYE{$G  *8$ <s    D)c                 h   | j                   j                  r| j                  d       y | j                         | _        t                | j                  |       | j                  r>t        t        t        | j                        d      d       t        | j                         | j                          y )NzJRe-running failed tests is not supported with --python host runner option.r   zfailed again:)r!   pythonru   get_tests_stater.   r_   r   r&   r   r{   r   display_resultr>   r-   s     r?   rerun_failed_testszRegrtest.rerun_failed_testsg  s    77>>HH& //1  ,88%DHHv.@dhhrA   c           	         | j                   j                  }| j                   j                  }| j                   j                  }|ry t	                t	        d| j                         z         | j                  rt	        d       t        | j                        | j                         z
  }|r4t	                t	        t        t        |      d      d       t        |       | j                  r~|s|t	                | j                  s=| j                  s1| j                  s%t        | j                        dkD  rt	        dd       t	        t        t        | j                        d      d	       |rb| j                   j#                  d
       t	                t	        d       | j                   d d D ]  \  }}t	        d|dt%        |             ! | j                  rHt	                t	        t        t        | j                        d      d       t        | j                         | j&                  rVt	                t	        dj)                  t        t        | j&                        d                   t        | j&                         | j                  rJ|sHt	                t	        t        t        | j                        d      d       t        | j                         | j*                  rJ|sHt	                t	        t        t        | j*                        d      d       t        | j*                         | j,                  rJt	                t	        dt        t        | j,                        d      z         t        | j,                         | j.                  rIt	                t	        t        t        | j.                        d      d       t        | j.                         y y )Nz== Tests result: %s ==z(Test suite interrupted by signal SIGINT.r   zomitted:r    Allrg   )endzOK.T)reversez10 slowest tests:
   z- z: zfailed:z%{} altered the execution environment:r   zskipped (resource denied):z%s:zre-run testzrun no tests:)r!   rz   ry   
print_slowr_   r   r/   rD   r#   rE   r   r{   r   r%   r&   r(   r1   sortr   r*   formatr)   r,   r+   )r>   rz   ry   r   omittedrq   r   s          r?   r   zRegrtest.display_result{  s   ggkkWW''
 &)=)=)??@<=dmm$t'8'8'::G%Gf-z:g99UGHH((		NQ&e%%DII/7OO   .G%&#'??3B#7 G	4D/)*DEFG 88G%DHHv.	:dhh##G9@@3t778&AC Dd../<<G%DLL)62J?dll#G%D0016:<XYd**+::G%%DJJ??@djj!G%D--.7Id''( rA   c                    |}|r|d|}| j                  ||       | j                  rAd}t        t                     }| j                  j	                  |t               |       |d   }n't        | j                  |      }| j                  |       t        j                  j                         D ].  }	|	|vs|	j                  d      st        j                  |	       0 |S )Nz -- zDresult = runtest(self.ns, test_name); self.accumulate_result(result))globalslocalsrb   ztest.)r   r2   dictr   runctxr   r   r!   re   r`   moduleskeys
startswithr   unload)
r>   r|   rJ   previous_testsave_modulesr}   cmdr!   rb   modules
             r?   run_testzRegrtest.run_test  s    !%}5Dj$/;;4CfhBKKsGIbA\FTWWi0F""6* kk&&( 	'F\)f.?.?.Hv&	' rA   c                    | j                   }|j                  }|j                  }|j                  }|j                  }|rdd l}|j                  dd      | _        t        j                  j                         }d}	|r|	dt        |      z  z  }	| j                  |	       d }
|j                         }t        |d      D ]  \  }}t        j                         }| j!                  |||
|      }|j#                  ||      r n^t%        |      }
t        j                         |z
  }|t&        k\  r|
dt        |      }
~|j(                  t*        j,                  k(  sd }
 |
rt/        |
       y y )	Nr   FT)tracer   zRun tests sequentiallyz (timeout: %s)r    z in )r!   r  r   rI   timeoutTracer2   r`   r   r   r   ru   
iter_tests	enumerater3   r4   r  	must_stopstrr   rK   r	   rL   r_   )r>   r   r!   coverage	fail_fastrI   r  r  r   r   r   
tests_iterr|   rJ   r5   rb   rq   s                    r?   run_tests_sequentiallyzRegrtest.run_tests_sequentially  sK   WW88KK	..**++E+>DK{{'')&#og&>>>C((*
%.z1%= 	%!J	**,J]]:y#0,@F 	+;<KM))+j8I--.;_Y=W X- $	%" -  rA   c                 .   t        dt        j                         gt        j                  j                           t        dt        j                  d      dt        j                  z         t        ddj                  t                            t        dt        j                                t        j                         }|rt        d|       t        d	t        j                         d
t        j                                | j                          y )Nz==T)aliasedz	%s-endianz== Python build:rg   z== cwd:z== CPU count:z== encodings: locale=z, FS=)r_   platformpython_implementationr`   versionr   	byteorderr   r   r   getcwd	cpu_countlocalegetencodinggetfilesystemencodingdisplay_sanitizers)r>   r  s     r?   display_headerzRegrtest.display_header   s    dH224Ks{{7H7H7JKdH%%d3!CMM1	3 #((>+;"<=i%LLN	/9-##%s'@'@'BD 	E!rA   c                    t        j                  d      }t        j                  d      }t        j                  d      }g }|r|j                  d       |r|j                  d       |r|j                  d       |sy t        dd	j	                  |              |d
f|df|dffD ];  \  }}t
        j                  j                  |      }|s(|+t        d| d|       = y )NT)address)memory)ubr  r  zundefined behaviorz== sanitizers: , ASAN_OPTIONSMSAN_OPTIONSUBSAN_OPTIONSz== =)r   check_sanitizerrM   r_   r   r   environget)r>   asanmsanubsan
sanitizers	sanitizerenv_varoptionss           r?   r  zRegrtest.display_sanitizers  s     &&t4&&d3''40
i(h'23		* 5678>">"O$#
 	3Iw
 ZZ^^G,GW0G9Ag[12	3rA   c                     t        | j                  | j                  | j                  | j                  | j
                  f       S rC   )anyr%   r&   r(   r/   r*   r=   s    r?   no_tests_runzRegrtest.no_tests_run(  s<    		488T\\4;K;K002 3 3 	3rA   c                    | j                   j                  }g }| j                  r|j                  d       nA|r| j                  r|j                  d       n!| j                         r|j                  d       | j                  r|j                  d       |s|j                  d       dj                  |      }| j                  r| j                  d|}|S )NFAILUREzENV CHANGEDzNO TESTS RANrQ   SUCCESSr!  z then )	r!   rI   r&   rM   r*   r2  r/   r   r.   )r>   rI   rb   s      r?   r   zRegrtest.get_tests_state,  s    773388MM)$$":":MM-( MM.)MM-(MM)$6"%)%5%5v>FrA   r   Nc                 z   ddl m} t        j                  dk(  rddlm} 	  |       | _        	  || |       | j                  "| j                  j                          d | _        y y # t        $ r}t        d|        Y d }~Ud }~ww xY w# | j                  "| j                  j                          d | _        w w xY w)Nr   )run_tests_multiprocesswin32)WindowsLoadTrackerz%Failed to create WindowsLoadTracker: )
test.libregrtest.runtest_mpr7  r`   r  test.libregrtest.win_utilsr9  r;   PermissionErrorr_   close)r>   r   r7  r9  errors        r?   r   zRegrtest._run_tests_mpB  s    F <<7"EG(:(<%	-"42$$0%%++-(,% 1 # G =eWEFFG $$0%%++-(,% 1s"   A& 	B
 &	B/BB
0B:c                     || _         | j                  j                  rd| _        d| _        y dj                  t        | j                               | _        t        | j                        dz
  | _        y )Nr   r   z/{}r    )r"   r!   r   r6   r7   r   r{   )r>   r"   s     r?   r   zRegrtest.set_testsW  sU    
77??#%D $%D!#(<<DJJ#@D $'(<(<$=$AD!rA   c                 N   | j                   j                  sd| j                   j                  s^| j                   j                  sH| j                   j                  s2| j
                  s&| j                   j                  s| j                          | j                   j                  r=| j                   j                  \  }}}|dk  rd}t        |t        j                  d       | j                   j                  r t        d| j                   j                         | j                  }| j                  |       t!        || j                   j"                        }| j$                  j'                  |       | j                   j(                  r| j+                  |       y | j-                  |       y )Nr   zhWARNING: Running tests with --huntrleaks/-R and less than 3 warmup repetitions can give false positives!Tr   zUsing random seed)r   )r!   headerrz   ry   r   r"   r   r  r   r_   r`   r   r   r   r#   r   r   r   r$   rM   r   r   r  )r>   r   r   r   r   r"   r   s          r?   	run_testszRegrtest.run_tests`  s   GGNN77;;$''--477>>jjDGGLL!77%)WW%7%7"FKzIc

$777%tww':':;uE477??;  *77>>x(''1rA   c                 B   | j                   ri| j                  r>t        | j                   d      5 }|j                  | j                  dz          d d d        nt	        j
                  | j                          | j                  rB| j                  j                         }|j                  dd| j                  j                         | j                  j                  r*t	        j                  dt	        j                         z         | j                          y # 1 sw Y   xY w)Nw
T)show_missingsummarycoverdirzleaks %d)r9   r8   r   writer   unlinkr2   resultswrite_resultsr!   rH  runleakssystemgetpidsave_xml_result)r>   r   r   s      r?   finalizezRegrtest.finalizez  s    $$$$$33S9 ;RHHT22T9:; ; 		$334;;##%AOOt%)WW%5%5  7 77IIj299;./; ;s   DDc                    t        j                         | j                  z
  }| j                  d   }|j                  }t        | j                  j                        xs t        | j                  j                        }t                t        dt        |      z         | j                  }d|j                  d}|r| d}|g}|j                  r|j                  d|j                  d       |j                  r|j                  d|j                  d       t        dd	j!                  |              | j"                  | j$                  | j&                  | j                  | j(                  | j*                  g}t-        t/        t0        |            }	d|	 }|st1        |j2                        }
| d
|
 }|r| d}|g}d| j$                  fd| j(                  fd| j                  fd| j4                  fd| j&                  fd| j*                  ffD ]'  \  }}|s	|j                  | dt1        |              ) t        dd	j!                  |              | j7                         }t        d|        y )Nr   zTotal duration: %szrun=,z (filtered)z	failures=zskipped=zTotal tests: rg   rw   failedenv_changedr(   r)   r,   r+   r%  zTotal test files: zResult: )r3   r4   r5   r$   r   boolr!   r   r   r_   r   r0   	tests_runfailuresrM   r(   r   r%   r&   r,   r*   r+   summapr{   r"   r)   r   )r>   rV   first_runtestsr   filteredtotalr}   rW   	all_testsrunntestreportr   r"   rb   s                  r?   display_summaryzRegrtest.display_summary  sR   $$&8**1- !((++,JTWW5I5I0J 	"_X%>>?   eooa()V;'D>>LL9U^^A$678==LL8EMM!#456chhuo./0 YY$**\\--t/@/@B	 #c9%&cU|,,-EV1UG$DV;'Dtxx D445% 4 45djj!T../
 		6KD% aE
|45		6 	"388F#3"456 %%'!"rA   c                    | j                   j                  s| j                  sy dd lmc m} |j                  d      }dddd}| j                  D ]A  }|j                  |       |D ])  }	 ||xx   t        |j                  |d            z  cc<   + C |j                         D ]   \  }}|j                  |t        |             " t        j                  j!                  t"        j$                  | j                   j                        }t'        |d      5 }|j)                  |      D ]  }	|j+                  |	        	 d d d        y # t        $ r Y w xY w# 1 sw Y   y xY w)Nr   
testsuites)r"   errorsrX  wb)r!   r   r:   rZ   r[   r\   ElementrM   rm   r(  rT   itemsrD   r  r   r   r   r   r   r   tostringlistrI  )
r>   rc   roottotalsr   kvr   fss
             r?   rP  zRegrtest.save_xml_result  s:   wwt'9'9**zz,' q9'' 	EKK 1IUYYq!_!55I	 LLN 	 DAqHHQA	  '',,y11477??C'4  	A__T* 
	 	 " 	 	s   *&E(E	EEEc                     t         j                  rFt        j                  d      }|dk(  rt        j                  d       y t        j                  |       y y )Nr   i     )r   is_emscriptenr   umask)r>   old_masks     r?   	fix_umaskzRegrtest.fix_umask  s>       xx{H5 " !rA   c                    | j                   j                  r| j                   j                  | _        | j                  st        j                         rpt        j
                  d      | _        | j                  t        j
                  d      | _        t        j                  j                  | j                  d      | _        nt        j                         | _        t        j                  j                  | j                        | _        y )Nabs_builddirsrcdirbuild)r!   r   r<   	sysconfigis_python_buildget_config_varr   r   r   tempfile
gettempdirabspathr=   s    r?   set_temp_dirzRegrtest.set_temp_dir  s    77??77??DL|| ((*(77G<<'
 $-#;#;H#EDL!ww||DLL'B'224wwt||4rA   c                 2    | j                   j                  d uS rC   )r!   worker_argsr=   s    r?   	is_workerzRegrtest.is_worker  s    ##4/0rA   c                    t        j                  | j                  d       t        j                  dv rt        j                  dd      }nt        j                         }| j                         rdj                  |      }ndj                  |      }|t        j                  z  }t         j                  j                  | j                  |      }|S )NT)exist_ok>   wasi
emscriptenr   i@B ztest_python_worker_{}ztest_python_{})r   makedirsr<   r`   r  r   randintrO  r  r   r   FS_NONASCIIr   r   )r>   nouncetest_cwds      r?   create_temp_dirzRegrtest.create_temp_dir  s    
DLL40 <<11^^Ay1FYY[F>>.55f=H'..v6HI)))77<<h7rA   c                    dd l }t        j                  j                  |j	                  | j
                        d      }t        d| j
                  z         |j                  |      D ]h  }t        j                  j                  |      r$t        d|z         t        j                  |       Ft        d|z         t        j                  |       j y )Nr   ztest_python_*zCleanup %s directoryzRemove directory: %szRemove file: %s)globr   r   r   escaper<   r_   isdirr   rmtreerJ  )r>   r  r   r   s       r?   cleanupzRegrtest.cleanup  s    ww||DKK5G$t||34IIdO 	'Dww}}T",t34  &'$./  &	'rA   c                 \   | j                  |       | j                          | j                          | j                  j                  r%| j	                          t        j                  d       | j                         }	 t        j                  |d      5  || j                  _
        | j                  ||       d d d        y # 1 sw Y   y xY w# t        $ rT}t        j                  rt        j                   t"        d       t        j                  |j$                         Y d }~y d }~ww xY w)Nr   T)ry   )r   )r   r  ru  r!   r  r`   r   r  r   temp_cwdr   _main
SystemExitr   can_start_threadfaulthandlerdump_traceback_laterEXIT_TIMEOUTcode)r>   r"   r   r  excs        r?   mainzRegrtest.main  s    77??LLNHHQK'')	
 ##HD9 * #+

5&)* * *  	  0011,TJHHSXX	s7   >C $C9C CC C 	D+A
D&&D+c                     | j                   | j                   j                         S t        t        d      rt        j                         d   S y )Nrk   r   )r;   rk   hasattrr   r=   s    r?   rk   zRegrtest.getloadavg?  sA      ,((33552|$==?1%%rA   c                 .   d}| j                   rt        }|S | j                  rt        }|S | j                  j
                  r| j                  rt        }|S | j                         rt        }|S | j                  r| j                  j                  rt        }|S )Nr   )r&   EXITCODE_BAD_TESTr/   EXITCODE_INTERRUPTEDr!   rI   r*   EXITCODE_ENV_CHANGEDr2  EXITCODE_NO_TESTS_RANr,   
fail_rerunEXITCODE_RERUN_FAIL)r>   exitcodes     r?   get_exitcodezRegrtest.get_exitcodeH  s    88(H  +H  WW%%$*B*B+H
 	  ,H  ZZDGG..*HrA   c                     | j                          | j                          | j                  }| j                  j                  r|r| j                  |       | j                          | j                          y rC   )rB  r   r-   r!   r,   r   rb  rQ  r   s     r?   action_run_testszRegrtest.action_run_testsV  sQ    __
77==Z##J/rA   c                    | j                         r#ddlm}  || j                  j                         y | j                  j
                  rt        d       t        | j                         | j                  |       d}| j                  j                  r| j                          nG| j                  j                  r| j                          n | j                          | j                         }t        j                  |       y )Nr   )run_tests_workerzPress any key to continue...)r  r:  r  r!   r  waitinputr   r   r   r   r  r  r`   r   )r>   r"   r   r  r  s        r?   r  zRegrtest._maina  s    >>DTWW00177<<01DGG77OOWWOO!!#((*HrA   )F)r   rC   ))__name__
__module____qualname__r@   rE   re   ru   r   r   r   r   r   r   r
   r   r   r   r   r  r  r  r  r2  r   r   r   r   rB  rQ  rb  rP  ru  r  r  r  r  r  rk   r  r  r   rA   r?   r   r   &   s    ,,\*
'R *%,M*^%,,!^ !%4(B)H2&!P"343,-h -4 -*B24$2#h2#5,1*'B	rA   r   c                 >    	  t               j                  dd| i| y )Nr"   r  )r   r  )r"   r   s     r?   r  r  y  s    HJOO*%*6*rA   rC   ).r  r  r   r  r   r   r`   rz  r}  r3   r   test.libregrtest.cmdliner   test.libregrtest.runtestr   r   r   r   r   r	   r
   r   test.libregrtest.setupr   test.libregrtest.pgor   test.libregrtest.utilsr   r   r   r   r   r   r   test.supportr   r   r   r  r  r  r  r  r  r   r  r  rA   r?   <module>r     s      	   	 
     08 8 8 / 0? ?  " " )      P Pf+rA   