
    5\hh                    t   d 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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 dd	lmZmZmZ dd
l m!Z! ddl"m#Z# ej$        s ej%        d          ej&        '                    ej&        (                    e)          dd          Z*ej&        +                    ej&        ,                    e*                    Z*dZ-dZ.dZ/dZ0dZ1dZ2 ej3        d          Z4 G d dej5                  Z6 ej7        d           G d d                      Z8 G d dej5                  Z9 G d de9          Z: G d d e9          Z; G d! d"e9          Z< G d# d$ej5                  Z=e>d%k    r ej                     dS dS )&zM
Tests of regrtest.py.

Note: test_regrtest cannot be run twice in parallel.
    N)support)	os_helper)cmdline)main)setup)utils)get_match_testsset_match_tests
match_test)	TestStats)normalize_test_nameztest module requires subprocessz..z5[0-9]+:[0-9]+:[0-9]+ (?:load avg: [0-9]+\.[0-9]{2} )?               z
    from signal import SIGINT, raise_signal
    try:
        raise_signal(SIGINT)
    except ImportError:
        import os
        os.kill(os.getpid(), SIGINT)
    c                   J   e Zd ZdZed             Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d  Z#d! Z$d" Z%d# Z&d$ Z'd% Z(d& Z)d' Z*d( Z+d) Z,d5d+Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4S )6ParseArgsTestCasezC
    Test regrtest's argument parsing, function _parse_args().
    c                 *    t          j        |           S N)r   _parse_args)argss    </opt/python-3.11.14/usr/lib/python3.11/test/test_regrtest.py
parse_argszParseArgsTestCase.parse_args>   s    "4(((    c                 :   t          j                    5 }|                     t                    5  |                     |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     ||                                           d S r   )r   captured_stderrassertRaises
SystemExitr   assertIngetvalue)selfr   msgerrs       r   
checkErrorzParseArgsTestCase.checkErrorB   s    $&& 	"#t/@/@/L/L 	" 	"OOD!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"c3<<>>*****s4   A(AA(A	A(A	A((A,/A,c           	         dD ]}|                      |          5  t          j                    5 }|                     t                    5  |                     |g           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     d|                                           d d d            n# 1 swxY w Y   d S )N)z-hz--helpoptzRun Python regression tests.)subTestr   captured_stdoutr   r   r   r    r!   )r"   r(   outs      r   	test_helpzParseArgsTestCase.test_helpG   s   ! 	N 	NC#&& N N,.. +#&&z22+ +OOSE***+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <cllnnMMM	N N N N N N N N N N N N N N N	N 	NsX   CB
A-	!B-A11B4A15B8CBCB+CC	
C	c                    |                      ddg          }|                     |j        d           dD ]d}|                     |          5  |                      d| g          }|                     |j        d            d d d            n# 1 swxY w Y   e|                     dgd           |                     ddgd	           d S )
N	--timeoutz4.2g@)z-10 )valuez
--timeout=expected one argumentfoozinvalid timeout value:)r   assertEqualtimeoutr)   r%   )r"   nsr1   s      r   test_timeoutzParseArgsTestCase.test_timeoutO   s   __k5122S))) % 	3 	3EE** 3 3__&:5&:&:%;<<  T2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 	'>???e,.FGGGGGs   5BB	B	c                 f    |                      dg          }|                     |j                   d S )N--wait)r   
assertTruewaitr"   r6   s     r   	test_waitzParseArgsTestCase.test_wait\   s/    __hZ((     r   c                     dD ]y}|                      |          5  |                     |dg          }|                     |j        d           |                     |gd           d d d            n# 1 swxY w Y   zd S )N)z-S--startr'   r3   r2   )r)   r   r4   startr%   r"   r(   r6   s      r   
test_startzParseArgsTestCase.test_start`   s    " 	@ 	@C#&& @ @__c5\22  5111'>???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @	@ 	@   A
A11A5	8A5	c                    |                      dg          }|                     |j        d           |                      dg          }|                     |j        d           |                      dg          }|                     |j        d           |                      dgdz            }|                     |j        d           |                      g           }|                     |j        d           d S )N-v   z-vvvr   	--verboser   )r   r4   verboser<   s     r   test_verbosezParseArgsTestCase.test_verboseg   s    __dV$$Q'''__fX&&Q'''__k]++Q'''__k]Q.//Q'''__R  Q'''''r   c                     dD ]`}|                      |          5  |                     |g          }|                     |j                   d d d            n# 1 swxY w Y   ad S )N)z-w--rerunz
--verbose2r'   )r)   r   r:   rerunrA   s      r   
test_rerunzParseArgsTestCase.test_reruns   s    0 	* 	*C#&& * *__cU++)))* * * * * * * * * * * * * * *	* 	*   1AA	A	c                     dD ]`}|                      |          5  |                     |g          }|                     |j                   d d d            n# 1 swxY w Y   ad S )N)-W
--verbose3r'   )r)   r   r:   verbose3rA   s      r   test_verbose3zParseArgsTestCase.test_verbose3y       % 	- 	-C#&& - -__cU++,,,- - - - - - - - - - - - - - -	- 	-rN   c                    dD ]{}|                      |          5  |                     |g          }|                     |j                   |                     |j        d           d d d            n# 1 swxY w Y   |d S )N)-q--quietr'   r   )r)   r   r:   quietr4   rH   rA   s      r   
test_quietzParseArgsTestCase.test_quiet   s    " 	0 	0C#&& 0 0__cU++)))  Q///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0 	0s   AA33A7	:A7	c                     dD ]`}|                      |          5  |                     |g          }|                     |j                   d d d            n# 1 swxY w Y   ad S )N)z-o	--slowestr'   )r)   r   r:   
print_slowrA   s      r   test_slowestzParseArgsTestCase.test_slowest   s    $ 	/ 	/C#&& / /__cU++.../ / / / / / / / / / / / / / /	/ 	/rN   c                     |                      dg          }|                     |j                   |                      dg          }|                     |j                   d S )Nz--headerrG   )r   r:   headerr<   s     r   test_headerzParseArgsTestCase.test_header   sV    __j\**	"""__k]++	"""""r   c                    dD ]`}|                      |          5  |                     |g          }|                     |j                   d d d            n# 1 swxY w Y   at	          j                    5 }d|d<   |                     dg          }t          j        |          }|                     |j                   | 	                    |j
        t                     |                     |j
        d           |d= |                     dg          }t          j        |          }|                     |j                   | 	                    |j
        t                     d d d            d S # 1 swxY w Y   d S )N)-r--randomizer'   
1697839080SOURCE_DATE_EPOCHrc   )r)   r   r:   	randomizer   EnvironmentVarGuardr   RegrtestassertFalseassertIsInstancerandom_seedstrr4   int)r"   r(   r6   envregrtests        r   test_randomizez ParseArgsTestCase.test_randomize   s   ( 	. 	.C#&& . .__cU++---. . . . . . . . . . . . . . . *,, 	='3C#$-11B}R((HX/000!!("6<<<X1<@@@ '(-11B}R((HOOH.///!!("6<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s$   1AA	A	7C,E00E47E4c                     |                      ddg          }|                     |j        d           |                     |j                   |                     dgd           |                     ddgd           d S )Nz
--randseed12345i90  r2   r3   invalid int value)r   r4   rk   r:   rf   r%   r<   s     r   test_randseedzParseArgsTestCase.test_randseed   s{    __lG455///%%%(?@@@u-/BCCCCCr   c                 0   dD ]}|                      |          5  |                     |dg          }|                     |j        d           |                     |gd           |                     |ddgd           d d d            n# 1 swxY w Y   d S )N)-f
--fromfiler'   r3   r2   -sdon't go together)r)   r   r4   fromfiler%   rA   s      r   test_fromfilezParseArgsTestCase.test_fromfile   s    % 	I 	IC#&& I I__c5\22  e444'>???eT 24GHHH	I I I I I I I I I I I I I I I	I 	Is   A#B

B	B	c                     dD ]`}|                      |          5  |                     |g          }|                     |j                   d d d            n# 1 swxY w Y   ad S )N)z-x	--excluder'   )r)   r   r:   excluderA   s      r   test_excludezParseArgsTestCase.test_exclude       $ 	, 	,C#&& , ,__cU++
+++, , , , , , , , , , , , , , ,	, 	,rN   c                     dD ]y}|                      |          5  |                     |g          }|                     |j                   |                     |ddgd           d d d            n# 1 swxY w Y   zd S )N)rx   z--singler'   rv   r3   ry   )r)   r   r:   singler%   rA   s      r   test_singlezParseArgsTestCase.test_single   s    # 	I 	IC#&& I I__cU++	***dE 24GHHHI I I I I I I I I I I I I I I	I 	IrC   c                 X   dD ]z}|                      |          5  |                     |dg          }|                     |j        dg           |                     |gd           d d d            n# 1 swxY w Y   {dD ]z}|                      |          5  |                     |dg          }|                     |j        dg           |                     |gd           d d d            n# 1 swxY w Y   {|                     g d          }|                     |j        d	d
g           |                     g d          }|                     |j        d	dg           |                     g d          }|                     |j        dd
g           |                     t          j        t          j                   t          t          j        d          5 }t          d|           t          d|           d d d            n# 1 swxY w Y   t          j                            t          j                  }|                     ddd|g          }|                     |j        g d           |                     ddd|g          }|                     |j        g d           d S )N)-mz--matchr'   pattern)r   Tr2   )-iz--ignore)r   F)r   pattern1r   pattern2)r   T)r   T)r   r   r   r   )r   F)r   r   r   r   )r   Fw
matchfile1file
matchfile2r   match--matchfile))r   T)r   T)r   Tr   --ignorefile))r   F)r   F)r   F)r)   r   r4   match_testsr%   
addCleanupr   unlinkTESTFNopenprintospathabspath)r"   r(   r6   fpfilenames        r   
test_matchzParseArgsTestCase.test_match   s   " 	@ 	@C#&& @ @__c9%566  2C1DEEE'>???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @
 $ 	@ 	@C#&& @ @__c9%566  2D1EFFF'>???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @
 __AAABB*<>P)QRRR__AAABB*<>Q)RSSS__AAABB*=?Q)RSSS	()*:;;;)"C(( 	)B,R((((,R((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 7??9#344__dG]HEFFVVV	X 	X 	X __dG^XFGGYYY	[ 	[ 	[ 	[ 	[s7   AA22A6	9A6	AC//C3	6C3	#H

HHc                 ^   dD ]}|                      |          5  |                     |dg          }|                     |j                   |                     |dg          }|                     |j                   |                     |gd           d d d            n# 1 swxY w Y   d S )N)z-Gz
--failfastr'   rE   rP   z#-G/--failfast needs either -v or -W)r)   r   r:   failfastr%   rA   s      r   test_failfastzParseArgsTestCase.test_failfast   s   % 	N 	NC#&& N N__c4[11,,,__c4[11,,,'LMMMN N N N N N N N N N N N N N N	N 	Ns   A:B!!B%	(B%	c                 \   dD ]}|                      |          5  |                     |dg          }|                     |j        ddg           |                     |dg          }|                     |j        dg           t	          t
          j                  }|                    d           |                     |dg          }|                     |j        |           |                     |gd           |                     |d	gd
           |                     |dg          }|                     |j        t	          t
          j                  dgz              |                     |dg          }|                     |j        dg           d d d            n# 1 swxY w Y   d S )N)-uz--user'   zgui,networkguinetworkzgui,none,networkzall,-guir2   r3   zinvalid resourcez
all,tzdatatzdataextralargefile)	r)   r   r4   use_resourceslistr   ALL_RESOURCESremover%   )r"   r(   r6   expecteds       r   test_usezParseArgsTestCase.test_use   s     	G 	GC#&& G G__c=%9::  !1E93EFFF__c+=%>??  !1I;??? 566&&&__c:%677  !18<<<'>???e.@AAA __c<%899  !1!%g&;!<!<z!IK K K __c+;%<==  !14D3EFFF+G G G G G G G G G G G G G G G	G 	Gs   E7FF#	&F#	c                     dD ]y}|                      |          5  |                     |dg          }|                     |j        d           |                     |gd           d d d            n# 1 swxY w Y   zd S )N)z-Mz
--memlimitr'   4Gr2   )r)   r   r4   memlimitr%   rA   s      r   test_memlimitzParseArgsTestCase.test_memlimit  s    % 	@ 	@C#&& @ @__c4[11  d333'>???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @	@ 	@rC   c                     |                      ddg          }|                     |j        t          j                            t          j        d                     |                     dgd           d S )Nz	--testdirr3   r2   )	r   r4   testdirr   r   joinr   SAVEDCWDr%   r<   s     r   test_testdirzParseArgsTestCase.test_testdir  s`    __k5122RW\\)2De%L%LMMM'>?????r   c                     dD ]`}|                      |          5  |                     |g          }|                     |j                   d d d            n# 1 swxY w Y   ad S )N)z-Lz
--runleaksr'   )r)   r   r:   runleaksrA   s      r   test_runleakszParseArgsTestCase.test_runleaks  rT   rN   c                    dD ]X}|                      |          5  |                     |dg          }|                     |j        d           |                     |dg          }|                     |j        d           |                     |dg          }|                     |j        d           |                     |d	g          }|                     |j        d
           |                     |gd           |                     |dgd           |                     |dgd           |                     |dgd           d d d            n# 1 swxY w Y   Zd S )N)-R--huntrleaksr'   :)r   r   
