Ë
    òT•jœ)  ã            	       óN  — 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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dlmZmZmZmZmZ dZ d„ Z!d„ Z"d„ Z#dededdfd„Z$g Z%dededdfd„Z&	 ddedede'ddfd„Z(dededdfd„Z)dededefd„Z*y)é    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                 ó  — t        j                  «       }|j                  | «      }|j                  D ]  }t	        |t
        j                  ¬«       Œ |j                  rt        d«      ‚t        |t        «       t        |«      S )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.12/test/libregrtest/single.pyÚrun_unittestr$      si   € Ü× Ñ Ó"€FØ×&Ñ& xÓ0€EØ—‘ò &ˆÜˆeœ#Ÿ*™*Ö%ð&à‡}‚}ÜÐ4Ó5Ð5Ü�%œÔ$Ü�eÓÐó    c                 óÜ   — g }| j                   D ]T  }t        |t        j                  «      rt	        ||«       |j                  |«       Œ; ||«      sŒD|j                  |«       ŒV || _         y)z>Recursively filter test cases in a suite based on a predicate.N)Ú_testsÚ
isinstancer   Ú	TestSuiter   Úappend)ÚsuiteÚpredÚnewtestsÚtests       r#   r   r   '   s\   € à€HØ—‘ò &ˆÜ�dœH×.Ñ.Ô/Ü˜$ Ô%Ø�O‰O˜DÕ!á�D�zØ—‘ Õ%ð&ð €E…Lr%   c                 óÂ  — t        t        j                  t        j                  t        j
                  du¬«      }|j                  | «      }t        j
                  �-t        j
                  j                  |j                  «       «       |j                  s(|j                  s|j                  st        j                  ‚|j                  «       �st        j                  |«      }t!        |j                  «      dk(  r|j"                  s|j                  d   d   }nNt!        |j"                  «      dk(  r|j                  s|j"                  d   d   }nd}t        j                  s|dz  }|j                  D ��cg c]  \  }}t%        |«      |f‘Œ }}}|j"                  D ��cg c]  \  }}t%        |«      |f‘Œ }}}t        j&                  ||||¬«      ‚|S c c}}w c c}}w )z2Run tests from a unittest.TestSuite-derived class.N)Ú	verbosityÚcapture_outputr   r   zmultiple errors occurredz!; run in verbose mode for details)Ústats)r   r   Ústdoutr   ÚverboseÚjunit_xml_listÚrunr*   Úget_xml_elementÚtestsRunÚskippedr   ÚTestDidNotRunÚwasSuccessfulr	   Úfrom_unittestÚlenÚfailuresÚstrÚTestFailedWithDetails)	r+   ÚrunnerÚresultr2   ÚerrÚtcÚexc_strr   r>   s	            r#   r   r   3   ss  € äœSŸZ™ZÜ'.§¡Ü-4×-CÑ-CÈ4Ð-OôR€Fð �Z‰Z˜Ó€Fä×ÑÐ)Ü×Ñ×%Ñ% f×&<Ñ&<Ó&>Ô?à�?Š? 6§>¢>¸&¿-º-Ü×#Ñ#Ð#Ø×ÑÕ!Ü×'Ñ'¨Ó/ˆÜˆv�}‰}Ó Ò"¨6¯?ª?Ø—-‘- Ñ" 1Ñ%‰CÜ�—‘Ó! QÒ&¨v¯}ª}Ø—/‘/ !Ñ$ QÑ'‰Cà,ˆCÜ—?’? CÐ+NÑ$N CØ8>¿¹×F©¨¨W”3�r“7˜GÒ$ÐFˆÑFØ:@¿/¹/×J©;¨2¨w”S˜“W˜gÒ&ÐJˆÑJÜ×+Ñ+¨C°¸ÈÔOÐOØ€Mùó GùÛJs   Å7GÆ GrB   ÚruntestsÚreturnc                 óX  — |j                   r3ddlm}  || j                  ||j                   |j                  «      \  }}n	 |«       }d}|rt
        j                  | _        |xt        d˜ x�\    |}|| _        y  xt        j                  d˜ x� \    t        j                  |«      }|| _        y  €$t        | j                  › d|› �«       d }|| _        y 	 dd l}t        ||j                  «      rt        j                   |«      }|| _        y t        dt#        |«      › �«       d }|| _        y )Nr   )Úruntest_refleakF© z test runner returned None: r   zUnknown test result type: )Úhunt_refleakÚrefleakrI   Ú	test_nameÚquietr   ÚREFLEAKÚstater	   r   r   r<   r   Údoctestr(   ÚTestResultsÚfrom_doctestÚtyper2   )rB   Ú	test_funcrF   rI   rL   Útest_resultr2   rQ   s           r#   Úregrtest_runnerrW   O   s#  € ð ×ÒÝ,Ù.¨v×/?Ñ/?ÀØ/7×/DÑ/DØ/7¯~©~ó ?Ñˆ‘ñ  “kˆØˆáÜ—}‘}ˆŒð ØŒYŽ[ØˆEð  €F…Lð# à"ŒX× Ñ Ö"Ü×+Ñ+¨KÓ8ˆEð €F…Lð #àÜ˜V×-Ñ-Ð.Ð.JÈ9È+ÐVÔWØˆEð €F…Lð ó Ü˜+ w×':Ñ':Ô;Ü!×.Ñ.¨{Ó;�ð
 €F…Lô Ð :¼4ÀÓ;LÐ:MÐNÔOØ�à€F…Lr%   c                 ó²  ‡— | j                   }t        ||j                  «      }t        j                  |«      Št        ‰d«      rt        d|› d�«      ‚ˆfd„}	 t        | ||«       t        j                  «        t        ||j                  «       t        j                  rtdt        _        t        |› dt!        t        j                  «      › d�«       t"        j%                  t        j                  «       t        j                  j'                  «        t        j(                  «        y # t        j                  «        t        ||j                  «       w xY w)NÚ	test_mainzModule z= defines test_main() which is no longer supported by regrtestc                  ó   •— t        ‰ «      S )N)r$   )r   s   €r#   rU   z!_load_run_test.<locals>.test_funcƒ   s   ø€ Ü˜HÓ%Ð%r%   Tz	 created z uncollectable object(s))rM   r   Útest_dirÚ	importlibÚimport_moduleÚhasattrr   rW   r   Ú
