
    daff                    ~   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jH                  s ejJ                  d      ejL                  jO                  ejL                  jQ                  e)      dd      Z*ejL                  jW                  ejL                  jY                  e*            Z*dZ-dZ.dZ/dZ0dZ1dZ2 ejf                  d      Z4 G d dejj                        Z6 ejn                  d       G d d             Z8 G d dejj                        Z9 G d de9      Z: G d d e9      Z; G d! d"e9      Z< G d# d$ejj                        Z=e>d%k(  r ej2                          yy)&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                   <   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,d3d*Z-d+ Z.d, Z/d- Z0d. Z1d/ Z2d0 Z3d1 Z4y2)4ParseArgsTestCasezC
    Test regrtest's argument parsing, function _parse_args().
    c                 ,    t        j                  |       S N)r   _parse_args)argss    -/root/Python-3.12.4/Lib/test/test_regrtest.py
parse_argszParseArgsTestCase.parse_args>   s    ""4((    c                    t        j                         5 }| j                  t              5  | j	                  |       d d d        d d d        | j                  |j                                y # 1 sw Y   2xY w# 1 sw Y   6xY wr   )r   captured_stderrassertRaises
SystemExitr   assertIngetvalue)selfr   msgerrs       r   
checkErrorzParseArgsTestCase.checkErrorB   sg    $$& 	"#t/@/@/L 	"OOD!	" 	"c3<<>*	" 	" 	" 	"s!   A:A.A:.A7	3A::Bc           	      j   dD ]  }| j                  |      5  t        j                         5 }| j                  t              5  | j                  |g       d d d        d d d        | j                  dj                                d d d         y # 1 sw Y   <xY w# 1 sw Y   @xY w# 1 sw Y   xY w)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C#& N,,. +#&&z2+OOSE*+ + <cllnM	N N	N+ + + +N Ns:   B)BB	B(B)BBB&"B))B2	c                 n   | j                  ddg      }| j                  |j                  d       dD ]N  }| j                  |      5  | j                  d| g      }| j                  |j                  d        d d d        P | j	                  dgd       | j	                  ddgd	       y # 1 sw Y   xY w)
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S) % 	3EE* 3__
5'&:%;<  T23 3	3
 	'>?e,.FG3 3s   2B++B4	c                 ^    | j                  dg      }| j                  |j                         y )N--wait)r   
assertTruewaitr"   r6   s     r   	test_waitzParseArgsTestCase.test_wait\   s"    __hZ( r   c                     dD ]_  }| j                  |      5  | j                  |dg      }| j                  |j                  d       | j	                  |gd       d d d        a y # 1 sw Y   lxY w)N)z-S--startr'   r3   r2   )r)   r   r4   startr%   r"   r(   r6   s      r   
test_startzParseArgsTestCase.test_start`   sw    " 	@C#& @__c5\2  51'>?@ @	@@ @   AA&&A/	c                    | j                  dg      }| j                  |j                  d       | j                  dg      }| j                  |j                  d       | j                  dg      }| j                  |j                  d       | j                  dgdz        }| j                  |j                  d       | j                  g       }| j                  |j                  d       y )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 ]J  }| j                  |      5  | j                  |g      }| j                  |j                         d d d        L y # 1 sw Y   WxY w)N)z-w--rerunz
--verbose2r'   )r)   r   r:   rerunrA   s      r   
test_rerunzParseArgsTestCase.test_reruns   sY    0 	*C#& *__cU+)* *	** *   .AA	c                     dD ]J  }| j                  |      5  | j                  |g      }| j                  |j                         d d d        L y # 1 sw Y   WxY w)N)-W
--verbose3r'   )r)   r   r:   verbose3rA   s      r   test_verbose3zParseArgsTestCase.test_verbose3y   Y    % 	-C#& -__cU+,- -	-- -rN   c                     dD ]f  }| j                  |      5  | j                  |g      }| j                  |j                         | j	                  |j
                  d       d d d        h y # 1 sw Y   sxY w)N)-q--quietr'   r   )r)   r   r:   quietr4   rH   rA   s      r   
test_quietzParseArgsTestCase.test_quiet   sm    " 	0C#& 0__cU+)  Q/0 0	00 0s   A
A--A6	c                     dD ]J  }| j                  |      5  | j                  |g      }| j                  |j                         d d d        L y # 1 sw Y   WxY w)N)z-o	--slowestr'   )r)   r   r:   
print_slowrA   s      r   test_slowestzParseArgsTestCase.test_slowest   sY    $ 	/C#& /__cU+./ /	// /rN   c                     | j                  dg      }| j                  |j                         | j                  dg      }| j                  |j                         y )Nz--headerrG   )r   r:   headerr<   s     r   test_headerzParseArgsTestCase.test_header   sB    __j\*		"__k]+		"r   c                    dD ]J  }| j                  |      5  | j                  |g      }| j                  |j                         d d d        L t	        j
                         5 }d|d<   | j                  dg      }t        j                  |      }| j                  |j                         | j                  |j                  t               | j                  |j                  d       |d= | j                  dg      }t        j                  |      }| j                  |j                         | j                  |j                  t               d d d        y # 1 sw Y   ]xY w# 1 sw Y   y xY w)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#$-1B}}R(HX//0!!("6"6<X11<@ '(-1B}}R(HOOH../!!("6"6<	= 	=	. .	= 	=s   .E$C)E#E 	#E,c                     | j                  ddg      }| j                  |j                  d       | j                  |j                         | j                  dgd       | j                  ddgd       y )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/%(?@u-/BCr   c                    dD ]t  }| j                  |      5  | j                  |dg      }| j                  |j                  d       | j	                  |gd       | j	                  |ddgd       d d d        v y # 1 sw Y   xY w)N)-f
--fromfiler'   r3   r2   -sdon't go together)r)   r   r4   fromfiler%   rA   s      r   test_fromfilezParseArgsTestCase.test_fromfile   s    % 	IC#& I__c5\2  e4'>?eT 24GH	I I	II Is   AA;;B	c                     dD ]J  }| j                  |      5  | j                  |g      }| j                  |j                         d d d        L y # 1 sw Y   WxY w)N)z-x	--excluder'   )r)   r   r:   excluderA   s      r   test_excludezParseArgsTestCase.test_exclude   Y    $ 	,C#& ,__cU+

+, ,	,, ,rN   c                     dD ]_  }| j                  |      5  | j                  |g      }| j                  |j                         | j	                  |ddgd       d d d        a y # 1 sw Y   lxY w)N)rx   z--singler'   rv   r3   ry   )r)   r   r:   singler%   rA   s      r   test_singlezParseArgsTestCase.test_single   sv    # 	IC#& I__cU+		*dE 24GHI I	II IrC   c                    dD ]`  }| j                  |      5  | j                  |dg      }| j                  |j                  dg       | j	                  |gd       d d d        b dD ]`  }| j                  |      5  | j                  |dg      }| j                  |j                  dg       | j	                  |gd       d d d        b | j                  g d      }| j                  |j                  d	d
g       | j                  g d      }| j                  |j                  d	dg       | j                  g d      }| j                  |j                  dd
g       | j                  t        j                  t        j                         t        t        j                  d      5 }t        d|       t        d|       d d d        t        j                  j                  t        j                        }| j                  ddd|g      }| j                  |j                  g d       | j                  ddd|g      }| j                  |j                  g d       y # 1 sw Y   dxY w# 1 sw Y   xY w# 1 sw Y   xY w)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   sG   " 	@C#& @__c9%56  2C1DE'>?@ @	@ $ 	@C#& @__c9%56  2D1EF'>?@ @	@ __AB*<>P)QR__AB*<>Q)RS__AB*=?Q)RS	(()*:*:;)""C( 	)B,R(,R(	) 77??9#3#34__dG]HEFV	X __dG^XFGY	[?@ @@ @	) 	)s%   AI=AI*&I7I'	*I4	7J c                 >   dD ]  }| j                  |      5  | j                  |dg      }| j                  |j                         | j                  |dg      }| j                  |j                         | j	                  |gd       d d d         y # 1 sw Y   xY w)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C#& N__c4[1,__c4[1,'LMN N	NN Ns   A0BB	c                    dD ]y  }| j                  |      5  | j                  |dg      }| j                  |j                  ddg       | j                  |dg      }| j                  |j                  dg       t	        t
        j                        }|j                  d       | j                  |dg      }| j                  |j                  |       | j                  |gd       | j                  |d	gd
       | j                  |dg      }| j                  |j                  t	        t
        j                        dgz          | j                  |dg      }| j                  |j                  dg       d d d        | y # 1 sw Y   xY w)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   st     	GC#& G__c=%9:  !1!1E93EF__c+=%>?  !1!1I;? 5 56&__c:%67  !1!18<'>?e.@A __c<%89  !1!1!%g&;&;!<z!IK __c+;%<=  !1!14D3EF+G G	GG Gs   EFF	c                     dD ]_  }| j                  |      5  | j                  |dg      }| j                  |j                  d       | j	                  |gd       d d d        a y # 1 sw Y   lxY w)N)z-Mz
--memlimitr'   4Gr2   )r)   r   r4   memlimitr%   rA   s      r   test_memlimitzParseArgsTestCase.test_memlimit  sw    % 	@C#& @__c4[1  d3'>?@ @	@@ @rC   c                     | j                  ddg      }| j                  |j                  t        j                  j                  t        j                  d             | j                  dgd       y )Nz	--testdirr3   r2   )	r   r4   testdirr   r   joinr   SAVEDCWDr%   r<   s     r   test_testdirzParseArgsTestCase.test_testdir  sO    __k512RWW\\)2D2De%LM'>?r   c                     dD ]J  }| j                  |      5  | j                  |g      }| j                  |j                         d d d        L y # 1 sw Y   WxY w)N)z-Lz
--runleaksr'   )r)   r   r:   runleaksrA   s      r   test_runleakszParseArgsTestCase.test_runleaks  rT   rN   c                 |   dD ])  }| j                  |      5  | j                  |dg      }| j                  |j                  d       | j                  |dg      }| j                  |j                  d       | j                  |dg      }| j                  |j                  d       | j                  |d	g      }| j                  |j                  d
       | j	                  |gd       | j	                  |dgd       | j	                  |dgd       | j	                  |dgd       d d d        , y # 1 sw Y   8xY w)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C#& L__c3Z0  0DE__c4[1  0DE__c4[1  0DE__c?%;<  0CD'>?c
 HJf/IJg0JKL L	LL Ls   DD11D;	c                 `   dD ]  }| j                  |      5  | j                  |dg      }| j                  |j                  d       | j	                  |gd       | j	                  |dgd       | j	                  |ddgd	       | j	                  |d