reflog.txtz6:)   r   r   z:3)r   r   r   z6:3:leaks.log)r   r   z	leaks.logr2   6z&needs 2 or 3 colon-separated argumentszfoo:zinvalid huntrleaks valuez6:foo)r)   r   r4   
huntrleaksr%   rA   s      r   test_huntrleaksz!ParseArgsTestCase.test_huntrleaks  s   ' 	L 	LC#&& L L__c3Z00  0DEEE__c4[11  0DEEE__c4[11  0DEEE__c?%;<<  0CDDD'>???c
 HJ J Jf/IJJJg0JKKKL L L L L L L L L L L L L L L	L 	Ls   D(EE	E	c                    dD ]}|                      |          5  |                     |dg          }|                     |j        d           |                     |gd           |                     |dgd           |                     |ddgd	           |                     |d
dgd	           d d d            n# 1 swxY w Y   d S )N)-jz--multiprocessr'   2r   r2   r3   rs   -Try   r/   )r)   r   r4   use_mpr%   rA   s      r   test_multiprocessz#ParseArgsTestCase.test_multiprocess.  s/   ) 	G 	GC#&& G G__c3Z00  A...'>???e.ABBBc4 02EFFFc4 02EFFFG G G G G G G G G G G G G G G	G 	Gs   BB;;B?	B?	c                     dD ]`}|                      |          5  |                     |g          }|                     |j                   d d d            n# 1 swxY w Y   ad S )N)r   
--coverager'   )r)   r   r:   tracerA   s      r   test_coveragezParseArgsTestCase.test_coverage8  s    % 	* 	*C#&& * *__cU++)))* * * * * * * * * * * * * * *	* 	*rN   c           	      N   dD ]}|                      |          5  |                     |dg          }|                     |j        t          j                            t          j        d                     | 	                    |gd           d d d            n# 1 swxY w Y   d S )N)z-Dz
--coverdirr'   r3   r2   )
r)   r   r4   coverdirr   r   r   r   r   r%   rA   s      r   test_coverdirzParseArgsTestCase.test_coverdir>  s    % 	@ 	@C#&& @ @__c5\22  !#i.@%!H!HJ J J'>???	@ @ @ @ @ @ @ @ @ @ @ @ @ @ @	@ 	@s   A2BB	 B	c                     dD ]`}|                      |          5  |                     |g          }|                     |j                   d d d            n# 1 swxY w Y   ad S )N)z-Nz--nocoverdirr'   )r)   r   assertIsNoner   rA   s      r   test_nocoverdirz!ParseArgsTestCase.test_nocoverdirF  s    ' 	/ 	/C#&& / /__cU++!!"+.../ / / / / / / / / / / / / / /	/ 	/rN   c                 .   dD ]}|                      |          5  |                     |dg          }|                     |j        d           |                     |gd           |                     |dgd           d d d            n# 1 swxY w Y   d S )N)z-tz--thresholdr'   1000  r2   r3   rs   )r)   r   r4   	thresholdr%   rA   s      r   test_thresholdz ParseArgsTestCase.test_thresholdL  s    & 	C 	CC#&& C C__c6]33  t444'>???e.ABBB	C C C C C C C C C C C C C C C	C 	Cs   A"B		B	B	c                    dD ]}|                      |          5  t          j        t          j                              5 }|                     |g          }d d d            n# 1 swxY w Y   |                     |j                   |                                }| 	                    d|           d d d            n# 1 swxY w Y   d S )N)-nz--nowindowsr'   z)the --nowindows (-n) option is deprecated)
r)   
contextlibredirect_stderrioStringIOr   r:   	nowindowsr!   r    )r"   r(   stderrr6   r$   s        r   test_nowindowsz ParseArgsTestCase.test_nowindowsT  sN   & 	P 	PC#&& P P/>> 0&#//B0 0 0 0 0 0 0 0 0 0 0 0 0 0 0---oo''I3OOOP P P P P P P P P P P P P P P	P 	Ps6   &B?A$B?$A((B?+A(,AB??C	C	c                     dD ]`}|                      |          5  |                     |g          }|                     |j                   d d d            n# 1 swxY w Y   ad S )N)z-F	--foreverr'   )r)   r   r:   foreverrA   s      r   test_foreverzParseArgsTestCase.test_forever]  r   rN   c                 4    |                      dgd           d S )Nz--xxxzusage:r%   r"   s    r   test_unrecognized_argumentz,ParseArgsTestCase.test_unrecognized_argumentc  s    	8,,,,,r   c                     |                      dg          }|                     |j                   |                     |j        d           d S )Nz--quir   )r   r:   rX   r4   rH   r<   s     r   test_long_option__partialz+ParseArgsTestCase.test_long_option__partialf  sG    __gY''!!!Q'''''r   c                     |                      ddg          }|                     |j                   |                     |j        d           |                     |j                   d S )NrW   r}   r   )r   r:   rX   r4   rH   r~   r<   s     r   test_two_optionsz"ParseArgsTestCase.test_two_optionsk  s^    __i566!!!Q'''
#####r   c                 j    |                      ddg          }|                     |j        d           d S )Nr?   r0   )r   r4   r@   r<   s     r   #test_option_with_empty_string_valuez5ParseArgsTestCase.test_option_with_empty_string_valueq  s5    __i_--2&&&&&r   c                 j    |                      dg          }|                     |j        dg           d S )Nr3   )r   r4   r   r<   s     r   test_argzParseArgsTestCase.test_argu  s5    __eW%%5'*****r   c                     |                      ddg          }|                     |j                   |                     |j        d           |                     |j        dg           d S )NrW   r3   r   )r   r:   rX   r4   rH   r   r<   s     r   test_option_and_argz%ParseArgsTestCase.test_option_and_argy  sd    __i/00!!!Q'''5'*****r   c                     |                      g d          }|                     |j        d           |                     |j        ddg           d S )N)test_unaryoprE   
test_binoprF   r   r   )r   r4   rH   r   r<   s     r   test_arg_option_argz%ParseArgsTestCase.test_arg_option_arg  sU    __AAABBQ'''><"@AAAAAr   c                 4    |                      dgd           d S )Nz--unknown-optionz(unrecognized arguments: --unknown-optionr   r   s    r   test_unknown_optionz%ParseArgsTestCase.test_unknown_option  s0    +,B	D 	D 	D 	D 	Dr   c                     t          j        |          }t          j                    5 }d|v r|d= t	          j        |          }d d d            n# 1 swxY w Y   |S )Nre   )r   r   r   rg   r   rh   )r"   r   r6   rn   ro   s        r   create_regrtestz!ParseArgsTestCase.create_regrtest  s     && *,, 	)"c))+,}R((H	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) s   AAATc                 J   |                      |          }|                     |j        d           |                     |j        |           |                     |j                   |                     |j        t                     |                     |j	                   |                     |j
                   |                     |j                   |                     |j                   |                     t          |j                  t          |                     |S )N)r   r4   num_workers
want_rerunr:   rf   rj   rk   rm   fail_env_changed
fail_rerunprint_slowestoutput_on_failuresortedr   )r"   r   r   rL   ro   s        r   check_ci_modezParseArgsTestCase.check_ci_mode  s    ''---r222,e444*+++h2C8881222+,,,.///2333 6779N9NOOOr   c                     dg}t          t          j                  }|                    d           |                     ||          }|                     |j        d           d S )N	--fast-cicpuX  )r  r   r   r   r  r4   r5   r"   r   r   ro   s       r   test_fast_cizParseArgsTestCase.test_fast_ci  sa    }w455U###%%dM::)733333r   c                    g d}t          t          j                  }|                    d           |                     ||d          }|                     |j        d           |                     |j        d           d S )N)r  --pythonzpython -X devr  F)rL   r  )python-Xdev)r  r   r   r   r  r4   r5   
python_cmdr  s       r   test_fast_ci_python_cmdz)ParseArgsTestCase.test_fast_ci_python_cmd  s    999w455U###%%dM%GG)7333,.EFFFFFr   c                     ddg}t          t          j                  }|                    d           |                    d           |                     ||           d S )Nr  z
-u-networkr  r   )r  r   r   r   r  )r"   r   r   s      r   test_fast_ci_resourcez'ParseArgsTestCase.test_fast_ci_resource  s`    \*w455U###Y'''4/////r   c                     dg}t          t          j                  }|                     ||          }|                     |j        d           d S )N	--slow-cii  )r  r   r   r  r4   r5   r  s       r   test_slow_cizParseArgsTestCase.test_slow_ci  sM    }w455%%dM::)733333r   c                 h    dg}t          j        |          }|                     |j                   d S )Nz--dont-add-python-opts)r   r   ri   _add_python_opts)r"   r   r6   s      r   test_dont_add_python_optsz+ParseArgsTestCase.test_dont_add_python_opts  s7    () &&,-----r   c                 j    dg}|                      |          }|                     |j                   d S )N--bisect)r   r:   want_bisectr"   r   ro   s      r   test_bisectzParseArgsTestCase.test_bisect  s7    |''--,-----r   c                 v   g d}t          j                    5  |                     |          }d d d            n# 1 swxY w Y   |                     |j                   |                     |j        j        d           |                     |j        j        d           |                     |j	                   d S )N)r   z3:10rQ   r   
   )
