
    F\ho*              	       Z   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKJ	r	  S SK
Jr  SSKJr  SSKJrJrJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJrJrJrJrJr  Sr S r!S r"S r#S\S\SS4S jr$/ r%S\S\SS4S jr& SS\S\S\'SS4S jjr(S\S\SS4S jr)S\S\S\4S jr*g)    N)support)threading_helper   )
match_test)State
TestResult	TestStats)RunTests)saved_test_environment)setup_tests)get_test_runner)TestNameclear_cachesremove_testfnabs_module_nameprint_warningg      >@c                    [         R                  " 5       nUR                  U 5      nUR                   H  n[	        U[
        R                  S9  M     UR                  (       a  [        S5      e[        U[        5        [        U5      $ )N)filezerrors while loading tests)unittest
TestLoaderloadTestsFromModuleerrorsprintsysstderr	Exception_filter_suiter   
_run_suite)test_modloadertestserrors       ./usr/lib/python3.13/test/libregrtest/single.pyrun_unittestr$      sd      "F&&x0Ee#**% }}455%$e    c                     / nU R                    H`  n[        U[        R                  5      (       a  [	        X15        UR                  U5        M@  U" U5      (       d  MO  UR                  U5        Mb     X l         g)z>Recursively filter test cases in a suite based on a predicate.N)_tests
isinstancer   	TestSuiter   append)suiteprednewteststests       r#   r   r   '   sX    HdH..//$%OOD!Dzz%  Lr%   c                 `   [        [        R                  [        R                  [        R
                  SLS9nUR                  U 5      n[        R
                  bX  SSKJs  J	n  UR                  5       nUR                  U5      R                  S5      n[        R
                  R                  U5        UR                  (       d2  UR                  (       d!  UR                   (       d  [        R"                  eUR%                  5       (       Gd  [&        R(                  " U5      n[+        UR                   5      S:X  a$  UR,                  (       d  UR                   S   S   nOY[+        UR,                  5      S:X  a$  UR                   (       d  UR,                  S   S   nOSn[        R                  (       d  US-  nUR                    VV	s/ s H  u  p[/        U5      U	4PM     n
nn	UR,                   VV	s/ s H  u  p[/        U5      U	4PM     nnn	[        R0                  " XzXS9eU$ s  sn	nf s  sn	nf )	z2Run tests from a unittest.TestSuite-derived class.N)	verbositycapture_outputr   asciir   zmultiple errors occurredz!; run in verbose mode for details)stats)r   r   stdoutr   verbosejunit_xml_listrunxml.etree.ElementTreeetreeElementTreeget_xml_elementtostringdecoder*   testsRunskippedr   TestDidNotRunwasSuccessfulr	   from_unittestlenfailuresstrTestFailedWithDetails)r+   runnerresultETxml_elemxml_strr3   errtcexc_strr   rD   s               r#   r   r   3   s   SZZ'.-4-C-C4-ORF ZZF)**))+++h'..w7%%g.??6>>&--###!!''/v}}"6??--"1%C!Q&v}}//!$Q'C,C??C+N$NC8>F3r7G$F:@//J/;2SWg&/J++COOM GJs   H$1H*rH   runtestsreturnc                 B   UR                   (       a2  SSKJn  U" U R                  UUR                   UR                  5      u  pEO	U" 5       nSnU(       a  [
        R                  U l        U=[        S` =b  u     UnO  =[        R                  S` =b  u     [        R                  " U5      nOo  c  [        U R                   SU 35        S nOO SS Kn[        XWR                  5      (       a  [        R                   " U5      nO[        S[#        U5       35        S nX`l        g )Nr   )runtest_refleakF z test runner returned None: r   zUnknown test result type: )hunt_refleakrefleakrR   	test_namequietr   REFLEAKstater	   r   r   rB   r   doctestr(   TestResultsfrom_doctesttyper3   )rH   	test_funcrO   rR   rU   test_resultr3   rZ   s           r#   regrtest_runnerr`   R   s     ,.v/?/?/7/D/D/7~~ ?  k}} Y[E "X  "++K8E #V--..J9+VWE +':':;;!..{; :4;L:MNOLr%   c                   ^ U R                   n[        X!R                  5      n[        R                  " U5      m[        TS5      (       a  [        SU S35      eU4S jn [        XU5        [        R                  " 5         [        X!R                  5        [        R                  (       at  S[        l        [        U S[!        [        R                  5       S35        ["        R%                  [        R                  5        [        R                  R'                  5         [        R(                  " 5         g ! [        R                  " 5         [        X!R                  5        f = f)N	test_mainzModule z= defines test_main() which is no longer supported by regrtestc                     > [        T 5      $ )N)r$   )r   s   r#   r^   !_load_run_test.<locals>.test_func   s    H%%r%   Tz	 created z uncollectable object(s))rV   r   test_dir	importlibimport_modulehasattrr   r`   r   
gc_collectr   r5   gcgarbageenvironment_alteredr   rC   
GC_GARBAGEextendclearreap_children)rH   rO   rV   module_namer^   r   s        @r#   _load_run_testrr   |   s
     I!)->->?K&&{3Hx%%') -= > ? 	?&	384 	i!1!12	zz&*#9S_,= >0 1 	2
 	"**%


 	i!1!12s    D5 5,E!display_failurec                 F   S[         l        UR                  nU(       a  SnUR                  nU R                  n [        5         [         R                  " 5         [        UUR                  XCS9   [        X5        S S S 5        [         R                  (       a  U RC                  5         U R                  c  [        RD                  U l        g g ! , (       d  f       NW= f! [         R                   a<  nU(       d  U(       d  [        U SU 3SS9  [        R                  U l         S nAg S nAf[        R                    a<  nU(       d  U(       d  [        U SU 3SS9  [        R"                  U l         S nAg S nAf[         R$                   a  nSU S3nU(       a  U SU 3n[        U[&        R(                  SS	9  [        R*                  U l        UR,                  U l        UR.                  U l        UR0                  U l         S nAg S nAf[         R2                   a]  nSU S3nU(       a  U SU 3n[        U[&        R(                  SS	9  [        R*                  U l        UR0                  U l         S nAg S nAf[         R4                   a    [        R6                  U l         g [8         a"    [        5         [        R:                  U l         g   U(       d4  [<        R>                  " 5       n[        SU S
U 3[&        R(                  SS	9  [        R@                  U l         g = f)NF)pgoz skipped -- T)flushtest z failedz -- r   rv    crashed -- )#r   rl   ru   rW   rV   r   ri   r   r5   rr   ResourceDeniedr   r   RESOURCE_DENIEDrY   r   SkipTestSKIPPEDrF   r   r   FAILEDr   rD   r3   
TestFailedr@   DID_NOT_RUNKeyboardInterruptINTERRUPTED	traceback
format_excUNCAUGHT_EXCset_env_changedPASSED)rH   rO   rs   ru   rW   rV   excmsgs           r#   _runtest_env_changed_excr      sg    #(G
,,C
NNE  I0#I$,$4$4eF6,F\ "" |||| cF F !! SYK|C51>,, SYK|C51>}}(( 	i[(EcU#Cc

$/||

,,yy i[(EcU#Cc

$/||yy   (( ((&&(CE)L6zz/))sh   4C .C:C 
CC C L 02D''L >2E55L A5HL AI55,L #(L AL c                 N   UR                   nUR                  nUR                  nUb-  [        R                  (       a  Sn[
        R                  " USS9  OSn [        U5        U(       Ga  S[        l         [        R                  " 5       n[        R                  n[        R                  n[        R                  n	U	R                  n
S n U[        l        U[        l        Xil        [!        XSS9  U R"                  [$        R&                  :w  a  UR)                  5       nU[        l        U[        l        Xl        Ub=  [        R                  R+                  U5        [        R                  R-                  5         OU[        l         [!        XU(       + S9  [        R.                  nU(       a  Xl        U(       a  [
        R2                  " 5         S [        l        g ! U[        l        U[        l        Xl        f = f! U(       a  [
        R2                  " 5         S [        l        f = f)NT)exitF)rs   )r5   output_on_failuretimeoutr   can_start_threadfaulthandlerdump_traceback_laterr   r   ioStringIOr   r4   r   r   orig_stderrr   rY   r   r   getvaluewriterv   r6   xml_datacancel_dump_traceback_later)rH   rO   r5   r   r   use_timeoutstreamorig_stdoutr   r   orig_print_warnings_stderroutputxml_lists                r#   _runtestr      s    G 22G/@@))'=-&H"GO[[]F**K**K#11M)6)B)B&FG#
#
 -3)(5Q<<5<</#__.F(
(
,F)!

  (

  " &GO$V9@[B ))&O446!%' )
(
,F) 446!%s'   A1G; 
AG BG; G88G; ;)H$rV   c                 J   [         R                  " 5       n[        U 5      nUR                  n [        R
                  " UR                  5         [        X15        SSS5        [        R                   R#                  5         [        R                  R#                  5         [         R                  " 5       U-
  Ul        U$ ! , (       d  f       Ni= f!   U(       d4  [        R                  " 5       n[        SU  SU 3[        R                  SS9  [        R                  Ul         N= f)zRun a single test.

test_name -- the name of the test

Returns a TestResult.

If runtests.use_junit, xml_data is a list containing each generated
testsuite element.
Nrw   ry   Trx   )timeperf_counterr   ru   r   suppress_immortalizationrT   r   r   r   r   r   r   r   r   rY   r4   rv   duration)rV   rO   
start_timerH   ru   r   s         r#   run_single_testr   %  s     ""$J	"F
,,C
* --h.C.CDV& E JJJJ'')J6FOM ED*&&(CE)L6zz/))s*    C B=C =
CC C AD")T)+r   rj   rf   r   r   r   r   r   r.   r   test.supportr   filterr   rH   r   r   r	   rO   r
   save_envr   setupr   
testresultr   utilsr   r   r   r   r   PROGRESS_MIN_TIMEr$   r   r   r`   rm   rr   boolr   r   r   rS   r%   r#   <module>r      s     	  	 
     )  0 0  ,  'A A  
>#J #X #$ #N 
": " "d "L 6:D$Z D$8 D$.2D$>BD$N:&Z :&8 :& :&zx 8 
 r%   