dgd	       d d d         y # 1 sw Y   xY w)N)-jz--multiprocessr'   2r   r2   r3   rs   -Try   r/   )r)   r   r4   use_mpr%   rA   s      r   test_multiprocessz#ParseArgsTestCase.test_multiprocess.  s    ) 	GC#& G__c3Z0  A.'>?e.ABc4 02EFc4 02EFG G	GG Gs   BB$$B-	c                     dD ]J  }| j                  |      5  | j                  |g      }| j                  |j                         d d d        L y # 1 sw Y   WxY w)N)r   
--coverager'   )r)   r   r:   tracerA   s      r   test_coveragezParseArgsTestCase.test_coverage8  sY    % 	*C#& *__cU+)* *	** *rN   c           	      <   dD ]  }| j                  |      5  | j                  |dg      }| j                  |j                  t        j
                  j                  t        j                  d             | j                  |gd       d d d         y # 1 sw Y   xY w)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  !#i.@.@%!HJ'>?	@ @	@@ @s   A/BB	c                     dD ]J  }| j                  |      5  | j                  |g      }| j                  |j                         d d d        L y # 1 sw Y   WxY w)N)z-Nz--nocoverdirr'   )r)   r   assertIsNoner   rA   s      r   test_nocoverdirz!ParseArgsTestCase.test_nocoverdirF  s[    ' 	/C#& /__cU+!!"++./ /	// /rN   c                    dD ]s  }| j                  |      5  | j                  |dg      }| j                  |j                  d       | j	                  |gd       | j	                  |dgd       d d d        u y # 1 sw Y   xY w)N)z-tz--thresholdr'   1000  r2   r3   rs   )r)   r   r4   	thresholdr%   rA   s      r   test_thresholdz ParseArgsTestCase.test_thresholdL  s    & 	CC#& C__c6]3  t4'>?e.AB	C C	CC Cs   AA::B	c                 v   dD ]  }| j                  |      5  t        j                  t        j                               5 }| j                  |g      }d d d        | j                  j                         j                         }| j                  d|       d d d         y # 1 sw Y   QxY w# 1 sw Y   xY w)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  s    & 	PC#& P//> 0&#/B0-oo'I3OP P	P0 0P Ps$   (B/ B#AB/#B,(B//B8	c                     dD ]J  }| j                  |      5  | j                  |g      }| j                  |j                         d d d        L y # 1 sw Y   WxY w)N)z-F	--foreverr'   )r)   r   r:   foreverrA   s      r   test_foreverzParseArgsTestCase.test_forever]  r   rN   c                 *    | j                  dgd       y )Nz--xxxzusage:r%   r"   s    r   test_unrecognized_argumentz,ParseArgsTestCase.test_unrecognized_argumentc  s    	8,r   c                     | j                  dg      }| j                  |j                         | j                  |j                  d       y )Nz--quir   )r   r:   rX   r4   rH   r<   s     r   test_long_option__partialz+ParseArgsTestCase.test_long_option__partialf  s6    __gY'!Q'r   c                     | j                  ddg      }| j                  |j                         | j                  |j                  d       | j                  |j
                         y )NrW   r}   r   )r   r:   rX   r4   rH   r~   r<   s     r   test_two_optionsz"ParseArgsTestCase.test_two_optionsk  sI    __i56!Q'

#r   c                 b    | j                  ddg      }| j                  |j                  d       y )Nr?   r0   )r   r4   r@   r<   s     r   #test_option_with_empty_string_valuez5ParseArgsTestCase.test_option_with_empty_string_valueq  s(    __i_-2&r   c                 b    | j                  dg      }| j                  |j                  dg       y )Nr3   )r   r4   r   r<   s     r   test_argzParseArgsTestCase.test_argu  s(    __eW%5'*r   c                     | j                  ddg      }| j                  |j                         | j                  |j                  d       | j                  |j
                  dg       y )NrW   r3   r   )r   r:   rX   r4   rH   r   r<   s     r   test_option_and_argz%ParseArgsTestCase.test_option_and_argy  sO    __i/0!Q'5'*r   c                     | j                  g d      }| j                  |j                  d       | j                  |j                  ddg       y )N)test_unaryoprE   
test_binoprF   r   r   )r   r4   rH   r   r<   s     r   test_arg_option_argz%ParseArgsTestCase.test_arg_option_arg  s>    __ABQ'><"@Ar   c                 *    | j                  dgd       y )Nz--unknown-optionz(unrecognized arguments: --unknown-optionr   r   s    r   test_unknown_optionz%ParseArgsTestCase.test_unknown_option  s    +,B	Dr   c                     t        j                  |      }t        j                         5 }d|v r|d= t	        j
                  |      }d d d        |S # 1 sw Y   S xY w)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c                 B   | j                  |      }| j                  |j                  d       | j                  |j                  |       | j	                  |j
                         | j                  |j                  t               | j	                  |j                         | j	                  |j                         | j	                  |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,,e4**+h22C8112++,../223 6 679NOr   c                     dg}t        t        j                        }|j                  d       | j	                  ||      }| j                  |j                  d       y )N	--fast-cicpuX  )r  r   r   r   r  r4   r5   r"   r   r   ro   s       r   test_fast_cizParseArgsTestCase.test_fast_ci  sO    }w445U#%%dM:))73r   c                     g d}t        t        j                        }|j                  d       | j	                  ||d      }| j                  |j                  d       | j                  |j                  d       y )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  si    9w445U#%%dM%G))73,,.EFr   c                     ddg}t        t        j                        }|j                  d       |j                  d       | j	                  ||       y )Nr  z