r   r   r   assertIsNotNonehunt_refleakr4   warmupsrunsri   r  r  s      r   test_verbose3_huntrleaksz*ParseArgsTestCase.test_verbose3_huntrleaks  s    +++$&& 	2 	2++D11H	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2X2333.6:::.3R888344444   :>>c                 v   g d}t          j                    5  |                     |          }d d d            n# 1 swxY w Y   |                     |j                   |                     |j        j        d           |                     |j        j        d           |                     |j	                   d S )N)r   z3:12z--junit-xmlz
output.xmlr      )
r   r   r   r   r!  r4   r"  r#  r   junit_filenamer  s      r   test_xml_huntrleaksz%ParseArgsTestCase.test_xml_huntrleaks  s    :::$&& 	2 	2++D11H	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2X2333.6:::.3R888(122222r%  N)T)6__name__
__module____qualname____doc__staticmethodr   r%   r,   r7   r=   rB   rI   rM   rS   rY   r]   r`   rp   rt   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r  r  r  r  r$  r)   r   r   r   r   9   sH         ) ) \)+ + +
N N NH H H! ! !@ @ @
( 
( 
(* * *- - -0 0 0/ / /# # #= = =,D D DI I I, , ,I I I"[ "[ "[HN N NG G G2@ @ @@ @ @
- - -L L L"G G G* * *@ @ @/ / /C C CP P P, , ,- - -( ( (
$ $ $' ' '+ + ++ + +B B B
D D D     4 4 4G G G0 0 04 4 4. . .
. . .
5 5 53 3 3 3 3r   r   T)slotsc                   4    e Zd ZU eed<   edz  ed<   eed<   dS )RerunnameNr   success)r*  r+  r,  rl   __annotations__boolr/  r   r   r2  r2    s2         
III:MMMMMr   r2  c                   ~    e Zd ZdZdZdZd ZddZd Zdd
Z	d Z
dddddddddddddddZdedefdZddZd ZdS )BaseTestCaserF   test_regrtest_ztest_[a-zA-Z0-9_]+c                    t           j                            t           j                            t                              | _        t          j                    | _        | 	                    t          j        | j                   d S r   )r   r   realpathdirname__file__r   tempfilemkdtemp
tmptestdirr   r   rmtreer   s    r   setUpzBaseTestCase.setUp  sV    w''(A(ABB"*,,	($/:::::r   Nc                 &   |s$dt           j        z  }t           xj        dz  c_        |t          j        d          }| j        |z   }t
          j                            | j        |dz             }| 	                    t          j        |           	 t          |dd          5 }|                    |           d d d            n# 1 swxY w Y   nA# t          $ r4}t          j                    s|                     d|d	|            d }~ww xY w|S )
Nznoop%srF   z
                    import unittest

                    class Tests(unittest.TestCase):
                        def test_empty_test(self):
                            pass
                z.pyxzutf-8)encodingzcannot write z: )r8  TEST_UNIQUE_IDtextwrapdedentTESTNAME_PREFIXr   r   r   r@  r   r   r   r   writePermissionError	sysconfigis_python_buildskipTest)r"   r3  coder   r   excs         r   create_testzBaseTestCase.create_test  s]    	-l99D''1,''<? $  D #d*w||DOTE\::	($///	dC'222 b               	 	 	,.. CtttSSABBB	 s<   C "C8C CC CC 
D/D		Dc                 ~    t          j        ||t           j                  }|s|                     |d|           |S )Nz not found in )research	MULTILINEfail)r"   regexoutputr   s       r   regex_searchzBaseTestCase.regex_search  sA    	%66 	>IIeeeVV<===r   FTc                     |st          j        |          }|r|dz  }t          j        d|z   t           j                  }|                     ||           d S )N
^)rS  escapecompilerU  assertRegex)r"   rX  r   fullrW  s        r   
check_linezBaseTestCase.check_line  s]     	)i((G 	tOG
4'>2<88'''''r   c                     dt           d| j        d}t          j        ||t          j                  }t          d |D                       S )Nr\  z\[ *[0-9]+(?:/ *[0-9]+)*\] ()c              3   @   K   | ]}|                     d           V  dS )rF   Ngroup.0r   s     r   	<genexpr>z4BaseTestCase.parse_executed_tests.<locals>.<genexpr>  s,      77uEKKNN777777r   )
LOG_PREFIXTESTNAME_REGEXrS  finditerrU  r   )r"   rX  rW  parsers       r   parse_executed_testsz!BaseTestCase.parse_executed_tests  sO     JJ 3 3 35UFBL9977777777r   r/  )skippedfailedenv_changedomittedrL   run_no_testsresource_deniedrf   parallelinterruptedr   r   filteredc          	      :  " t          |t                    r|g}t          |t                    r|g}t          |
t                    r|
g}
t          |t                    r|g}t          |t                    r|g}t          |t                    r|g}t          |	t                    r|	g}	t          |t                    rt          |          }|rd}g }|+|s)|j        g}|j        s|                    |j                   |                     |          }t          |          }||                    |j                   |r2| 	                    t          |          t          |          |           n| 	                    |||           d ""fd}|r" |d|          }|                     ||           |
r" |d|
          }|                     ||           |r" |d|          }|                     ||           |r" |d|          }|                     ||           |r" |d|          }|                     ||           |} |d	|j        g          }|                     ||           t          d
z   }|                     ||           d|j         d}|j        r| d|j         d}|                     ||           |	r" |d|	          }|                     ||           t          |          t          |          z
  t          |
          z
  t          |          z
  t          |          z
  t          |          z
  t          |	          z
  }|rA|d "|          d}|s|s||j        r|dk    rd|z  }|                     ||d           |r|                     |d           d|j        d}|r| d}|g}|j        r|                    d|j        d           |j        r|                    d|j        d           dd                    |           }|                     ||d           t          |          t          |
          z
  }|t          |          }d}nt          |          }d}|rd}d| }|s| dt          |           }|r| d}|g}d|fd t          |          fd!t          |          fd"t          |
          fd#|fd$t          |	          ffD ]!\  }}|r|                    | d%|            "d&d                    |           }|                     ||d           g } |r|                     d'           n|r|r|                     d(           |r|                     d)           t'          ||||||f          s|                     d*           n| s|                     d+           d,                    |           } ||j        rd+nd'}!|  d-|! } |                     |d.|  d           d S )/NTc                     | dk    rdndS )NrF   sr0   r/  )counts    r   pluralz1BaseTestCase.check_executed_tests.<locals>.pluralK  s    1**33",r   c                     t          |          }d                    t          |                    }| | |          fz  }|d|d}|S )N z:\n    $)lenr   r  )line_formattestsr{  namesrW  r|  s        r   
list_regexz5BaseTestCase.check_executed_tests.<locals>.list_regexN  sS    JJEHHVE]]++E5&&--"88E',uueee4ELr   z%s test%s skippedz%%s test%s skipped \(resource denied\)z%s test%s failedz;%s test%s altered the execution environment \(env changed\)z%s test%s omittedz%s re-run test%sz)Re-running 1 failed tests in verbose modezRe-running z in verbose modez \(matching: z\)z%s test%s run no testsz testz OK\.rF   zAll %s)r`  z(Test suite interrupted by signal SIGINT.zrun=,z \(filtered\)z	failures=zskipped=zTotal tests: r~  r   /rp  rq  ro  rt  rL   rs  =zTotal test files: FAILUREzENV CHANGEDINTERRUPTEDzNO TESTS RANSUCCESS, z then zResult: )
isinstancerl   rm   r   r3  r4  appendrn  r   r4   setra  rj  r   r  	tests_runfailuresro  r   any)#r"   rX  r  statsro  rp  rq  rr  rL   rs  rt  rf   ru  rv  r   r   rw  rerun_failedexecutedtotal_testsr  rW  goodtextpartslineruntotal_failedtotal_rerunreportr3  nteststate	new_stater|  s#                                     @r   check_executed_testsz!BaseTestCase.check_executed_tests!  s    eS!! 	GEgs## 	 iGos++ 	0./Ofc"" 	XFk3'' 	(&-Kgs## 	 iGlC(( 	*(>LeS!! 	%e$$E 	I[j\F= 0##EJ///,,V445kkuz*** 	<S]]C,<,<fEEEEX{F;;;	- 	- 	-	 	 	 	 	  	+J2G<<EOOFE*** 	+JGYYEOOFE*** 	+J16::EOOFE*** 	+J  2*, ,E OOFE*** 	+J2G<<EOOFE***J1EJ<@@EOOFE***!MMEOOFE***?5:???E{ @!?????OOFE*** 	+J7FFEOOFE***E

S\\)C,@,@@3v;;Ng,,!$[!1!12474E4EF 	6)-vvd||||<E )6 )u}}SWZ[S[S[ 5(OOFEO555 	POOF$NOOO *eo))) 	+***D> 	9LL7U^777888= 	7LL5EM5556661114000 +_!5!55|,,LKKv;;LK 	Cc|| 	*))SZZ))D 	+***D|$C,,-G%O 4 45k"S../
 		1 		1KD%  1////0007SXXf%5%5774000  	(LL#### 	(+ 	(LL''' 	(LL'''D&+w!13 4 4 	$LL(((( 	$LL###		%  %*]A			I//I//E 25 2 2>>>>>r   rX  returnc                 X    |                      d|          }|                    d          S )NzUsing random seed: (.*)rF   )rY  rf  )r"   rX  r   s      r   parse_random_seedzBaseTestCase.parse_random_seed  s(    !!"<fEE{{1~~r   r   c           	         |sd}d|vrt           j        |d<   |                    dd           }|/t          t          j                  }|                    dd            t          j        |fd|t           j        |d|}|j        |k    rOdt          |          d|j        d	|d
|j
        d	}|j        r|d|j        z  z  }|                     |           |S )Nr0   r   rn   re   T)r  inputstdoutrn   zCommand z failed with exit code z, but exit code z expected!

stdout:
---
z
---
z
stderr:
---
%s---
)
subprocessSTDOUTpopdictr   environr  PIPE
returncoderl   r  r   rV  )r"   r   r  exitcodekwrn   procr#   s           r   run_commandzBaseTestCase.run_command  s    	E2%,BxLffUD!!;rz""CGG'...~d $#'$)%/_"%	$ $
 !#$ $ ?h&&& $iiii(((DKKKIC { '  
 +& ' IIcNNNr   c                     g }dt           j        v r|                    ddg           t           j        g|ddd|} | j        |fi |}|j        S )Nuopsr  faulthandlerz-I)sys	_xoptionsextend
executabler  r  )r"   r   r  	extraargsr  s        r   
run_pythonzBaseTestCase.run_python  sq    	S]""dF^,,,NNDN.N$NNt++++{r   )NNFT)Nr   )r*  r+  r,  rF  rI  rk  rB  rQ  rY  ra  rn  r  rl   r  r  r  r/  r   r   r8  r8    s        N&O*N; ; ;   <  ( ( ( (8 8 8 &()+R#'b-/',u%.3%*U]? ]? ]? ]? ]?~     ! ! ! !F    r   r8  c                       e Zd Zd ZdS )CheckActualTestsc           	         g d}|                      |          }t          |                                          }t          j                            t          j        t          j                            t                              d          }t          t          j        |                    }| 
                    ||dz  dz  dd                    |                                                      dS )	zP
        Check that regrtest appears to find the expected set of tests.
        )-Wd-E-bbr   test.regrtest--list-testsztest*.py	   r  z+Unexpectedly low number of tests found in:
r  )r#   N)r  r  
splitlinesr   r   r   globr]  r<  r=  assertGreater)r"   r   rX  rough_number_of_tests_foundactual_testsuite_globrough_counted_test_py_filess         r   #test_finds_expected_number_of_testsz4CheckActualTests.test_finds_expected_number_of_tests  s     KJJ&&&)&*;*;*=*=&>&># "T[9R9R-S-S-7!9 !9&)$)4I*J*J&K&K# 	66q8"< ?"ii(9(9(;(;<< ?  ? 	 	@ 	@ 	@ 	@ 	@r   N)r*  r+  r,  r  r/  r   r   r  r    s(        @ @ @ @ @r   r  c                   2    e Zd ZdZdZ fdZd ZddZd Zd Z	d	 Z
d
 Zd Zd Zd Z ej         ej                    d           ej        ej        dk    d          d                         Z ej        ej        dk    d          d             Z xZS )ProgramsTestCasezp
    Test various ways to run the Python test suite. Use options close
    to options used on the buildbot.
    r   c                 V    t                                                        fdt           j                  D              _        g d _        ddd j        z  g _         j                            d           t          j
        dk    r j                            d           d S d S )	Nc                 8    g | ]}                                 S r/  rQ  rh  indexr"   s     r   