gc_collectr   r4   ÚgcÚgarbageÚenvironment_alteredr   r=   Ú
GC_GARBAGEÚextendÚclearÚreap_children)rB   rF   rM   Úmodule_namerU   r   s        @r#   Ú_load_run_testrh   y   s  ø€ à× Ñ €IÜ! )¨X×->Ñ->Ó?€KÜ×&Ñ& {Ó3€Häˆx˜Ô%ä˜' ) ð -=ð >ó ?ð 	?ô&ð	3Ü˜ 	¨8Ô4ô 	×ÑÔä�i ×!1Ñ!1Ô2ä	‡z‚zØ&*ŒÔ#Ü˜˜ 9¬S´·±«_Ð,=ð >0ð 1ô 	2ô
 	×Ñœ"Ÿ*™*Ô%Ü
�
‰
×ÑÔä×ÑÕøô 	×ÑÔä�i ×!1Ñ!1Õ2ús   ÁD* Ä*,EÚdisplay_failurec                 óø  — dt         _        |j                  }|rd}|j                  }| j                  }	 t        «        t        j                  «        t        ||j                  ||¬«      5  t        | |«       d d d «       t         j                  r| jC                  «        | j                  €t        jD                  | _        y y # 1 sw Y   ŒLxY w# t         j                  $ r5}|s|st        |› d|› �d¬«       t        j                  | _        Y d }~y d }~wt        j                   $ r5}|s|st        |› d|› �d¬«       t        j"                  | _        Y d }~y d }~wt         j$                  $ r}}d|› d�}|r|› d|› �}t        |t&        j(                  d¬	«       t        j*                  | _        |j,                  | _        |j.                  | _        |j0                  | _        Y d }~y d }~wt         j2                  $ r[}d|› d�}|r|› d|› �}t        |t&        j(                  d¬	«       t        j*                  | _        |j0                  | _        Y d }~y d }~wt         j4                  $ r t        j6                  | _        Y y t8        $ r" t        «        t        j:                  | _        Y y  |s6t=        j>                  «       }t        d|› d
|› �t&        j(                  d¬	«       t        j@                  | _        Y y xY w)NF)Úpgoz skipped -- T)Úflushútest z failedz -- ©r   rl   ú crashed -- )#r   rb   rk   rN   rM   r   r_   r   r4   rh   ÚResourceDeniedr   r   ÚRESOURCE_DENIEDrP   r   ÚSkipTestÚSKIPPEDr@   r   r   ÚFAILEDr   r>   r2   Ú
TestFailedr:   ÚDID_NOT_RUNÚKeyboardInterruptÚINTERRUPTEDÚ	tracebackÚ
format_excÚUNCAUGHT_EXCÚset_env_changedÚPASSED)rB   rF   ri   rk   rN   rM   ÚexcÚmsgs           r#   Ú_runtest_env_changed_excr€   ž   sm  € ð #(„GÔà
�,‰,€CÙ
ØˆØ�N‰N€Eà× Ñ €Ið0ÜŒÜ×ÑÔä# IØ$,×$4Ñ$4°eÀôFñ 	-ä˜6 8Ô,÷	-ô\ ×"Ò"Ø×ÑÔ à‡|�|ÐÜ—|‘|ˆ�ð ÷c	-ð 	-ûô ×!Ñ!ò Ù™SÜ�Y�K˜|¨C¨5Ð1¸Õ>Ü×,Ñ,ˆŒÜûÜ×Ñò Ù™SÜ�Y�K˜|¨C¨5Ð1¸Õ>Ü—}‘}ˆŒÜûÜ×(Ñ(ò 	Ø�i�[ Ð(ˆÙØ�E˜˜c˜UÐ#ˆCÜˆcœŸ
™
¨$Õ/Ü—|‘|ˆŒØŸ
™
ˆŒØŸ,™,ˆŒØ—y‘yˆŒÜûÜ×Ñò Ø�i�[ Ð(ˆÙØ�E˜˜c˜UÐ#ˆCÜˆcœŸ
™
¨$Õ/Ü—|‘|ˆŒØ—y‘yˆŒÜûÜ× Ñ ò Ü×(Ñ(ˆŒÙÜò ÜŒÜ×(Ñ(ˆŒÙðÙÜ×&Ñ&Ó(ˆCÜ�E˜)˜ L°°Ð6Ü—z‘z¨õ/ä×)Ñ)ˆŒÙúsb   µ7C Á,CÁ9C ÃCÃ	C ÃK9Ã#+DÄK9Ä)+EÅK9Å/A3G'Ç'K9Ç=AIÉ+K9Ê 'K9Ê)AK9c                 ó˜  — |j                   }|j                  }|j                  }|�*t        j                  rd}t        j                  |d¬«       nd}	 t        |«       |�rdt        _         t        j                  «       }t        j                  }t        j                  }t        j                  }	|	j                  }
d }	 |t        _        |t        _        ||	_        t!        | |d¬«       | j"                  t$        j&                  k7  r|j)                  «       }|t        _        |t        _        |
|	_        |�Xt        j                  j+                  |«       t        j                  j-                  «        n|t        _         t!        | || ¬«       t        j.                  }|r<dd lmc m} |D �cg c]"  }|j7                  |«      j9                  d«      ‘Œ$ c}| _        |rt        j<                  «        d t        _        y # |t        _        |t        _        |
|	_        w xY wc c}w # |rt        j<                  «        d t        _        w xY w)NT)ÚexitF)ri   r   zus-ascii)r4   Úoutput_on_failureÚtimeoutr   Úcan_start_threadÚfaulthandlerÚdump_traceback_laterr   r   ÚioÚStringIOr   r3   r   r   Úorig_stderrr€   rP   r   r}   ÚgetvalueÚwriterl   r5   Úxml.etree.ElementTreeÚetreeÚElementTreeÚtostringÚdecodeÚxml_dataÚcancel_dump_traceback_later)rB   rF   r4   rƒ   r„   Úuse_timeoutÚstreamÚorig_stdoutrŠ   r   Úorig_print_warnings_stderrÚoutputÚxml_listÚETÚxs                  r#   Ú_runtestrœ   å   sÓ  € ð ×Ñ€GØ ×2Ñ2ÐØ×Ñ€GàÐÔ/×@Ò@ØˆÜ×)Ñ)¨'¸Ö=àˆð/&Ü�HÔâØ"ŒGŒOä—[‘[“]ˆFÜŸ*™*ˆKÜŸ*™*ˆKÜ#×1Ñ1ˆMØ)6×)BÑ)BÐ&àˆFðGØ#””
Ø#””
ð -3�Ô)ä(¨°È5ÕQà—<‘<¤5§<¡<Ò/Ø#Ÿ_™_Ó.�Fà(””
Ø(””
Ø,F�Ô)àÐ!Ü—
‘
× Ñ  Ô(Ü—
‘
× Ñ Õ"ð &ŒGŒOÜ$ V¨XØ9@°[õBô ×)Ñ)ˆÙß.Ð.à(0ö2Ø#$ð  "Ÿ{™{¨1›~×4Ñ4°ZÕ@ò 2ˆFŒOñ Ü×4Ñ4Ô6Ø!%ŒÕøð+ )””
Ø(””
Ø,F�Õ)üò2øñ Ü×4Ñ4Ô6Ø!%ŒÕús3   ÁA+H& Ã AG? ÄBH& Æ.'H!ÇH& Ç?HÈH& È&#I	rM   c                 óÎ  — t        j                  «       }t        | «      }|j                  }	 t	        ||«       t        j                  j                  «        t        j                  j                  «        t        j                  «       |z
  |_        |S #  |s6t        j                  «       }t        d| › d|› �t        j                  d¬«       t        j                  |_        Y Œ«xY w)z¹Run 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.
    rm   ro   Trn   )ÚtimeÚperf_counterr   rk   rœ   ry   rz   r   r   r   r   r{   rP   r3   rl   Úduration)rM   rF   Ú
start_timerB   rk   r   s         r#   Úrun_single_testr¢   $  sµ   € ô ×"Ñ"Ó$€JÜ˜	Ó"€FØ
�,‰,€Cð*Ü�˜Ô"ô ‡J�J×ÑÔÜ‡J�J×ÑÔä×'Ñ'Ó)¨JÑ6€F„OØ€Møð*ÙÜ×&Ñ&Ó(ˆCÜ�E˜)˜ L°°Ð6Ü—z‘z¨õ/ä×)Ñ)ˆŽús   ­B ÂAC$)T)+r†   r`   r\   rˆ   r   rž   ry   r   r.   r   Útest.supportr   Úfilterr   rB   r   r   r	   rF   r
   Úsave_envr   Úsetupr   Ú
testresultr   Úutilsr   r   r   r   r   ÚPROGRESS_MIN_TIMEr$   r   r   rW   rc   rh   Úboolr€   rœ   r¢   rJ   r%   r#   ú<module>r«      sû   ðÛ Û 	Û Û 	Û 
Û Û Û å Ý )å ß 0Ñ 0Ý Ý ,Ý Ý '÷Aõ Að Ð òò
òð8#˜Jð #¸Xð #È$ó #ðN €
ð"˜:ð "°ð "¸dó "ðL 6:ñD$ Zð D$¸8ð D$Ø.2ðD$Ø>BóD$ðN<&�Zð <&¨8ð <&¸ó <&ð~˜xð °8ð À
ô r%   