-u-networkr  r   )r  r   r   r   r  )r"   r   r   s      r   test_fast_ci_resourcez'ParseArgsTestCase.test_fast_ci_resource  sH    \*w445U#Y'4/r   c                     dg}t        t        j                        }| j                  ||      }| j	                  |j
                  d       y )N	--slow-cii  )r  r   r   r  r4   r5   r  s       r   test_slow_cizParseArgsTestCase.test_slow_ci  sA    }w445%%dM:))73r   c                 j    dg}t        j                  |      }| j                  |j                         y )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  s.    ()  &,,-r   c                 b    dg}| j                  |      }| j                  |j                         y )N--bisect)r   r:   want_bisectr"   r   ro   s      r   test_bisectzParseArgsTestCase.test_bisect  s+    |''-,,-r   c                    g d}t        j                         5  | j                  |      }d d d        | j                  j                         | j                  |j                  j                  d       | j                  |j                  j                  d       | j                  |j                         y # 1 sw Y   xY w)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++D1H	2X223..66:..33R8334	2 	2s   B66B?N)T)5__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   9   s    ) )+
NH!@
(*-0/#=,DI,I"[HNG2@@
-L"G*@/CP,-(
$'++B
D4G04.
.
5r   r   T)slotsc                   2    e Zd ZU eed<   edz  ed<   eed<   y)RerunnameNr   success)r%  r&  r'  rl   __annotations__boolr*  r   r   r-  r-    s    
I:Mr   r-  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y)BaseTestCaserF   test_regrtest_ztest_[a-zA-Z0-9_]+c                    t         j                  j                  t         j                  j                  t                    | _        t        j                         | _        | j                  t        j                  | j                         y r   )r   r   realpathdirname__file__r   tempfilemkdtemp
tmptestdirr   r   rmtreer   s    r   setUpzBaseTestCase.setUp  sM    ww''(AB"**,	(($//:r   Nc                 .   |s,dt         j                  z  }t         xj                  dz  c_        |t        j                  d      }| j                  |z   }t
        j                  j                  | j                  |dz         }| j                  t        j                  |       	 t        |dd      5 }|j                  |       d d d        |S # 1 sw Y   |S xY w# t        $ r1}t        j                          s| j#                  d|d	|        d }~ww xY w)
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: )r3  TEST_UNIQUE_IDtextwrapdedentTESTNAME_PREFIXr   r   r   r;  r   r   r   r   writePermissionError	sysconfigis_python_buildskipTest)r"   r.  coder   r   excs         r   create_testzBaseTestCase.create_test  s    l999D''1,'<?? $ D ##d*ww||DOOTE\:	(($/	dC'2 b  	  	,,.tSAB	s6   #C 1CC CC C 	D#,DDc                     t        j                  ||t         j                        }|s| j                  |d|       |S )Nz not found in )research	MULTILINEfail)r"   regexoutputr   s       r   regex_searchzBaseTestCase.regex_search  s1    		%6IIeV<=r   Fc                     |st        j                  |      }|r|dz  }t        j                  d|z   t         j                        }| j	                  ||       y )N
^)rN  escapecompilerP  assertRegex)r"   rS  r   fullrR  s        r   
check_linezBaseTestCase.check_line
  sG    ii(GtOG

4'>2<<8'r   c                     dt         d| j                  d}t        j                  ||t        j                        }t        d |D              S )NrW  z\[ *[0-9]+(?:/ *[0-9]+)*\] ()c              3   >   K   | ]  }|j                  d         yw)rF   N)group).0r   s     r   	<genexpr>z4BaseTestCase.parse_executed_tests.<locals>.<genexpr>  s     7uEKKN7s   )
LOG_PREFIXTESTNAME_REGEXrN  finditerrP  r   )r"   rS  rR  parsers       r   parse_executed_testsz!BaseTestCase.parse_executed_tests  s;     3 35UFBLL9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 }|6|s4|j                  g}|j
                  s|j                  |j                         | j                  |      }t        |      }||j                  |j                         |r&| j                  t        |      t        |      |       n| j                  |||       d ""fd}|r |d|      }| j                  ||       |
r |d|
      }| j                  ||       |r |d|      }| j                  ||       |r |d|      }| j                  ||       |r |d|      }| j                  ||       | |d	|j                  g      }| j                  ||       t        d
z   }| j                  ||       d|j                   d}|j                  r| d|j                   d}| j                  ||       |	r |d|	      }| j                  ||       t        |      t        |      z
  t        |
      z
  t        |      z
  t        |      z
  t        |      z
  t        |	      z
  }|r>|d "|      d}|s|s||j
                  r
|dkD  rd|z  }| j                  ||d       |r| j                  |d       d|j                  d}|r| d}|g}|j                   r|j                  d|j                   d       |j"                  r|j                  d|j"                  d       ddj%                  |       }| j                  ||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 ]  \  }}|s	|j                  | d%|          d&dj%                  |       }| j                  ||d       g } |r| j                  d'       n|r|r| j                  d(       |r| j                  d)       t'        ||||||f      s| j                  d*       n| s| j                  d+       d,j%                  |       } ||j
                  rd+nd'}!|  d-|! } | j                  |d.|  d       y )/NTc                     | dk7  rdS dS )NrF   sr0   r*  )counts    r   pluralz1BaseTestCase.check_executed_tests.<locals>.pluralB  s    1*3,",r   c                 |    t        |      }dj                  t        |            }| | |      fz  }|d|d}|S )N z:\n    $)lenr   r  )line_formattestsrt  namesrR  ru  s        r   