<listcomp>z*ProgramsTestCase.setUp.<locals>.<listcomp>  s%    HHHUd&&((HHHr   )r  r  r  z-uallz-rwW--testdir=%s)r.   3600z-j4win32r   )superrB  rangeNTESTr  python_argsr@  regrtest_argsr  r  platformr  )r"   	__class__s   `r   rB  zProgramsTestCase.setUp  s     IHHHeDJ6G6GHHH
///%v,t>@!!">???<7""%%d+++++ #"r   c                     |                      |          }|                     |                                |           |                     || j        dt          | j                             d S )NT)rf   r  )r  r:   isdigitr  r  r  )r"   rX  randseeds      r   check_outputzProgramsTestCase.check_output  st    ))&11((**H555!!&$*,0DJ 	" 	I 	I 	I 	I 	Ir   Nc                 ^    |                      ||          }|                     |           d S )N)rn   )r  r  )r"   r   rn   rX  s       r   	run_testszProgramsTestCase.run_tests%  s1    3//&!!!!!r   c                     t           j                            | j        d          }g | j        || j        | j        }|                     |           d S )Nzregrtest.pyr   r   r   r   r  r  r  r  r"   scriptr   s      r   test_script_regrtestz%ProgramsTestCase.test_script_regrtest)  sR    dlM::L!L6LD,>LLtr   c                 f    g | j         dd| j        | j        }|                     |           d S )Nr   testr  r  r  r  r"   r   s     r   test_module_testz!ProgramsTestCase.test_module_test0  sN    2! 24 2 2#2&*j2tr   c                 f    g | j         dd| j        | j        }|                     |           d S )Nr   r  r  r  s     r   test_module_regrtestz%ProgramsTestCase.test_module_regrtest6  N    2! 24 2 2#2&*j2tr   c                 f    g | j         dd| j        | j        }|                     |           d S )Nr   ztest.autotestr  r  s     r   test_module_autotestz%ProgramsTestCase.test_module_autotest<  r  r   c                 j    d}g | j         d|| j        | j        }|                     |           d S )Nzfrom test import autotestz-cr  )r"   rO  r   s      r   test_module_from_test_autotestz/ProgramsTestCase.test_module_from_test_autotestB  sS    *2! 24 2 2#2&*j2tr   c                     t           j                            | j        d          }g | j        || j        | j        }|                     |           d S )Nzautotest.pyr  r  s      r   test_script_autotestz%ProgramsTestCase.test_script_autotestI  sR    dlM::L!L6LD,>LLtr   c                 d    |                      |          }|                     |j                   d S r   )r  r  r  )r"   r   r  s      r   	run_batchzProgramsTestCase.run_batchO  s1    %%$+&&&&&r   z test.bat script is not installedr  zWindows onlyc                    t           j                            t          ddd          }d| j        z  g}t          j                    dk    r|                    d           n_t          j                    dk    r|                    d           n2t          j                    d	         d
k    r|                    d           t          j
        s|                    d            | j        |g|| j        R   d S )NToolsbuildbotztest.batr  ARM64-arm64ARM-arm32r   64bit-x64z+d)r   r   r   ROOT_DIRr@  r  machiner  architecturer   Py_DEBUGr  r  )r"   r  	test_argss      r   test_tools_buildbot_testz)ProgramsTestCase.test_tools_buildbot_testS  s    
 hZHH#do56	((X&&&&5((X&&&&"$$Q'722V$$$ 	#T"""v7	7DJ777777r   c                 X   t           j                            t          d          }t           j                            |          s|                     d| d           dg}t          j                    dk    r|                    d           n_t          j                    dk    r|                    d           n2t          j	                    d	         d
k    r|                    d           t          j        r|                    d            | j        |g|| j        | j        R   d S )NzPCbuild\rt.batzFile "z" does not existrV   r  r  r  r   r   r  r  z-d)r   r   r   r  isfilerN  r  r  r  r  r   r  r  r  r  )r"   r  rt_argss      r   test_pcbuild_rtz ProgramsTestCase.test_pcbuild_rtd  s    h(9::w~~f%% 	=MM;6;;;<<<&((NN8$$$$5((NN8$$$$"$$Q'722NN6""" 	!NN4   vJJ$*<JtzJJJJJJr   r   )r*  r+  r,  r-  r  rB  r  r  r  r  r  r  r  r  r  unittest
skipUnlessrL  rM  r  r  r  r  __classcell__)r  s   @r   r  r  	  sr        
 E, , , , ,I I I" " " "            ' ' ' X2244;= =X0.AA8 8 BA= =8 X0.AAK K BAK K K K Kr   r  c                      e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd ZdddZ ej        ej        d          defd            Zd Zd Z ej        ej        d          d             Z ej        ej        d          d             Zd Zd Zej        d             Zd Z d Z!d Z"d Z#d  Z$d! Z%d" Z&d# Z'd$ Z(d% Z)d& Z*d' Z+d( Z,d) Z-d* Z.d+ Z/d, Z0d- Z1ej        d.             Z2d/ Z3d0 Z4d1 Z5d2 Z6d3 Z7d4 Z8 ej9        ej:        d5          d6             Z;d7 Z<d8 Z=defd9Z>d: Z?d; Z@d< ZAd= ZBd> ZCd? ZD ej9        ejE        d@          dA             ZFdB ZGdCS )DArgsTestCasez2
    Test arguments of the Python test suite.
    c                 <    ddd| j         z  g|} | j        |fi |S )Nr   r  r  )r@  r  )r"   testargsr  cmdargss       r   r  zArgsTestCase.run_tests{  s4    $/!AMHMtw--"---r   c                      t          j        d           fdt          dd          D             }  j        | }                     ||dt          |          z             d S )Na  
            import unittest

            class PassingTests(unittest.TestCase):
                def test_test1(self):
                    pass

                def test_test2(self):
                    pass

                def test_test3(self):
                    pass
        c                 D    g | ]}                     d |           S )okrO  r  rh  irO  r"   s     r   r  z-ArgsTestCase.test_success.<locals>.<listcomp>  s2    LLL1!!(q((!66LLLr   rF   r   r   r  )rG  rH  r  r  r  r  )r"   r  rX  rO  s   `  @r   test_successzArgsTestCase.test_success  s         MLLLLaLLL'!!&%()CJJ 	" 	8 	8 	8 	8 	8r   c                     t          j        d          }|                     d          }|                     d|          }||g} | j        | }|                     |||gd           d S )NzQ
            import unittest
            raise unittest.SkipTest("nope")
        r  skipr  rF   )ro  r  rG  rH  rQ  r  r  )r"   rO  test_ok	test_skipr  rX  s         r   r!  zArgsTestCase.test_skip  s         ""4(($$V$$77	)$'!!&%+4+() 	" 	+ 	+ 	+ 	+ 	+r   c           	          t          j        d          }|                     d          }|                     d|          }||g} | j        |dt          i}|                     |||t          dd                     d S )	Nz
            import unittest

            class FailingTest(unittest.TestCase):
                def test_failing(self):
                    self.fail("bug")
        r  failingr  r  r   rF   rp  r  rG  rH  rQ  r  EXITCODE_BAD_TESTr  r   )r"   rO  r   test_failingr  rX  s         r   test_failing_testzArgsTestCase.test_failing_test  s         ""4((''	'==,'C1BCC!!&%(1!Q 	" 	9 	9 	9 	9 	9r   c                    i }dD ]2}t          j        d|z            }|                     ||          ||<   3t          |                                          } | j        ddg|R  }|                     ||d            | j        dg|R  }|                     |||d         d	
            | j        |dt          i}|                     |||d
           d S )N)audior   a  
                        from test import support; support.requires(%r)
                        import unittest
                        class PassingTest(unittest.TestCase):
                            def test_pass(self):
                                pass
                    r   allr   r  z-uaudior   rF   )rt  r  r  r   )rG  rH  rQ  r  valuesr  r  EXITCODE_NO_TESTS_RAN)r"   r  resourcerO  
test_namesrX  s         r   test_resourceszArgsTestCase.test_resources  s1   , 		? 		?H? $ #$# $ $D #..x>>E(OOELLNN++
  e9j999!!&*A!>>>  	7J777!!&*27	2B() 	" 	+ 	+ 	+
  L6KLL!!&*2<() 	" 	+ 	+ 	+ 	+ 	+r   c                    t          j        d          }|                     d|          }|                     d|t                    }|                     |          }|                     d|          }t          |                    d                    }|                     dd| |t                    }|                     |          }| 	                    ||           |                     d|          }t          |                    d                    }| 	                    ||           |                     |t                    }|                     |          }| 
                    |                                |           d}	t          t          j        |		          }
|                     d|t          |

          }|                     |          }| 	                    ||	           |                     |d           t          t          j        d	          }
|                     d|t          |

          }|                     |          }| 	                    |d           |                     |d           t          t          j        d	          }
|                     d|t          |

          }|                     |          }| 
                    |                                |           d S )Nza
            import random
            print("TESTRANDOM: %s" % random.randint(1, 1000))
        randomrb   r  zTESTRANDOM: ([0-9]+)rF   --randseed=rd   )re   r  rn   zTESTRANDOM: 520XYZzTESTRANDOM: 22r0   )rG  rH  rQ  r  r-  r  rY  rm   rf  r4   r:   r  r  r   r  ra  )r"   rO  r  rX  r  r   test_random	randseed2test_random2	timestamprn   s              r   r7  zArgsTestCase.test_random  s        $// d5JKK))&11!!"96BB%++a..)) &>H&>&>)>   @ @**622	H---!!"96BB5;;q>>**{333 /DEE))&11((**H555 !	2:;;;d5J$'   ) )))&119--- 1222 2:777d5J$'   ) )))&115))) 0111 2:444d5J$'   ) )))&11((**H55555r   c           
           fdt          d          D             }t          j        }                     t          j        |           t          |d          5 }d }t          |d          D ]8\  }}d||t          |          |fz  }|r|d|z  z  }t          ||           |}9	 d d d            n# 1 swxY w Y    	                    d|          }t          |          }	 
                    |||		           t          |d          5 }t          |d          D ],\  }}t          d
|dt          |          d||           -	 d d d            n# 1 swxY w Y    	                    d|          } 
                    |||		           t          |d          5 }|D ]}t          ||           	 d d d            n# 1 swxY w Y    	                    d|          } 
                    |||		           t          |d          5 }|D ]}t          d|z  |           	 d d d            n# 1 swxY w Y    	                    d|          } 
                    |||		           d S )Nc                 8    g | ]}                                 S r/  r  r  s     r   r  z.ArgsTestCase.test_fromfile.<locals>.<listcomp>  %    :::!!##:::r   r   r   rF   z00:00:%02i [%s/%s] %sz -- %s took 0 secr   rw   r  [r  z] zLib/test/%s.py)r  r   r   r   r   r   	enumerater  r   r  r  )
r"   r  r   r   previousr  r3  r  rX  r  s
   `         r   r{   zArgsTestCase.test_fromfile  s   ::::q:::
 #	((333 (C   	 BH(22    t/ %UT:; ;/(::Dd$$$$ 	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  h77E

!!&%u!=== (C   	IB(22 I IteeeSZZZZ>RHHHHHI	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I h77!!&%u!=== (C   	%B % %d$$$$$%	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% h77!!&%u!=== (C   	8B 8 8&-B777778	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 h77!!&%u!=====sI   AB22B69B6
>EEEGG	GH22H69H6c                     t           }|                     d|          }|                     |t                    }|                     |||dd           d S )Nsigintr  r3  Tr   rr  rv  r  )TEST_INTERRUPTEDrQ  r  EXITCODE_INTERRUPTEDr  r"   rO  r  rX  s       r   test_interruptedzArgsTestCase.test_interrupted7  sg    t44/CDD!!&$.2! 	" 	= 	= 	= 	= 	=r   c                      fdt          d          D             }  j        dg|R  }                     ||t          |                     d j        dt          |          d}                     ||           d S )Nc                 8    g | ]}                                 S r/  r  r  s     r   r  z-ArgsTestCase.test_slowest.<locals>.<listcomp>@  r=  r   r   r[   r  z10 slowest tests:
(?:- z: .*
){})r  r  r  r  rk  ra  )r"   r  rX  rW  s   `   r   r]   zArgsTestCase.test_slowest>  s    ::::q:::4e444!!&%s5zz!BBBB '''U5 	&&&&&r   c           	      H   t           }|                     d|          }dD ]}|                     |          5  |rdd|f}nd|f} | j        |dt          i}|                     |||dd	
           d}|                     ||           d d d            n# 1 swxY w Y   d S )NrB  r  r  )multiprocessingr[   -j2r  Tr   rC  z10 slowest tests:
)rD  rQ  r)   r  rE  r  ra  )r"   rO  r  rL  r   rX  rW  s          r   test_slowest_interruptedz%ArgsTestCase.test_slowest_interruptedH  s   t44, 	/ 	/Oo>> / /" /'5DD'.D'M8LMM))&$26D01 * 3 3 3 /.../ / / / / / / / / / / / / / /	/ 	/s   ABB	B	c                     |                      d          }|                     d|          }|                     ||gd           d}|                     ||           d S )Ncoverager   rF   r  zLlines +cov% +module +\(path\)\n(?: *[0-9]+ *[0-9]{1,2}% *[^ ]+ +\([^)]+\)+)+)rQ  r  r  ra  )r"   r  rX  rW  s       r   r   zArgsTestCase.test_coverage[  sg    
++d33!!&4&!:::B&&&&&r   c                     |                      d          }|                     d|d          }|                     |d           d S )Nr;   r9   key)r  zPress any key to continue)rQ  r  ra  )r"   r  rX  s      r   r=   zArgsTestCase.test_waitd  sG    ''$e<< ;<<<<<r   c           	         t          j        d          }|                     d|          }|                     d|t                    }|                     ||gdz  |t          dd          d	           |                     dd
|d          }|                     ||gdz  t          |dd          t          dd          d           d S )NaL  
            import builtins
            import unittest

            class ForeverTester(unittest.TestCase):
                def test_run(self):
                    # Store the state in the builtins module, because the test
                    # module is reload at each run
                    if 'RUN' in builtins.__dict__:
                        builtins.__dict__['RUN'] += 1
                        if builtins.__dict__['RUN'] >= 3:
                            self.fail("fail at the 3rd runs")
                    else:
                        builtins.__dict__['RUN'] = 1
        r   r  r   r3  r   rF   T)rp  r  r   rK   r   test_runr   r4  r   )rL   r  r   )rG  rH  rQ  r  r&  r  r   r2  rF  s       r   r   zArgsTestCase.test_foreverj  s         	55 T<MNN!!&4&(4(1!Q*. 	" 	0 	0 	0
 YqII!!&4&((-d4>6:)< )< )< )2!Q*. 	" 	0 	0 	0 	0 	0r   Frun_workersc                V   |                      d|          }d}|                     t          j        |           ddg}|r|                    d           |                    |            | j        |t          t          j        d}| 	                    ||g|d	           d
}| 
                    ||           |d|d}	|                     |	|           t          |          5 }