list_regexz5BaseTestCase.check_executed_tests.<locals>.list_regexE  s@    JEHHVE]+E5&-"88E',e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: rw  r   /ri  rj  rh  rm  rL   rl  =zTotal test files: FAILUREzENV CHANGEDINTERRUPTEDzNO TESTS RANSUCCESS, z then zResult: )
isinstancerl   rm   r   r.  r/  appendrg  r   r4   setr\  rc  r   ry  	tests_runfailuresrh  r   any)#r"   rS  r{  statsrh  ri  rj  rk  rL   rl  rm  rf   rn  ro  r   r   rp  rerun_failedexecutedtotal_testsr}  rR  goodtextpartslineruntotal_failedtotal_rerunreportr.  nteststate	new_stateru  s#                                     @r   check_executed_testsz!BaseTestCase.check_executed_tests  st    eS!GEgs#iGos+./Ofc"XFk3'&-Kgs#iGlC((>LeS!e$EI[jj\F==##EJJ/,,V45kuzz*S]C,<fEX{F;	-	 2G<EOOFE*GYEOOFE*16:EOOFE*  2*,E OOFE*2G<EOOFE*1EJJ<@EOOFE*!MMEOOFE*"5::,.>?E{{!7-}B?OOFE*7FEOOFE*E
S\)C,@@3v;Ng,!$[!12474EF)-vd|<E6u}SWZ[S[ 5(OOFEO5OOF$NO eooa()fM*D>>LL9U^^A$678==LL8EMM!#4560140 +_!55|,LKv;LKCcU|V1SZL)DfM*D|$C,-G%O 45k"S./
 		1KD% aw/0		1 %SXXf%5$6740 LL#+LL'LL'D&+w!13 4LL(LL#		% %*]]		IgVI;/E(5' 2>r   rS  returnc                 H    | j                  d|      }|j                  d      S )NzUsing random seed: (.*)rF   )rT  r`  )r"   rS  r   s      r   parse_random_seedzBaseTestCase.parse_random_seed  s#    !!"<fE{{1~r   c           	         |sd}d|vrt         j                  |d<   |j                  dd       }|+t        t        j
                        }|j                  dd        t        j                  |fd|t         j                  |d|}|j                  |k7  r[dt        |      d|j                  d	|d
|j                  d	}|j                  r|d|j                  z  z  }| j                  |       |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   rQ  )r"   r   r  exitcodekwrn   procr#   s           r   run_commandzBaseTestCase.run_command  s    E2%,,BxLffUD!;rzz"CGG'.~~d $#'$)%/__"%	$
 !#$ ??h& $i(DKKIC {{  
 ++& ' IIcNr   c                     g }dt         j                  v r|j                  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  sk    	S]]"dF^,NNDN.N$NNt++{{r   )NNFT)Nr   )r%  r&  r'  rA  rD  rd  r=  rL  rT  r\  rg  r  rl   r  r  r  r*  r   r   r3  r3    sr    N&O*N;<(8 &()+R#'b-/',u%.3%*U]?~  !Fr   r3  c                       e Zd Zd Zy)CheckActualTestsc           	         g d}| j                  |      }t        |j                               }t        j                  j                  t        j                  t        j                  j                  t                    d      }t        t        j                  |            }| j                  ||dz  dz  ddj                  |j                                       y)	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  ry  
splitlinesr   r   r   globrX  r7  r8  assertGreater)r"   r   rS  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&&)&*;*;*=&># "T[[9R-S-7!9&)$))4I*J&K# 	66q8"<M"ii(9(9(;<= ? 	 	@r   N)r%  r&  r'  r  r*  r   r   r  r    s    @r   r  c                   @    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                 l   t         |           t        | j                        D cg c]  }| j	                          c}| _        g d| _        ddd| j                  z  g| _        | j                  j                  d       t        j                  dk(  r| j                  j                  d       y y c c}w )N)r  r  r  z-uallz-rwW--testdir=%s)r.   3600z-j4win32r   )superr=  rangeNTESTrL  r{  python_argsr;  regrtest_argsr  r  platformr  )r"   index	__class__s     r   r=  zProgramsTestCase.setUp  s     7<DJJ6GHUd&&(H
/%v,t>@!!">?<<7"%%d+ # Is   B1c                     | j                  |      }| j                  |j                         |       | j                  || j                  dt        | j                               y )NT)rf   r  )r  r:   isdigitr  r{  ry  )r"   rS  randseeds      r   check_outputzProgramsTestCase.check_output  sR    ))&1((*H5!!&$**,0DJJ 	" 	Ir   c                 L    | j                  ||      }| j                  |       y )N)rn   )r  r  )r"   r   rn   rS  s       r   	run_testszProgramsTestCase.run_tests  s"    3/&!r   c                     t         j                  j                  | j                  d      }g | j                  || j
                  | j                  }| j                  |       y )Nzregrtest.pyr   r   r   r   r  r  r{  r  r"   scriptr   s      r   test_script_regrtestz%ProgramsTestCase.test_script_regrtest   sO    dllM:L!!L6LD,>,>LLtr   c                 z    g | j                   dd| j                  | j                  }| j                  |       y )Nr   testr  r  r{  r  r"   r   s     r   test_module_testz!ProgramsTestCase.test_module_test'  sJ    2!! 24 2 2##2&*jj2tr   c                 z    g | j                   dd| j                  | j                  }| j                  |       y )Nr   r  r  r  s     r   test_module_regrtestz%ProgramsTestCase.test_module_regrtest-  J    2!! 24 2 2##2&*jj2tr   c                 z    g | j                   dd| j                  | j                  }| j                  |       y )Nr   ztest.autotestr  r  s     r   test_module_autotestz%ProgramsTestCase.test_module_autotest3  r  r   c                 ~    d}g | j                   d|| j                  | j                  }| j                  |       y )Nzfrom test import autotestz-cr  )r"   rJ  r   s      r   test_module_from_test_autotestz/ProgramsTestCase.test_module_from_test_autotest9  sO    *2!! 24 2 2##2&*jj2tr   c                     t         j                  j                  | j                  d      }g | j                  || j
                  | j                  }| j                  |       y )Nzautotest.pyr  r  s      r   test_script_autotestz%ProgramsTestCase.test_script_autotest@  sO    dllM:L!!L6LD,>,>LLtr   c                 \    | j                  |      }| j                  |j                         y r   )r  r  r  )r"   r   r  s      r   	run_batchzProgramsTestCase.run_batchF  s$    %$++&r   z test.bat script is not installedr  zWindows onlyc                    t         j                  j                  t        ddd      }d| j                  z  g}t        j                         dk(  r|j                  d       nTt        j                         dk(  r|j                  d       n+t        j                         d	   d
k(  r|j                  d       t        j                  s|j                  d        | j                  |g|| j                    y )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_testJ  s    
 hZH#doo56	(X&5(X&""$Q'72V$T"v7	7DJJ7r   c                 L   t         j                  j                  t        d      }t         j                  j	                  |      s| j                  d| d       dg}t        j                         dk(  r|j                  d       nTt        j                         dk(  r|j                  d       n+t        j                         d	   d
k(  r|j                  d       t        j                  r|j                  d        | j                  |g|| j                  | j                    y )NzPCbuild\rt.batzFile "z" does not existrV   r  r  r  r  r   r  r  z-d)r   r   r   r  isfilerI  r  r  r  r  r   r  r  r  r{  )r"   r  rt_argss      r   test_pcbuild_rtz ProgramsTestCase.test_pcbuild_rt[  s     h(9:ww~~f%MMF6(*:;<&(NN8$5(NN8$""$Q'72NN6"NN4 vJJ$*<*<JtzzJr   r   )r%  r&  r'  r(  r  r=  r  r  r  r  r  r  r  r  r  unittest
skipUnlessrG  rH  r  r  r  r  __classcell__)r  s   @r   r  r     s    
 E,I"' X2224;=X0.A8 B=8 X0.AK B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jr                  ejt                  d5      d6        Z;d7 Z<d8 Z=defd9Z>d: Z?d; Z@d< ZAd= ZBd> ZCd? ZD ejr                  ej                  d@      dA        ZFdB ZGyC)DArgsTestCasez2
    Test arguments of the Python test suite.
    c                 P    ddd| j                   z  g|} | j                  |fi |S )Nr   r  r  )r;  r  )r"   testargsr  cmdargss       r   r  zArgsTestCase.run_testsr  s2    $//!AMHMtw-"--r   c                     t        j                  d      }t        dd      D cg c]  }| j                  d| |       }} | j                  | }| j                  ||dt        |      z         y c c}w )Na  
            import unittest

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

                def test_test2(self):
                    pass

                def test_test3(self):
                    pass
        rF   r   okrJ  r   r  )rB  rC  r  rL  r  r  ry  )r"   rJ  ir{  rS  s        r   test_successzArgsTestCase.test_successv  s        AFaL1!!Bqc(!6LL'!!&%()CJ 	" 	8 Ms   A3c                     t        j                  d      }| j                  d      }| j                  d|      }||g} | j                  | }| j	                  |||gd       y )NzQ
            import unittest
            raise unittest.SkipTest("nope")
        r  skipr  rF   )rh  r  rB  rC  rL  r  r  )r"   rJ  test_ok	test_skipr{  rS  s         r   r  zArgsTestCase.test_skip  su        ""4($$V$$7	)$'!!&%+4+() 	" 	+r   c           	          t        j                  d      }| j                  d      }| j                  d|      }||g} | j                  |dt        i}| j                  |||t        dd             y )	Nz
            import unittest

            class FailingTest(unittest.TestCase):
                def test_failing(self):
                    self.fail("bug")
        r  failingr  r  r   rF   ri  r  rB  rC  rL  r  EXITCODE_BAD_TESTr  r   )r"   rJ  r  test_failingr{  rS  s         r   test_failing_testzArgsTestCase.test_failing_test  s~        ""4(''	'=,'C1BC!!&%(1!Q 	" 	9r   c                    i }dD ]/  }t        j                  d|z        }| j                  ||      ||<   1 t        |j	                               } | j
                  ddg| }| j                  ||d        | j
                  dg| }| j                  |||d   d	
        | j
                  |dt        i}| j                  |||d
       y )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   )rm  r  r  r   )rB  rC  rL  r  valuesr  r  EXITCODE_NO_TESTS_RAN)r"   r{  resourcerJ  
test_namesrS  s         r   test_resourceszArgsTestCase.test_resources  s    , 		?H?? $ #$# $D #..x>E(O		? ELLN+
  e9j9!!&*A!>  	7J7!!&*27	2B() 	" 	+
  L6KL!!&*2<() 	" 	+r   c                    t        j                  d      }| j                  d|      }| j                  d|t              }| j                  |      }| j                  d|      }t        |j                  d            }| j                  dd| |t              }| j                  |      }| j                  ||       | j                  d|      }t        |j                  d            }| j                  ||       | j                  |t              }| j                  |      }| j                  |j                         |       d}	t        t        j                  |		      }
| j                  d|t        |

      }| j                  |      }| j                  ||	       | j                  |d       t        t        j                  d	      }
| j                  d|t        |

      }| j                  |      }| j                  |d       | j                  |d       t        t        j                  d	      }
| j                  d|t        |

      }| j                  |      }| j                  |j                         |       y )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   )rB  rC  rL  r  r   r  rT  rm   r`  r4   r:   r  r  r   r  r\  )r"   rJ  r  rS  r  r   test_random	randseed2test_random2	timestamprn   s              r   r*  zArgsTestCase.test_random  sC       $/ d5JK))&1!!"96B%++a.) H:&>)>   @**62	H-!!"96B5;;q>*{3 /DE))&1((*H5 !	2::;d5J$'   )))&19- 12 2::7d5J$'   )))&15) 01 2::4d5J$'   )))&1((*H5r   c           
      P   t        d      D cg c]  }| j                          }}t        j                  }| j	                  t        j
                  |       t        |d      5 }d }t        |d      D ]0  \  }}d||t        |      |fz  }|r|d|z  z  }t        ||       |}2 	 d d d        | j                  d|      }t        |      }	| j                  |||	       t        |d      5 }t        |d      D ]$  \  }}t        d	|d
t        |      d||       & 	 d d d        | j                  d|      }| j                  |||	       t        |d      5 }|D ]  }t        ||        	 d d d        | j                  d|      }| j                  |||	       t        |d      5 }|D ]  }t        d|z  |        	 d d d        | j                  d|      }| j                  |||	       y c c}w # 1 sw Y   SxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ZxY w)Nr   r   rF   z00:00:%02i [%s/%s] %sz -- %s took 0 secr   rw   r  [r  z] zLib/test/%s.py)r  rL  r   r   r   r   r   	enumeratery  r   r  r  )
r"   r  r{  r   r   previousr.  r  rS  r  s
             r   r{   zArgsTestCase.test_fromfile  sB   16q:!!#::
 ##	(((3 (C  	 BH(2  t/ %UT:;/(::Dd$ 	  h7E
!!&%u!= (C  	IB(2 IteSZ>RHI	I h7!!&%u!= (C  	%B %d$%	% h7!!&%u!= (C  	8B 8&-B78	8 h7!!&%u!=[ ;	  	 	I 	I	% 	%	8 	8s6   G2#AG7+4HH*H7HHHH%c                     t         }| j                  d|      }| j                  |t              }| j	                  |||dd       y )Nsigintr  r&  Tr   rk  ro  r  )TEST_INTERRUPTEDrL  r  EXITCODE_INTERRUPTEDr  r"   rJ  r  rS  s       r   test_interruptedzArgsTestCase.test_interrupted.  sM    t4/CD!!&$.2! 	" 	=r   c                    t        d      D cg c]  }| j                          }} | j                  dg| }| j                  ||t	        |             d| j
                  dt	        |      d}| j                  ||       y c c}w )Nr   r[   r  z10 slowest tests:
(?:- z: .*
){})r  rL  r  r  ry  rd  r\  )r"   r  r{  rS  rR  s        r   r]   zArgsTestCase.test_slowest5  s}    16q:!!#::4e4!!&%s5z!B ''U5 	& ;s   Bc           	      *   t         }| j                  d|      }dD ]i  }| j                  |      5  |rdd|f}nd|f} | j                  |dt        i}| j                  |||dd	
       d}| j                  ||       d d d        k y # 1 sw Y   vxY w)Nr3  r  r  )multiprocessingr[   -j2r  Tr   r4  z10 slowest tests:
)r5  rL  r)   r  r6  r  r\  )r"   rJ  r  r<  r   rS  rR  s          r   test_slowest_interruptedz%ArgsTestCase.test_slowest_interrupted?  s    t4, 	/Oo> /"'5D'.D'M8LM))&$26D01 * 3 /./ /	// /s   AB		B	c                     | j                  d      }| j                  d|      }| j                  ||gd       d}| j                  ||       y )Ncoverager   rF   r  zLlines +cov% +module +\(path\)\n(?: *[0-9]+ *[0-9]{1,2}% *[^ ]+ +\([^)]+\)+)+)rL  r  r  r\  )r"   r  rS  rR  s       r   r   zArgsTestCase.test_coverageR  sO    
+d3!!&4&!:B&r   c                 r    | j                  d      }| j                  d|d      }| j                  |d       y )Nr;   r9   key)r  zPress any key to continue)rL  r  r\  )r"   r  rS  s      r   r=   zArgsTestCase.test_wait[  s5    '$e< ;<r   c           	      V   t        j                  d      }| j                  d|      }| j                  d|t              }| j                  ||gdz  |t        dd      d	       | j                  dd
|d      }| j                  ||gdz  t        |dd      t        dd      d       y )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   r&  r   rF   T)ri  r  r   rK   r   test_runr   r/  r   )rL   r  r   )rB  rC  rL  r  r  r  r   r-  r7  s       r   r   zArgsTestCase.test_forevera  s        	5 T<MN!!&4&(4(1!Q*. 	" 	0
 YqI!!&4&((-d4>6:)< )2!Q*. 	" 	0r   Frun_workersc                   | j                  d|      }d}| j                  t        j                  |       ddg}|r|j	                  d       |j	                  |        | j
                  |t        t        j                  d}| j                  ||g|d	       d
}| j                  ||       |d|d}	| j                  |	|       t        |      5 }
|
j                         }| j                  |	|       d d d        y # 1 sw Y   y xY w)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
)rL  r   r   r   r  r  r  r  r  r  r\  r    r   read)r"   rJ  whatrG  r  r   cmdrS  r  line2r   reflogs               r   
check_leakzArgsTestCase.check_leak  s    48	(((3v&JJu

4):'1'8'8: 	!!&4&Q!GH%594@eV$(^ 	)rWWYFMM%(	) 	) 	)s   #C>>Dzneed a debug buildrG  c                V    t        j                  d      }| j                  |d|       y )Nz
            import unittest

            GLOBAL_LIST = []

            class RefLeakTest(unittest.TestCase):
                def test_leak(self):
                    GLOBAL_LIST.append(object())
        
referencesrF  rB  rC  rQ  )r"   rG  rJ  s      r   check_huntrleakszArgsTestCase.check_huntrleaks  s+         	lDr   c                 (    | j                  d       y NFrF  rU  r   s    r   r   zArgsTestCase.test_huntrleaks  s    %0r   c                 (    | j                  d       y NTrF  rX  r   s    r   test_huntrleaks_mpzArgsTestCase.test_huntrleaks_mp  s    $/r   c                    t        j                  d      }| j                  d|      }d}| j                  t        j
                  |       ddd|g} | j                  |t        t        j                  d}| j                  d	| |       | j                  d	| d
|       | j                  d|       | j                  d| d|       y )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   rI  r  rK  zBisect z: exit code 0zBisection completed inzTests (1):
* z.RefLeakTest.test3
)rB  rC  rL  r   r   r   r  r  r  r  r    )r"   rJ  r  r   rN  rS  s         r   test_huntrleaks_bisectz#ArgsTestCase.test_huntrleaks_bisect  s        & 48	(((3vz48):'1'8'8: 	v&/v]3V< 	.7*,	r   c                 R    t        j                  d      }| j                  |d       y )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 descriptorsrT  )r"   rJ  s     r   test_huntrleaks_fd_leakz$ArgsTestCase.test_huntrleaks_fd_leak  s(         	01r   c                     t        d      D cg c]  }| j                          }} | j                  dg| }| j                  |j	                         j                         |       y c c}w )Nr   r  )r  rL  r  r4   rstripr  )r"   r  r{  rS  s       r   test_list_testszArgsTestCase.test_list_tests  s^    -21X6!!#6677335	  7s   A)c                 >   t        j                  d      }| j                  |      }d|z  d|z  g}| j                  d|      }| j	                  |j                         |       d|z  g}| j                  ddd|      }| j	                  |j                         |       y )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)rB  rC  rL  r  r4   r  )r"   rJ  testnameall_methodsrS  s        r   test_list_caseszArgsTestCase.test_list_cases  s        ###. /9.9;9**,k: /9: $n (* 	**,k:r   c                     d}| j                  d|      }|g} | j                  dg|dt        i}| j                  |||dd       y )	Nz,import faulthandler; faulthandler._sigsegv()crashr.  rJ  r=  r  Tr   ri  rn  r  )rL  r  r  r  )r"   rJ  
crash_testr{  rS  s        r   test_crashedzArgsTestCase.test_crashed  s^     >%%7%>
JJ8IJ!!&%
+/q 	" 	:r   c                     t        j                  dt         j                        }|j                  |      D cg c]  }|j	                  d       c}S c c}w )Nz^(test[^ ]+).*ok$flagsrF   )rN  rY  rP  re  r`  )r"   rS  rR  r   s       r   parse_methodszArgsTestCase.parse_methods  s<    