|
                                }|                     |	|           d d d            d S # 1 swxY w Y   d S )Nr   r  r   r   3:3:-j1r  r   rF   r$  z6beginning 6 repetitions. .*\n123:456\n[.0-9X]{3} 111\nz leaked [1, 1, 1] z, sum=3
)rQ  r   r   r   r  r  r&  r  r  r  ra  r    r   read)r"   rO  whatrW  r  r   cmdrX  r  line2r   reflogs               r   
check_leakzArgsTestCase.check_leak  s}   488	((333v& 	JJu

4):'1'8: : : 	!!&4&Q!GGGH%%%59TT444@eV$$$(^^ 	)rWWYYFMM%(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   &+DD"%D"zneed a debug buildrW  c                ^    t          j        d          }|                     |d|           d S )Nz
            import unittest

            GLOBAL_LIST = []

            class RefLeakTest(unittest.TestCase):
                def test_leak(self):
                    GLOBAL_LIST.append(object())
        
referencesrV  rG  rH  ra  )r"   rW  rO  s      r   check_huntrleakszArgsTestCase.check_huntrleaks  s:          	lDDDDDr   c                 2    |                      d           d S NFrV  re  r   s    r   r   zArgsTestCase.test_huntrleaks  s    %00000r   c                 2    |                      d           d S NTrV  rh  r   s    r   test_huntrleaks_mpzArgsTestCase.test_huntrleaks_mp  s    $/////r   c                    t          j        d          }|                     d|          }d}|                     t          j        |           ddd|g} | j        |t          t          j	        d}| 
                    d	| |           | 
                    d	| d
|           | 
                    d|           | 
                    d| d|           d S )Nay  
            import unittest

            GLOBAL_LIST = []

            class RefLeakTest(unittest.TestCase):
                def test1(self):
                    pass

                def test2(self):
                    pass

                def test3(self):
                    GLOBAL_LIST.append(object())

                def test4(self):
                    pass
        r   r  r   r   rY  r  r[  zBisect z: exit code 0zBisection completed inzTests (1):
* z.RefLeakTest.test3
)rG  rH  rQ  r   r   r   r  r&  r  r  r    )r"   rO  r  r   r^  rX  s         r   test_huntrleaks_bisectz#ArgsTestCase.test_huntrleaks_bisect  s        & 488	((333vz48):'1'8: : : 	&&&///3333V<<< 	.777,, , ,	 	 	 	 	r   c                 Z    t          j        d          }|                     |d           d S )Na  
            import os
            import unittest

            class FDLeakTest(unittest.TestCase):
                def test_leak(self):
                    fd = os.open(__file__, os.O_RDONLY)
                    # bug: never close the file descriptor
        zfile descriptorsrd  )r"   rO  s     r   test_huntrleaks_fd_leakz$ArgsTestCase.test_huntrleaks_fd_leak  s7          	011111r   c                       fdt          d          D             }  j        dg|R  }                     |                                                                |           d S )Nc                 8    g | ]}                                 S r/  r  )rh  r  r"   s     r   r  z0ArgsTestCase.test_list_tests.<locals>.<listcomp>  s%    666!!##666r   r   r  )r  r  r4   rstripr  )r"   r  rX  s   `  r   test_list_testszArgsTestCase.test_list_tests  sv    6666U1XX66677773355	  	  	  	  	 r   c                 v   t          j        d          }|                     |          }d|z  d|z  g}|                     d|          }|                     |                                |           d|z  g}|                     ddd|          }|                     |                                |           d S )Nz
            import unittest

            class Tests(unittest.TestCase):
                def test_method1(self):
                    pass
                def test_method2(self):
                    pass
        r  z%s.Tests.test_method1z%s.Tests.test_method2z--list-casesr   test_method1)rG  rH  rQ  r  r4   r  )r"   rO  testnameall_methodsrX  s        r   test_list_caseszArgsTestCase.test_list_cases  s         ###.. /9.9;99**,,k::: /9: $n (* * 	**,,k:::::r   c                     d}|                      d|          }|g} | j        dg|R dt          i}|                     |||dd           d S )	Nz,import faulthandler; faulthandler._sigsegv()crashr3  rO  rM  r  Tr   rp  ru  r  )rQ  r  r&  r  )r"   rO  
crash_testr  rX  s        r   test_crashedzArgsTestCase.test_crashed  s|     >%%7%>>
JJJJ8IJJ!!&%
+/q 	" 	: 	: 	: 	: 	:r   c                     t          j        dt           j                  }d |                    |          D             S )Nz^(test[^ ]+).*ok$flagsc                 8    g | ]}|                     d           S )rF   re  rg  s     r   r  z.ArgsTestCase.parse_methods.<locals>.<listcomp>  s"    CCC5ACCCr   )rS  r^  rU  rl  )r"   rX  rW  s      r   parse_methodszArgsTestCase.parse_methods  s9    
.blCCCCCENN6,B,BCCCCr   c                    t          j        d          }|                     |          }t          j        }|                     t          j        |           dd|z  g}t          |d          5 }|D ]}t          ||           	 d d d            n# 1 swxY w Y   | 	                    dd||          }| 
                    |          }d	d
g}|                     ||           d S )NV  
            import unittest

            class Tests(unittest.TestCase):
                def test_method1(self):
                    pass
                def test_method2(self):
                    pass
                def test_method3(self):
                    pass
                def test_method4(self):
                    pass
        r  ru  %s.Tests.test_method3r   r   rE   r   test_method2test_method4)rG  rH  rQ  r   r   r   r   r   r   r  r  r4   )	r"   rO  rv  r   subsetr   r3  rX  methodss	            r   test_ignorefilezArgsTestCase.test_ignorefile  sE        ###.. #	((333 #h.	0
 (C   	%B % %d$$$$$%	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% nhII$$V,, .1&)))))s   .BBBc                 V   t          j        d          }g d}|                     |          }|                     d|          }|                     |          }|                     ||           t          j        }|                     t          j	        |           dd|z  g}t          |d          5 }|D ]}	t          |	|           	 d d d            n# 1 swxY w Y   |                     dd	||          }|                     |          }dd