.bllC,1NN6,BC5ACCCs   Ac                    t        j                  d      }| j                  |      }t        j                  }| j                  t        j                  |       dd|z  g}t        |d      5 }|D ]  }t        ||        	 d d d        | j                  dd||      }| j                  |      }d	d
g}| j                  ||       y # 1 sw Y   ExY w)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  rd  %s.Tests.test_method3r   r   rE   r   test_method2test_method4)rB  rC  rL  r   r   r   r   r   r   r  rq  r4   )	r"   rJ  re  r   subsetr   r.  rS  methodss	            r   test_ignorefilezArgsTestCase.test_ignorefile  s        ###. ##	(((3 #h.	0
 (C  	%B %d$%	% nhI$$V, .1&)	% 	%s   +CCc                    t        j                  d      }g d}| j                  |      }| j                  d|      }| j	                  |      }| j                  ||       t        j                  }| j                  t        j                  |       dd|z  g}t        |d      5 }|D ]  }	t        |	|        	 d d d        | j                  dd	||      }| j	                  |      }dd
g}| j                  ||       y # 1 sw Y   ExY w)Nrs  )rd  ru  test_method3rv  r  rE   rd  rt  r   r   r   r{  )rB  rC  rL  r  rq  r4   r   r   r   r   r   r   )
r"   rJ  rf  re  rS  rx  r   rw  r   r.  s
             r   test_matchfilezArgsTestCase.test_matchfile8  s      7###. h/$$V,+. ##	(((3 #h.	0
 (C  	%B %d$%	% mXxH$$V, .1&)	% 	%s   $C>>Dc           
      h   t        j                  d      }| j                  |      }| j                  |      }| j	                  ||g|d       | j                  d|t
              }| j	                  ||g|dd       | j                  d	|      }| j	                  ||g|t        |d d
      d       y )Nz
            import unittest

            class Tests(unittest.TestCase):
                def test_env_changed(self):
                    open("env_changed", "w").close()
        r  rF   )rj  r  --fail-env-changedr&  Trj  r   r  rK   rE  r   )rj  rL   r  )rB  rC  rL  r  r  EXITCODE_ENV_CHANGEDr-  r"   rJ  re  rS  s       r   test_env_changedzArgsTestCase.test_env_changeda  s        ###. )!!&8*.6a 	" 	A  4h)=   ?!!&8*(37q 	" 	B 	84!!&8*.6(-h486:)< )* 	" 	+r   c           	          t        j                  d      }| j                  |      }| j                  d|t              }| j                  ||gt        |dd      t        dd	      
       y )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   r&  test_fail_alwaysF)r/  r   r   rL   r  )rB  rC  rL  r  r  r  r-  r   r  s       r   test_rerun_failzArgsTestCase.test_rerun_fail  ss     
  
 ###.	8>OP!!&8*(-h.@6;)= )2!Q	 	" 	9r   c           	         t         j                  j                  d      }| j                  t        j
                  |       | j                  t         j                  j                  |             t        j                  d|d      }| j                  |      }| j                  d|d      }| j                  ||gt        |dd	
      t        dd             t	        j
                  |       | j                  dd|t              }| j                  ||gt        |dd	
      t        dd             t	        j
                  |       y )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   r&  test_fail_onceTrE  r   rF   r  z--fail-rerun)r   r   r   r   r   r   ri   existsrB  rC  rL  r  r  r-  r   EXITCODE_RERUN_FAIL)r"   marker_filenamerJ  re  rS  s        r   test_rerun_successzArgsTestCase.test_rerun_success  s:   ''//*DE	((/:89 $  /1 
2		   ###. 	8a@!!&8*(-h4D6:)< )2!Q	 	" 	9
 	) 	>8)<   >!!&8*(-h4D6:)< )2!Q	 	" 	9
 	)r   c           
          t        j                  d      }| j                  |      }| j                  d|t              }| j                  |||gt        |dd      d	       y )
Na  
            import unittest

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

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

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

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

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

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

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

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

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

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

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

                def test_success(self):
                    return
        r  rK   r&  r  FrE  r   r  r  r  s       r    test_rerun_teardown_hook_failurez-ArgsTestCase.test_rerun_teardown_hook_failure0  r  r   c           	          t        j                  d      }| j                  |      }| j                  d|t              }| j                  ||t        |dd      d	       y )
Na  
            import unittest

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

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

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

                async def test_success(self):
                    return
        r  rK   r&  r  FrE  r   r  r  r  s       r   &test_rerun_async_teardown_hook_failurez3ArgsTestCase.test_rerun_async_teardown_hook_failure[  r  r   c                     t        j                  d      }| j                  |      }| j                  |ddt              }| j                  ||g|dd       y 	N
            import unittest

            class Tests(unittest.TestCase):
                def test_bug(self):
                    pass
        r  r   
nosuchtestr&  r   Trl  r  rp  rB  rC  rL  r  r   r  r  s       r   test_no_tests_ranzArgsTestCase.test_no_tests_ranq  sh        ###.$)>   @!!&8*/7()D 	" 	:r   c                     t        j                  d      }| j                  |      }| j                  |      }| j	                  ||gt        dd             y )Nz
            import unittest

            class Tests(unittest.TestCase):
                def test_skipped(self):
                    self.skipTest("because")
        r  rF   )rh  r  )rB  rC  rL  r  r  r   r  s       r   test_no_tests_ran_skipz#ArgsTestCase.test_no_tests_ran_skip  s\        ###.)!!&8*(1!Q(? 	" 	Ar   c                     t        j                  d      }| j                  |      }| j                  |      }| j                  ||ddt              }| j                  |||g||gdd       y r  r  )r"   rJ  re  	testname2rS  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      }| j                  |      }t        j                  d      }| j                  |      }| j                  ||ddddd      }| j	                  |||g|gd	d
       y )Nr  r  z
            import unittest

            class Tests(unittest.TestCase):
                def test_other_bug(self):
                    pass
        r   r  test_other_bugr   r&  rF   Tr  r  )r"   rJ  re  
other_coder  rS  s         r   )test_no_test_ran_some_test_exist_some_notz6ArgsTestCase.test_no_test_ran_some_test_exist_some_not  s        ###.__ & 
 $$*$5	)T< $&6   D!!&8Y*?08z()D 	" 	:r   c                     t        j                  d      }| j                  |      }| j                  d|t              }| j                  ||g|gdd       y )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~  r&  TrF   r  )rB  rC  rL  r  r  r  r  s       r   test_uncollectablezArgsTestCase.test_uncollectable  si       " ###. 4h)=   ?!!&8*/7j37() 	" 	+r   c                    t        j                  d      }| j                  |      }| j                  dd|t              }| j                  ||g|d       | j                  |t        j                  d|z  t        j                               y )	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  r=  z--timeout=1.0r&  r   r  z%s timed out)
rB  rC  rL  r  r  r  rZ  rN  rY  rP  r  s       r   test_multiprocessing_timeoutz)ArgsTestCase.test_multiprocessing_timeout  s       $ ###.):   <!!&8*)1 	" 	<NX$=r||L	Nr   c                     t        j                  d      }| j                  |      }| j                  dd|t              }| j                  ||g|gdd       | j                  d	|       | j                  d
|       y )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   r&  TrF   r  zWarning -- Unraisable exceptionzException: weakref callback bugrB  rC  rL  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      }| j                  |      }| j                  dd|t              }| j                  ||g|gdd       | j                  d	|       | j                  d
|       y )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   r&  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0&9r   c           	      <   t        j                  d      }| j                  |      }d}dD ]b  }| j                  |      5  d||g} | j                  |dt
        i}| j                  ||g|gdd	
       | j                  ||       d d d        d y # 1 sw Y   oxY w)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  )rB  rC  rL  r)   r  r  r  rZ  )r"   rJ  re  rR  r  rN  rS  s          r   test_print_warningzArgsTestCase.test_print_warning4  s        $ ###. # 	0FV, 0+VX>'L7KL))&8*7?j;?01 * 3   /0 0	00 0s   ABB	c                     t         j                  j                  t        j                        }| j                  |t        j                   d       |j                         r| j                  d       y y )Nz not setzModified guard)r   r  getr   UNICODE_GUARD_ENVr   isasciirI  )r"   guards     r   test_unicode_guard_envz#ArgsTestCase.test_unicode_guard_env]  sU    

u667Uu'>'>&?x$HI==? MM*+ r   c                    t         j                  j                  | j                  d      }t        j                  |       t         j                  j                  | j                  d      }t        |d      j                          ||g}ddd| j                  z  dg}| j                  |       |D ]1  }| j                  t         j                  j                  |      |       3 y )Ntest_python_123test_python_456wbr   r  z--tempdir=%sz	--cleanup)
r   r   r   r;  mkdirr   closer  ri   r  )r"   r7  r   r|  r	  r.  s         r   test_cleanupzArgsTestCase.test_cleanupe  s    '',,t0AB
77<<1BCXt""$(#!DOO3  	  	9DRWW^^D148	9r   z.checking temp files is not implemented on WASIc           
      :   t        j                  d      }t        d      D cg c]  }| j                  |       }} | j                  dddg|dt
        i}| j                  |||ddt        |      	       |D ]  }| j                  d
| d|        y c c}w )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')
        r   r  r~  rE   r=  r  T)rj  r   rn  r  zWarning -- z& leaked temporary files (1): mytmpfile)	rB  rC  r  rL  r  r  r  ry  r    )r"   rJ  _	testnamesrS  re  s         r   test_leak_tmp_filezArgsTestCase.test_leak_tmp_filet  s      
  
 ;@(CQT%%4%0C	C 4dE ?I ?)=?!!&).737+/(+I	 	" 	8
 " 	"HMMKz 21 2 "	" Ds   Bc                    t         j                  dk(  rt        j                         }nIt         j                  j
                  }|-t         j                  j
                  }|| j                  d       t        d t        dd      D              }d|fz  }d}||j                  d      z  }	 |j                  |       | j                  | d	       |j                  |d
      }t        j                  d|d      }| j                  |      }| j!                  ddd|      }| j#                  ||gdd       | j%                  ||d       y # t        $ r Y w xY w)Nr  z#cannot get regrtest worker encodingc              3       K   | ]  }|  y wr   r*  )ra  chs     r   rb  z8ArgsTestCase.test_worker_decode_error.<locals>.<genexpr>  s     66s         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   rJ  TrF   )rn  r  F)rR  )r  r  localegetencodingr  r@  
__stdout__rI  bytesr  encodedecodeUnicodeDecodeErrorrB  rC  rL  r  r  r\  )	r"   r@  nonasciicorrupted_outputassertion_failedexpected_linerJ  re  rS  s	            r   test_worker_decode_errorz%ArgsTestCase.test_worker_decode_error  si   <<7"))+Hzz**H>>22#MM"GH6eCo66+xk9 I,33K@@	D##H- MMXJ&ABC(//:LM 	%  !13 4	   ###. 4dE8L!!&8*+/() 	" 	+ 	U;5 " 		s   +E 	EEc                     t        j                  d      }| j                  |      }| j                  ddd|t              }| j                  ||g|gdt        ddd	      
       y )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   rJ  r&  TrF   r   rk  r  r  s       r   test_doctestzArgsTestCase.test_doctest  sv       : ###. 4dE8):   <!!&8**2+/(1!Q(: 	" 	<r   c                 F   t        j                  d      }t        dd      D cg c]  }| j                  d| |       }}d}dd| g}|r|j	                  d	t        |              |j                  |        | j                  | }t        j                  |       t        d
      D cg c]  }t        j                  dd       }	}d|	 }
d}t        j                  ||t        j                        }| j                  ||
gt        |      z         y c c}w c c}w )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}")
        rF   r   r*  rj  iJ3rc   r'  r   r  r   r   zRandom numbers: z^Random numbers: .*$ro  )rB  rC  r  rL  r  ry  r  r  r%  seedrandintrN  findallrP  r4   )r"   rG  rJ  r  r{  rk   rN  rS  r  numbersr   rR  matchess                r   _check_random_seedzArgsTestCase._check_random_seed  s         3-) !!QC'8t!D ) ) "K=9:JJCJ<()

5%K  5:"I>q6>>!T*>>%gY/'**UF",,?8*s5z"9:)) ?s   D-Dc                 (    | j                  d       y rW  r  r   s    r   test_random_seedzArgsTestCase.test_random_seed  s    E2r   c                 (    | j                  d       y rZ  r  r   s    r   test_random_seed_workersz%ArgsTestCase.test_random_seed_workers  s    D1r   c                 >   t        j                  d      }t        d      D cg c]  }| j                  |       }}t        j
                  ddg}t        j                  |      } | j                  d|dg| }| j                  ||t        |      d	       y c c}w )
Nz
            import sys
            import unittest

            class WorkerTests(unittest.TestCase):
                def test_dev_mode(self):
                    self.assertTrue(sys.flags.dev_mode)
        r   r  r  r  r  z-j0Tr  rn  )rB  rC  r  rL  r  r  shlexr   r  r  ry  )r"   rJ  r  r{  r  rS  s         r   test_python_commandz ArgsTestCase.test_python_command  s        7<Ah?!!t!,?? nndE2
 ZZ
+