g}|                     ||           d S )Nr  )ru  r  test_method3r  r  rE   ru  r  r   r   r   r  )rG  rH  rQ  r  r  r4   r   r   r   r   r   r   )
r"   rO  rw  rv  rX  r  r   r  r   r3  s
             r   test_matchfilezArgsTestCase.test_matchfileA  s       7 7 7###.. h//$$V,,+... #	((333 #h.	0
 (C   	%B % %d$$$$$%	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% mXxHH$$V,, .1&)))))s   3CCCc           
         t          j        d          }|                     |          }|                     |          }|                     ||g|d           |                     d|t
                    }|                     ||g|dd           |                     d	|          }|                     ||g|t          |d d
          d           d S )Nz
            import unittest

            class Tests(unittest.TestCase):
                def test_env_changed(self):
                    open("env_changed", "w").close()
        r  rF   )rq  r  --fail-env-changedr3  Trq  r   r  rK   rU  r   )rq  rL   r  )rG  rH  rQ  r  r  EXITCODE_ENV_CHANGEDr2  r"   rO  rv  rX  s       r   test_env_changedzArgsTestCase.test_env_changedj  s!        ###.. ))!!&8*.6a 	" 	A 	A 	A  4h)=   ? ?!!&8*(37q 	" 	B 	B 	B 	844!!&8*.6(-h486:)< )< )< )* 	" 	+ 	+ 	+ 	+ 	+r   c           	         t          j        d          }|                     |          }|                     d|t                    }|                     ||gt          |dd          t          dd	          
           d S )Na  
            import unittest

            class Tests(unittest.TestCase):
                def test_succeed(self):
                    return

                def test_fail_always(self):
                    # test that always fails
                    self.fail("bug")
        r  rK   r3  test_fail_alwaysF)r4  r   r   rL   r  )rG  rH  rQ  r  r&  r  r2  r   r  s       r   test_rerun_failzArgsTestCase.test_rerun_fail  s     
  
 
 ###..	8>OPP!!&8*(-h.@6;)= )= )= )2!Q	 	" 	9 	9 	9 	9 	9r   c           	         t           j                            d          }|                     t          j        |           |                     t           j                            |                     t          j	        d|d          }| 
                    |          }|                     d|d          }|                     ||gt          |dd	
          t          dd                     t	          j        |           |                     dd|t                    }|                     ||gt          |dd	
          t          dd                     t	          j        |           d S )Nregrtest_marker_filenamezW
            import os.path
            import unittest

            marker_filename = aD  

            class Tests(unittest.TestCase):
                def test_succeed(self):
                    return

                def test_fail_once(self):
                    if not os.path.exists(marker_filename):
                        open(marker_filename, "w").close()
                        self.fail("bug")
        r  rK   r   r3  test_fail_onceTrU  r   rF   r  z--fail-rerun)r   r   r   r   r   r   ri   existsrG  rH  rQ  r  r  r2  r   EXITCODE_RERUN_FAIL)r"   marker_filenamerO  rv  rX  s        r   test_rerun_successzArgsTestCase.test_rerun_success  s   '//*DEE	(/:::88999    /	        ###.. 	8a@@!!&8*(-h4D6:)< )< )< )2!Q	 	" 	9 	9 	9
 	))) 	>8)<   > >!!&8*(-h4D6:)< )< )< )2!Q	 	" 	9 	9 	9
 	)))))r   c           
          t          j        d          }|                     |          }|                     d|t                    }|                     |||gt          |dd          d	           d S )
Na  
            import unittest

            class ExampleTests(unittest.TestCase):
                @classmethod
                def setUpClass(self):
                    raise RuntimeError('Fail')

                def test_success(self):
                    return
        r  rK   r3  ExampleTestsFrU  r   rp  rL   r  rG  rH  rQ  r  r&  r  r2  r  s       r   #test_rerun_setup_class_hook_failurez0ArgsTestCase.test_rerun_setup_class_hook_failure       
  
 
 ###..	8>OPP!!&(*2(-h4B6;)= )= )= )* 	" 	+ 	+ 	+ 	+ 	+r   c           
          t          j        d          }|                     |          }|                     d|t                    }|                     |||gt          |dd          d	           d S )
Na  
            import unittest

            class ExampleTests(unittest.TestCase):
                @classmethod
                def tearDownClass(self):
                    raise RuntimeError('Fail')

                def test_success(self):
                    return
        r  rK   r3  r  FrU  r   r  r  r  s       r   &test_rerun_teardown_class_hook_failurez3ArgsTestCase.test_rerun_teardown_class_hook_failure  r  r   c           
          t          j        d          }|                     |          }|                     d|t                    }|                     |||gt          |d d          d           d S )	Nz
            import unittest

            def setUpModule():
                raise RuntimeError('Fail')

            class ExampleTests(unittest.TestCase):
                def test_success(self):
                    return
        r  rK   r3  FrU  r   r  r  r  s       r   $test_rerun_setup_module_hook_failurez1ArgsTestCase.test_rerun_setup_module_hook_failure  s     	  	 	 ###..	8>OPP!!&(*2(-h486;)= )= )= )* 	" 	+ 	+ 	+ 	+ 	+r   c           
          t          j        d          }|                     |          }|                     d|t                    }|                     ||g|gt          |d d          d           d S )	Nz
            import unittest

            def tearDownModule():
                raise RuntimeError('Fail')

            class ExampleTests(unittest.TestCase):
                def test_success(self):
                    return
        r  rK   r3  FrU  r   r  r  r  s       r   'test_rerun_teardown_module_hook_failurez4ArgsTestCase.test_rerun_teardown_module_hook_failure  s     	  	 	 ###..	8>OPP!!&8**2(-h486;)= )= )= )* 	" 	+ 	+ 	+ 	+ 	+r   c           
          t          j        d          }|                     |          }|                     d|t                    }|                     |||gt          |dd          d	           d S )
Nz
            import unittest

            class ExampleTests(unittest.TestCase):
                def setUp(self):
                    raise RuntimeError('Fail')

                def test_success(self):
                    return
        r  rK   r3  r  FrU  r   r  r  r  s       r   test_rerun_setup_hook_failurez*ArgsTestCase.test_rerun_setup_hook_failure#       	  	 	 ###..	8>OPP!!&(*2(-h4B6;)= )= )= )* 	" 	+ 	+ 	+ 	+ 	+r   c           
          t          j        d          }|                     |          }|                     d|t                    }|                     |||gt          |dd          d	           d S )
Nz
            import unittest

            class ExampleTests(unittest.TestCase):
                def tearDown(self):
                    raise RuntimeError('Fail')

                def test_success(self):
                    return
        r  rK   r3  r  FrU  r   r  r  r  s       r    test_rerun_teardown_hook_failurez-ArgsTestCase.test_rerun_teardown_hook_failure9  r  r   c           	          t          j        d          }|                     |          }|                     d|t                    }|                     ||t          |dd          d	           d S )
Na  
            import unittest

            class ExampleTests(unittest.IsolatedAsyncioTestCase):
                async def asyncSetUp(self):
                    raise RuntimeError('Fail')

                async def test_success(self):
                    return
        r  rK   r3  r  FrU  r   r  r  r  s       r   #test_rerun_async_setup_hook_failurez0ArgsTestCase.test_rerun_async_setup_hook_failureO  s     	  	 	 ###..	8>OPP!!&((-h4B6;)= )= )= )*	 	" 	+ 	+ 	+ 	+ 	+r   c           
          t          j        d          }|                     |          }|                     d|t                    }|                     |||gt          |dd          d	           d S )
Na  
            import unittest

            class ExampleTests(unittest.IsolatedAsyncioTestCase):
                async def asyncTearDown(self):
                    raise RuntimeError('Fail')

                async def test_success(self):
                    return
        r  rK   r3  r  FrU  r   r  r  r  s       r   &test_rerun_async_teardown_hook_failurez3ArgsTestCase.test_rerun_async_teardown_hook_failured  r  r   c                     t          j        d          }|                     |          }|                     |ddt                    }|                     ||g|dd           d S 	N
            import unittest

            class Tests(unittest.TestCase):
                def test_bug(self):
                    pass
        r  r   
nosuchtestr3  r   Trs  r  rw  rG  rH  rQ  r  r-  r  r  s       r   test_no_tests_ranzArgsTestCase.test_no_tests_ranz  s         ###..$)>   @ @!!&8*/7()D 	" 	: 	: 	: 	: 	:r   c                     t          j        d          }|                     |          }|                     |          }|                     ||gt          dd                     d S )Nz
            import unittest

            class Tests(unittest.TestCase):
                def test_skipped(self):
                    self.skipTest("because")
        r  rF   )ro  r  )rG  rH  rQ  r  r  r   r  s       r   test_no_tests_ran_skipz#ArgsTestCase.test_no_tests_ran_skip  s         ###..))!!&8*(1!Q(?(?(? 	" 	A 	A 	A 	A 	Ar   c                     t          j        d          }|                     |          }|                     |          }|                     ||ddt                    }|                     |||g||gdd           d S r  r  )r"   rO  rv  	testname2rX  s        r   ,test_no_tests_ran_multiple_tests_nonexistentz9ArgsTestCase.test_no_tests_ran_multiple_tests_nonexistent  s         ###..$$$$//	)T<)>   @ @!!&8Y*?08)/D()D 	" 	: 	: 	: 	: 	:r   c           	          t          j        d          }|                     |          }t          j        d          }|                     |          }|                     ||ddddd          }|                     |||g|gd	d
           d S )Nr  r  z
            import unittest

            class Tests(unittest.TestCase):
                def test_other_bug(self):
                    pass
        r   r  test_other_bugr   r3  rF   Tr  r  )r"   rO  rv  
other_coder  rX  s         r   )test_no_test_ran_some_test_exist_some_notz6ArgsTestCase.test_no_test_ran_some_test_exist_some_not  s         ###.._ &  
 $$*$55	)T< $&6   D D!!&8Y*?08z()D 	" 	: 	: 	: 	: 	:r   c                     t          j        d          }|                     |          }|                     d|t                    }|                     ||g|gdd           d S )Na  
            import _testcapi
            import gc
            import unittest

            @_testcapi.with_tp_del
            class Garbage:
                def __tp_del__(self):
                    pass

            class Tests(unittest.TestCase):
                def test_garbage(self):
                    # create an uncollectable object
                    obj = Garbage()
                    obj.ref_cycle = obj
                    obj = None
        r  r  r3  TrF   r  )rG  rH  rQ  r  r  r  r  s       r   test_uncollectablezArgsTestCase.test_uncollectable  s        " ###.. 4h)=   ? ?!!&8*/7j37() 	" 	+ 	+ 	+ 	+ 	+r   c                 6   t          j        d          }|                     |          }|                     dd|t                    }|                     ||g|d           |                     |t          j        d|z  t          j	                             d S )	Naa  
            import time
            import unittest
            try:
                import faulthandler
            except ImportError:
                faulthandler = None

            class Tests(unittest.TestCase):
                # test hangs and so should be stopped by the timeout
                def test_sleep(self):
                    # we want to test regrtest multiprocessing timeout,
                    # not faulthandler timeout
                    if faulthandler is not None:
                        faulthandler.cancel_dump_traceback_later()

                    time.sleep(60 * 5)
        r  rM  z--timeout=1.0r3  r   r$  z%s timed out)
rG  rH  rQ  r  r&  r  r_  rS  r^  rU  r  s       r   test_multiprocessing_timeoutz)ArgsTestCase.test_multiprocessing_timeout  s        $ ###..):   < <!!&8*)1 	" 	< 	< 	<NX$=r|LL	N 	N 	N 	N 	Nr   c                 &   t          j        d          }|                     |          }|                     dd|t                    }|                     ||g|gdd           |                     d	|           |                     d
|           d S )Na  
            import unittest
            import weakref
            from test.support import captured_stderr

            class MyObject:
                pass

            def weakref_callback(obj):
                raise Exception("weakref callback bug")

            class Tests(unittest.TestCase):
                def test_unraisable_exc(self):
                    obj = MyObject()
                    ref = weakref.ref(obj, weakref_callback)
                    with captured_stderr() as stderr:
                        # call weakref_callback() which logs
                        # an unraisable exception
                        obj = None
                    self.assertEqual(stderr.getvalue(), '')
        r  r  rE   r3  TrF   r  zWarning -- Unraisable exceptionzException: weakref callback bugrG  rH  rQ  r  r  r  r    r  s       r   test_unraisable_excz ArgsTestCase.test_unraisable_exc  s         * ###.. 4dH)=   ? ?!!&8*/7j37() 	" 	+ 	+ 	+ 	7@@@7@@@@@r   c                 &   t          j        d          }|                     |          }|                     dd|t                    }|                     ||g|gdd           |                     d	|           |                     d