JFF!!&%(+E
T 	" 	C @s   Bc                    t         j                  j                  t         j                  j                  t              dd      }dD cg c]  }d| 	 }}ddddd	d
|z  g|}| j                  |      }| j                  ||d       y c c}w )Nregrtestdataimport_from_tests)abcr4  r  r  r  r   r  r  r   r  )r   r   r   r7  r8  r  r  )r"   r   r.  r{  r   rS  s         r   test_unload_testszArgsTestCase.test_unload_tests#  s     '',,rwwx8-/BD5DET>$(EEtUD&.72JSUS&!!&%q!9 Fs   Bc                 <   t        j                  d      }| j                  |      }t        j                  dd|d| j
                   |g}t        j                  |t        j                  t        j                  d      }| j                  |j                  d|       y )	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   )rB  rC  rL  r  r  r;  r  r  r  r  r4   r  )r"   r  rJ  re  rN  r  s         r   check_add_python_optsz"ArgsTestCase.check_add_python_opts6  s     '  'P ###. ~~VVDOO,- ~~c%/__%/%6%6#') 	!T2r   c                     dD ].  }| j                  |      5  | j                  |       d d d        0 y # 1 sw Y   ;xY w)N)r  r  r'   )r)   r  )r"   r(   s     r   test_add_python_optsz!ArgsTestCase.test_add_python_optsm  sG    - 	0C#& 0**3/0 0	00 0s   5>	z(raising SIGSEGV on Android is unreliablec                    	 ddl m} t	        j
                  d      }| j                  |      }t        t        j                        }d}t        j                  ||       | j                  d|t        |      }| j                  |||gdd	
       t        j                  s0t!        t"        j$                         }| j'                  d| d|       | j)                  |dd	d       y # t        $ r | j                  d       Y w xY w)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=0rJ  r(  T)ri  r  rn  z
Exit code z
 (SIGSEGV)zjust before crash!F)r[  rR  )r  r   ImportErrorrI  rB  rC  rL  r  r   r  r   set_sanitizer_env_varr  r  r  
MS_WINDOWSrm   signalSIGSEGVr    r\  )r"   r   rJ  re  rn   r  rS  r  s           r   test_worker_output_on_failurez*ArgsTestCase.test_worker_output_on_failures  s    	8-     ###. 2:: %%c62x):$'   ) 	!!&(*2()D 	" 	: !!FNN++HMMJxj
;VD 44uM?  	8MM67	8s   C& &DDc                 \   t        j                  d      }| j                  |      }| j                  d|      }| j	                  ||d       | j                  d|       t        j                  r=| j                  ddd	d|      }| j	                  ||dd
       | j                  d|       y y )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:3rJ  Tr  )rB  rC  rL  r  r  assertNotInr   r  r  s       r   rS   zArgsTestCase.test_verbose3  s        ###. h7!!&(!!<)62 ^^D%hOF%%fha$%O-v6	 r   N)Hr%  r&  r'  r(  r  r  r  r  r#  r*  r{   r8  r]   r>  r   r=   r   rQ  r  r  r   r  r1  rU  r   r[  r]  r_  rb  rg  cpython_onlyrm  rq  ry  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  m  sB   .8(+9"+>36j/>b='/&'= 0D 5: )0 X))+?@Et E AE10 X))+?@& A&P X))+?@2 A2 ;4 : :D *D'*R+<9,)*V+.+.+,+,+,+,+*+,: A:":0 + +6N8!AF:B'0R,9 X__W__EG"G"4-<^%<N ;d  ;D32C*:&53n0 X__W''?A"NA"NH7r   r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)	TestUtilsc                    | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d	      d
       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       y )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	!..t4	!..u5 	"..s3"	$..q1"	$..v6 	"..z:&	(..x8!	#../EF'	)..|<'	)r   c                    t         }| j                   |d      d       | j                   |dd      d       | j                   |dd      d       | j                   |d	d             | j                   |d
d             y )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&	(#MX\])	+#[fjk'	))$?$OP)$GRVWXr   c                     t        t        j                         dft        t        j                         dfddfD ]+  \  }}| j	                  t        j                  |      ||       - y )NSIGINTr  )l       STATUS_ACCESS_VIOLATION)l       STATUS_STACK_OVERFLOW)rm   r  r  r  r4   r   get_signal_name)r"   r  r   s      r   test_get_signal_namezTestUtils.test_get_signal_name  sg    &--  (+&..!!9-31	#
 	RHh U228<hQ	Rr   c                 ^   t         j                  }t         j                  }| j                   |d      d       | j                   |d      d       | j                   ||      d       | j                   |t	        d |D                    d       | j                   |g |d      d	       y )
N)r   zresources (1): network)r  decimalr   z$resources (3): audio,decimal,networkzresources: allc              3   *   K   | ]  }|d k7  r|  yw)r  Nr*  )ra  r.  s     r   rb  z2TestUtils.test_format_resources.<locals>.<genexpr>  s      #5D&*em $( #5s   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1++\*$	& 	<=2	4 	]+	 	U #5M #5 5 6!	# 	7}7h78#	%r   c                 B    G d d      }t               }| j                  t        |        |d      } |d      } |d      }t        j                  t        dd      5  t        g        | j                  t        |             | j                  t        |             t        d        | j                  t        |             | j                  t        |             t        |j                         dfg       | j                  t        |             | j                  t        |             t        d	g       | j                  t        |             | j                  t        |             | j                  t        |             t        d
g       | j                  t        |             | j                  t        |             t        dg       | j                  t        |             t        dg       | j                  t        |             t        dg       | j                  t        |             | j                  t        |             | j                  t        |             t        |j                         df|j                         dfg       | j                  t        |             | j                  t        |             | j                  t        |             t        ddg       | j                  t        |             | j                  t        |             d d d        t        j                  t        dd      5  t        |j                         dfg       | j                  t        |             | j                  t        |             t        dg       | j                  t        |             | j                  t        |             | j                  t        |             t        dg       | j                  t        |             | j                  t        |             t        dg       | j                  t        |             t        dg       | j                  t        |             t        dg       | j                  t        |             | j                  t        |             | j                  t        |             t        |j                         df|j                         dfg       | j                  t        |             | j                  t        |             | j                  t        |             t        ddg       | j                  t        |             | j                  t        |             d d d        t        j                  t        dd      5  t        ddg       | j                  t        |             | j                  t        |             | j                  t        |             t        ddg       | j                  t        |             | j                  t        |             | j                  t        |             d d d        y # 1 sw Y   UxY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nc                       e Zd Zd Zd Zy)'TestUtils.test_match_test.<locals>.Testc                     || _         y r   test_id)r"   r+  s     r   __init__z0TestUtils.test_match_test.<locals>.Test.__init__  s	    &r   c                     | j                   S r   r*  r   s    r   idz*TestUtils.test_match_test.<locals>.Test.id  s    ||#r   N)r%  r&  r'  r,  r.  r*  r   r   Testr(    s    '$r   r/  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)r1  F)r2  F)r3  F)r4  F)r5  F)r  F)r6  F)*test_osF)r7  T)	r	   r   r
   r   	swap_attrr:   r   r.  ri   )r"   r/  patternsr  
test_chdir	test_copys         r   test_match_testzTestUtils.test_match_test  s5   	$ 	$ #$2?@CD
>?	 w(8"= /	5BOOJ{34OOJz23 D!OOJ{34OOJz23 knn.567OOJ{34Z
34 ./0OOJ{34OOJz23Z	23 -./OOJ{34OOJz23 012Z45012OOJ{34 89:OOJ{34OOJz23Z	23 knn.5
7NOPOOJ{34OOJz23Z	2324GHIOOJ{34Z
34_/	5d w(8"= %	4knn.678Z45OOJz23 /01Z45Z
34OOJy12 ./0Z45Z
34 123OOJ{34123Z45 9:;Z45Z
34OOJy12 knn.6%8PQRZ45Z
34OOJy1235IJKZ45OOJz23K%	4P w(8"= 		402GHIOOJ{34Z
34OOJy12/1GHIZ45OOJz23Z	23		4 		4u/	5 /	5d%	4 %	4P		4 		4s'   KY<IZ	<B7Z<Z	ZZN)r%  r&  r'  r  r  r  r%  r<  r*  r   r   r  r    s    ),	YR%(t4r   r  __main__)?r(  r   dataclassesr  r   r  os.pathr   r  r%  rN  r  r  r  r  rG  r9  rB  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   r7  r8  r  r   normpathrc  r  r  r   r  r6  rC  r5  TestCaser   	dataclassr-  r3  r  r  r  r  r%  r*  r   r   <module>rJ     s      	     	    
      " $ ! " " P P - 6%%
(

=
>>77<<14>77??277++H56E
     "8?? $ 	 X5)) X5v T"  #J8$$ JZ@| @0jK| jKZA7< A7H*s4!! s4l zHMMO r   