|           d S )Na[  
            import threading
            import unittest
            from test.support import captured_stderr

            class MyObject:
                pass

            def func_bug():
                raise Exception("bug in thread")

            class Tests(unittest.TestCase):
                def test_threading_excepthook(self):
                    with captured_stderr() as stderr:
                        thread = threading.Thread(target=func_bug)
                        thread.start()
                        thread.join()
                    self.assertEqual(stderr.getvalue(), '')
        r  r  rE   r3  TrF   r  z$Warning -- Uncaught thread exceptionzException: bug in threadr  r  s       r   test_threading_excepthookz&ArgsTestCase.test_threading_excepthook  s         & ###.. 4dH)=   ? ?!!&8*/7j37() 	" 	+ 	+ 	+ 	<fEEE0&99999r   c           	      V   t          j        d          }|                     |          }d}dD ]y}|                     |          5  d||g} | j        |dt
          i}|                     ||g|gdd	
           |                     ||           d d d            n# 1 swxY w Y   zd S )Na%  
            import sys
            import unittest
            from test import support

            class MyObject:
                pass

            def func_bug():
                raise Exception("bug in thread")

            class Tests(unittest.TestCase):
                def test_print_warning(self):
                    print("msg1: stdout")
                    support.print_warning("msg2: print_warning")
                    # Fail with ENV CHANGED to see print_warning() log
                    support.environment_altered = True
        r  zFtest_print_warning.*msg1: stdout\nWarning -- msg2: print_warning\nok\n)rE   rP   )optionr  r  TrF   r  )rG  rH  rQ  r)   r  r  r  r_  )r"   rO  rv  rW  r  r^  rX  s          r   test_print_warningzArgsTestCase.test_print_warning=  s'        $ ###.. # 	0 	0FV,, 0 0+VX>'L7KLL))&8*7?j;?01 * 3 3 3   ///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0 	0s   A
BB!	$B!	c                     t           j                            t          j                  }|                     |t          j         d           |                                r|                     d           d S d S )Nz not setzModified guard)r   r  getr   UNICODE_GUARD_ENVr   isasciirN  )r"   guards     r   test_unicode_guard_envz#ArgsTestCase.test_unicode_guard_envf  so    
u677Uu'>$H$H$HIII==?? 	, MM*+++++	, 	,r   c                    t           j                            | j        d          }t          j        |           t           j                            | j        d          }t          |d                                           ||g}ddd| j        z  dg}|                     |           |D ]5}|                     t           j        	                    |          |           6d S )Ntest_python_123test_python_456wbr   r  z--tempdir=%sz	--cleanup)
r   r   r   r@  mkdirr   closer  ri   r  )r"   r<  r   r  r  r3  s         r   test_cleanupzArgsTestCase.test_cleanupn  s    ',,t0ABB
7<<1BCCXt""$$$(#!DO3  	    	9 	9DRW^^D1148888	9 	9r   z.checking temp files is not implemented on WASIc           
      (    t          j        d           fdt          d          D             }  j        dddg|R dt          i}                     |||ddt          |          	           |D ]}                     d
| d|           d S )Nam  
            import os.path
            import tempfile
            import unittest

            class FileTests(unittest.TestCase):
                def test_leak_tmp_file(self):
                    filename = os.path.join(tempfile.gettempdir(), 'mytmpfile')
                    with open(filename, "wb") as fp:
                        fp.write(b'content')
        c                 <    g | ]}                                S r  r  rh  _rO  r"   s     r   r  z3ArgsTestCase.test_leak_tmp_file.<locals>.<listcomp>  s*    CCCQT%%4%00CCCr   r   r  rE   rM  r  T)rq  r   ru  r  zWarning -- z& leaked temporary files (1): mytmpfile)rG  rH  r  r  r  r  r  r    )r"   	testnamesrX  rv  rO  s   `   @r   test_leak_tmp_filezArgsTestCase.test_leak_tmp_file}  s      
  
 
 DCCCC%((CCC	 4dE ?I ? ? ?)=? ?!!&).737+/(+I	 	" 	8 	8 	8
 " 	" 	"HMM 2 2 2 2 " " " "	" 	"r   c                    t           j        dk    rt          j                    }n;t           j        j        }|(t           j        j        }||                     d           t          d t          dd          D                       }d|fz  }d}||
                    d          z  }	 |                    |           |                     | d	           n# t          $ r Y nw xY w|                    |d
          }t          j        d|d          }|                     |          }|                     ddd|          }|                     ||gdd           |                     ||d           d S )Nr  z#cannot get regrtest worker encodingc              3      K   | ]}|V  d S r   r/  )rh  chs     r   ri  z8ArgsTestCase.test_worker_decode_error.<locals>.<genexpr>  s"      66666666r         s   nonascii:%s
z*Assertion failed: tstate_is_alive(tstate)
z	utf-16-lez can decode non-ASCII bytesbackslashreplacez
            import sys
            import unittest

            class Tests(unittest.TestCase):
                def test_pass(self):
                    pass

            # bytes which cannot be decoded from UTF-8
            corrupted_output = ze
            sys.stdout.buffer.write(corrupted_output)
            sys.stdout.buffer.flush()
        r  r  rE   rZ  TrF   )ru  r  F)rW  )r  r  localegetencodingr  rE  
__stdout__rN  bytesr  encodedecodeUnicodeDecodeErrorrG  rH  rQ  r  r  ra  )	r"   rE  nonasciicorrupted_outputassertion_failedexpected_linerO  rv  rX  s	            r   test_worker_decode_errorz%ArgsTestCase.test_worker_decode_error  s   <7"")++HHz*H>2#MM"GHHH66eCoo66666+xk9 I,33K@@@	D##H--- MMXBBBCCCC " 	 	 	D	
 )//:LMM   !1        ###.. 4dE8LL!!&8*+/() 	" 	+ 	+ 	+ 	U;;;;;s   (C 
C#"C#c                     t          j        d          }|                     |          }|                     ddd|t                    }|                     ||g|gdt          ddd	          
           d S )NaX  
            import doctest
            import sys
            from test import support

            def my_function():
                """
                Pass:

                >>> 1 + 1
                2

                Failure:

                >>> 2 + 3
                23
                >>> 1 + 1
                11

                Skipped test (ignored):

                >>> id(1.0)  # doctest: +SKIP
                7948648
                """

            def load_tests(loader, tests, pattern):
                tests.addTest(doctest.DocTestSuite())
                return tests
        r  r  rE   rZ  r3  TrF   r   r|  r%  r  s       r   test_doctestzArgsTestCase.test_doctest  s        : ###.. 4dE8):   < <!!&8**2+/(1!Q(:(: 	" 	< 	< 	< 	< 	<r   c                    
 t          j        d          

 fdt          dd          D             }d}dd| g}|r%|                    dt	          |                      |                    |             j        | }t          j        |           d	 t          d
          D             }d| }d}t          j
        ||t          j                  }	                     |	|gt	          |          z             d S )Na   
            import random
            import unittest

            class RandomSeedTest(unittest.TestCase):
                def test_randint(self):
                    numbers = [random.randint(0, 1000) for _ in range(10)]
                    print(f"Random numbers: {numbers}")
        c                 D    g | ]}                     d |           S )r7  r{  r  r  s     r   r  z3ArgsTestCase._check_random_seed.<locals>.<listcomp>  sE     ) ) ) !!'8Q'8'8t!DD ) ) )r   rF   r   iJ3rc   r4  r   c                 8    g | ]}t          j        d d          S )r   r   )r2  randint)rh  r  s     r   r  z3ArgsTestCase._check_random_seed.<locals>.<listcomp>
  s$    >>>q6>!T**>>>r   r  zRandom numbers: z^Random numbers: .*$r  )rG  rH  r  r  r  r  r  r2  seedrS  findallrU  r4   )r"   rW  r  rk   r^  rX  numbersr   rW  matchesrO  s   `         @r   _check_random_seedzArgsTestCase._check_random_seed  s2        ) ) ) ) )3--) ) ) "9K99: 	*JJ(CJJ(()))

5%K    ?>E"II>>>/g//'*UF",???8*s5zz"9:::::r   c                 2    |                      d           d S rg  r  r   s    r   test_random_seedzArgsTestCase.test_random_seed  s    E22222r   c                 2    |                      d           d S rj  r  r   s    r   test_random_seed_workersz%ArgsTestCase.test_random_seed_workers  s    D11111r   c                     t          j        d           fdt          d          D             }t          j        ddg}t          j        |          }  j        d|dg|R  }                     ||t          |          d	           d S )
Nz
            import sys
            import unittest

            class WorkerTests(unittest.TestCase):
                def test_dev_mode(self):
                    self.assertTrue(sys.flags.dev_mode)
        c                 <    g | ]}                                S r  r  r  s     r   r  z4ArgsTestCase.test_python_command.<locals>.<listcomp>   s*    ???!!t!,,???r   r   r  r  r  z-j0Tr  ru  )
rG  rH  r  r  r  shlexr   r  r  r  )r"   r  r  rX  rO  s   `   @r   test_python_commandz ArgsTestCase.test_python_command  s         @????eAhh??? ndE2
 Z
++

JFFFF!!&%(+E

T 	" 	C 	C 	C 	C 	Cr   c                    t           j                            t           j                            t                    dd          }d dD             }ddddd	d
|z  g|}|                     |          }|                     ||d           d S )Nregrtestdataimport_from_testsc                     g | ]}d | S )r9  r/  rh  r3  s     r   r  z2ArgsTestCase.test_unload_tests.<locals>.<listcomp>:  s!    EEET($((EEEr   )abcr  r  r  r   r  r  r   r  )r   r   r   r<  r=  r  r  )r"   r   r  r   rX  s        r   test_unload_testszArgsTestCase.test_unload_tests,  s     ',,rwx88-/BD DEE_EEEtUD&.72JSUS&&!!&%q!99999r   c                    t          j        d          }|                     |          }t          j        dd|d| j         |g}t          j        |t          j        t          j	        d          }| 
                    |j        d|           d S )	Na)  
            import sys
            import unittest
            from test import support
            try:
                from _testinternalcapi import get_config
            except ImportError:
                get_config = None

            # WASI/WASM buildbots don't use -E option
            use_environment = (support.is_emscripten or support.is_wasi)

            class WorkerTests(unittest.TestCase):
                @unittest.skipUnless(get_config is None, 'need get_config()')
                def test_config(self):
                    config = get_config()['config']
                    # -u option
                    self.assertEqual(config['buffered_stdio'], 0)
                    # -W default option
                    self.assertTrue(config['warnoptions'], ['default'])
                    # -bb option
                    self.assertTrue(config['bytes_warning'], 2)
                    # -E option
                    self.assertTrue(config['use_environment'], use_environment)

                def test_python_opts(self):
                    # -u option
                    self.assertTrue(sys.__stdout__.write_through)
                    self.assertTrue(sys.__stderr__.write_through)

                    # -W default option
                    self.assertTrue(sys.warnoptions, ['default'])

                    # -bb option
                    self.assertEqual(sys.flags.bytes_warning, 2)

                    # -E option
                    self.assertEqual(not sys.flags.ignore_environment,
                                     use_environment)
        r  r   r  z
--testdir=T)r  r   r  r   )rG  rH  rQ  r  r  r@  r  r  r  r  r4   r  )r"   r  rO  rv  r^  r  s         r   check_add_python_optsz"ArgsTestCase.check_add_python_opts?  s     '  ' 'P ###.. ~VV-DO-- ~c%/_%/%6#') ) ) 	!T22222r   c                     dD ]E}|                      |          5  |                     |           d d d            n# 1 swxY w Y   Fd S )N)r  r  r'   )r)   r  )r"   r(   s     r   test_add_python_optsz!ArgsTestCase.test_add_python_optsv  s    - 	0 	0C#&& 0 0**3///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0 	0s   =A	A	z(raising SIGSEGV on Android is unreliablec                 8   	 ddl m} n%# t          $ r |                     d           Y nw xY wt	          j        d          }|                     |          }t          t          j	                  }d}t          j        ||           |                     d|t          |          }|                     |||gdd	
           t          j        s4t!          t"          j                   }|                     d| d|           |                     |dd	d           d S )Nr   )_sigsegvzneed faulthandler._sigsegvak  
            import faulthandler
            import unittest
            from test import support

            class CrashTests(unittest.TestCase):
                def test_crash(self):
                    print("just before crash!", flush=True)

                    with support.SuppressCrashReport():
                        faulthandler._sigsegv(True)
        r  zhandle_segv=0rZ  r5  T)rp  r  ru  z
Exit code z
 (SIGSEGV)zjust before crash!F)r`  rW  )r  r  ImportErrorrN  rG  rH  rQ  r  r   r  r   set_sanitizer_env_varr  r&  r  
MS_WINDOWSrm   signalSIGSEGVr    ra  )r"   r  rO  rv  rn   r  rX  r  s           r   test_worker_output_on_failurez*ArgsTestCase.test_worker_output_on_failure|  sY   	8------- 	8 	8 	8MM677777	8      ###.. 2: %c6222x):$'   ) ) 	!!&(*2()D 	" 	: 	: 	: ! 	EFN+++HMM;x;;;VDDD 44uMMMMMs   	 ++c                    t          j        d          }|                     |          }|                     d|          }|                     ||d           |                     d|           t          j        rJ|                     ddd	d|          }|                     ||dd
           |                     d|           d S d S )Nz
            import unittest
            from test import support

            class VerboseTests(unittest.TestCase):
                def test_pass(self):
                    print("SPAM SPAM SPAM")
        r  rQ   rF   r  zSPAM SPAM SPAMr   z3:3rZ  Tr	  )rG  rH  rQ  r  r  assertNotInr   r  r  s       r   rS   zArgsTestCase.test_verbose3  s         ###.. h77!!&(!!<<<)6222  	7^^D%hOOF%%fha$%OOO-v66666		7 	7r   N)Hr*  r+  r,  r-  r  r  r!  r(  r0  r7  r{   rG  r]   rN  r   r=   r   ra  r  r  r   r  r6  re  r   rk  rm  ro  rs  rx  cpython_onlyr~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  skipIfis_wasir  r  r  r  r  r  r  r  r  r  
is_androidr   rS   r/  r   r   r  r  v  s        . . .8 8 8(+ + +9 9 9"+ + +>36 36 36j/> /> />b= = =' ' '/ / /&' ' '= = = 0  0  0D 5: ) ) ) ) )0 X)+?@@Et E E E A@E1 1 10 0 0 X)+?@@& & A@&P X)+?@@2 2 A@2     ; ; ;4 : : :D D D *  *  *D'* '* '*R+ + +<9 9 9,)* )* )*V+ + +.+ + +.+ + +,+ + +,+ + +,+ + +,+ + +*+ + +,: : : A A A: : :": : :0 + + +6N N N8!A !A !AF: : :B'0 '0 '0R, , ,9 9 9 X_W_EG G" "G G"4-< -< -<^%< %< %<N ;d  ;  ;  ;  ;D3 3 32 2 2C C C*: : :&53 53 53n0 0 0 X_W'?A A"N "NA A"NH7 7 7 7 7r   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )	TestUtilsc                 &   |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d	          d
           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           d S )Nr   z0 msg&.>z1 msg{Gz?z10 msg      ?z1.5 secrF   z1.0 secx   z2 miny   z2 min 1 seci0*  z3 houri*  z3 hour 2 mini1*  z3 hour 1 sec)r4   r   format_durationr   s    r   test_format_durationzTestUtils.test_format_duration  s   .q11	! 	! 	!.t44	! 	! 	!.u55 	" 	" 	".s33"	$ 	$ 	$.q11"	$ 	$ 	$.v66 	" 	" 	".z::&	( 	( 	(.x88!	# 	# 	#./EFF'	) 	) 	).|<<'	) 	) 	) 	) 	)r   c                 V   t           }|                      |d          d           |                      |dd          d           |                      |dd          d           |                      |d	d                     |                      |d
d                     d S )Nz0test_access (test.test_os.FileTests.test_access)test_accessz(setUpClass (test.test_os.ChownFileTests)T)is_errorChownFileTestsz6test_success (test.test_bug.ExampleTests.test_success)r  zsetUpModule (test.test_x)z!tearDownModule (test.test_module))r   r4   r   )r"   	normalizes     r   test_normalize_test_namez"TestUtils.test_normalize_test_name  s    '	#UVV&	( 	( 	(#MX\]]])	+ 	+ 	+#[fjkkk'	) 	) 	)))$?$OOOPPP))$GRVWWWXXXXXr   c                     t          t          j                   dft          t          j                   dfddfD ].\  }}|                     t          j        |          ||           /d S )NSIGINTr  )l       STATUS_ACCESS_VIOLATION)l       STATUS_STACK_OVERFLOW)rm   r  r5  r  r4   r   get_signal_name)r"   r  r   s      r   test_get_signal_namezTestUtils.test_get_signal_name  s~    &-   (+&.!!!9-31	#
 	R 	RHh U28<<hQQQQ	R 	Rr   c                    t           j        }t           j        }|                      |d          d           |                      |d          d           |                      ||          d           |                      |t	          d |D                                 d           |                      |g |dR           d	           d S )
N)r   zresources (1): network)r*  decimalr   z$resources (3): audio,decimal,networkzresources: allc              3   &   K   | ]}|d k    |V  dS )r  Nr/  r  s     r   ri  z2TestUtils.test_format_resources.<locals>.<genexpr>  s3       #5 #5D&*emm $(&3mmm#5 #5r   zresources: all,-cpur   zresources: all,tzdata)r   format_resourcesr   r4   tuple)r"   r=  r   s      r   test_format_resourceszTestUtils.test_format_resources  s*    1+\**$	& 	& 	& 	<==2	4 	4 	4 	]++	 	 	 	U #5 #5M #5 #5 #5 5 5 6 6!	# 	# 	# 	7}7h7788#	% 	% 	% 	% 	%r   c                     G d d          }t                      }|                     t          |            |d          } |d          } |d          }t          j        t          dd          5  t          g            |                     t          |                     |                     t          |                     t          d            |                     t          |                     |                     t          |                     t          |                                dfg           |                     t          |                     |                     t          |                     t          d	g           |                     t          |                     |                     t          |                     |                     t          |                     t          d
g           |                     t          |                     |                     t          |                     t          dg           |                     t          |                     t          dg           |                     t          |                     t          dg           |                     t          |                     |                     t          |                     |                     t          |                     t          |                                df|                                dfg           |                     t          |                     |                     t          |                     |                     t          |                     t          ddg           |                     t          |                     |                     t          |                     d d d            n# 1 swxY w Y   t          j        t          dd          5  t          |                                dfg           |                     t          |                     |                     t          |                     t          dg           |                     t          |                     |                     t          |                     |                     t          |                     t          dg           |                     t          |                     |                     t          |                     t          dg           |                     t          |                     t          dg           |                     t          |                     t          dg           |                     t          |                     |                     t          |                     |                     t          |                     t          |                                df|                                dfg           |                     t          |                     |                     t          |                     |                     t          |                     t          ddg           |                     t          |                     |                     t          |                     d d d            n# 1 swxY w Y   t          j        t          dd          5  t          ddg           |                     t          |                     |                     t          |                     |                     t          |                     t          ddg           |                     t          |                     |                     t          |                     |                     t          |                     d d d            d S # 1 swxY w Y   d S )Nc                       e Zd Zd Zd ZdS )'TestUtils.test_match_test.<locals>.Testc                     || _         d S r   test_id)r"   rE  s     r   __init__z0TestUtils.test_match_test.<locals>.Test.__init__  s    &r   c                     | j         S r   rD  r   s    r   idz*TestUtils.test_match_test.<locals>.Test.id  s
    |#r   N)r*  r+  r,  rF  rH  r/  r   r   TestrB    s2        ' ' '$ $ $ $ $r   rI  z"test.test_os.FileTests.test_accessz'test.test_os.Win32ErrorTests.test_chdirz#test.test_shutil.TestCopy.test_copy_test_matchersr/  T)test_osT)test_*T)	filetestsT)	FileTestsT)*test_os.*.test_*T)r/  T)	DONTMATCHTF)rK  F)rL  F)rM  F)rN  F)rO  F)r/  F)rP  F)*test_osF)rQ  T)	r	   r   r
   r   	swap_attrr:   r   rH  ri   )r"   rI  patternsr/  
test_chdir	test_copys         r   test_match_testzTestUtils.test_match_test  sO   	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ #$$222d?@@TCDD
D>??	 w(8"== /	5 /	5BOOJ{33444OOJz22333 D!!!OOJ{33444OOJz22333 knn..56777OOJ{33444Z
33444 ./000OOJ{33444OOJz22333Z	22333 -.///OOJ{33444OOJz22333 01222Z4455501222OOJ{33444 89:::OOJ{33444OOJz22333Z	22333 knn..5
7NOPPPOOJ{33444OOJz22333Z	2233324GHIIIOOJ{33444Z
33444_/	5 /	5 /	5 /	5 /	5 /	5 /	5 /	5 /	5 /	5 /	5 /	5 /	5 /	5 /	5d w(8"== %	4 %	4knn..67888Z44555OOJz22333 /0111Z44555Z
33444OOJy11222 ./000Z44555Z
33444 12333OOJ{3344412333Z44555 9:;;;Z44555Z
33444OOJy11222 knn..6%8PQRRRZ44555Z
33444OOJy1122235IJKKKZ44555OOJz22333K%	4 %	4 %	4 %	4 %	4 %	4 %	4 %	4 %	4 %	4 %	4 %	4 %	4 %	4 %	4P w(8"== 		4 		402GHIIIOOJ{33444Z
33444OOJy11222/1GHIIIZ44555OOJz22333Z	22333		4 		4 		4 		4 		4 		4 		4 		4 		4 		4 		4 		4 		4 		4 		4 		4 		4 		4s9   3N'P&&P*-P*L]] ]?C/a;;a?a?N)r*  r+  r,  r-  r3  r9  r?  rV  r/  r   r   r(  r(    sj        ) ) ),	Y 	Y 	YR R R% % %(t4 t4 t4 t4 t4r   r(  __main__)?r-  r   dataclassesr  r   r  os.pathr   r  r2  rS  r
  r  r  r  rL  r>  rG  r  r  r   test.supportr   test.libregrtestr   r   r   r   test.libregrtest.filterr	   r
   r   test.libregrtest.resultr   test.libregrtest.utilsr   has_subprocess_supportSkipTestr   r   r<  r=  r  r   normpathrj  r&  r  r-  r  rE  rH  rD  TestCaser   	dataclassr2  r8  r  r  r  r(  r*  r/  r   r   <module>rd     s             				     				       



              " " " " " " $ $ $ $ $ $ ! ! ! ! ! ! " " " " " " " " " " " " P P P P P P P P P P - - - - - - 6 6 6 6 6 6% ?
(
=
>
>>7<<114>>7??27++H5566E
     "8? $ 	 	 a3 a3 a3 a3 a3) a3 a3 a3H T"""       #"J J J J J8$ J J JZ@ @ @ @ @| @ @ @0jK jK jK jK jK| jK jK jKZA7 A7 A7 A7 A7< A7 A7 A7H*s4 s4 s4 s4 s4! s4 s4 s4l zHMOOOOO r   