
    z%i~                    4   	 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mZ d dlmZmZ d dlmZ ej4                  s ej6                  d      ej8                  j;                  ej8                  j=                  e      dd      Z ej8                  jC                  ej8                  jE                  e             Z d	Z#d
Z$dZ%dZ&dZ'dZ( ejR                  d      Z* G d dejV                        Z, ejZ                  d       G d d             Z. G d dejV                        Z/ G d de/      Z0 G d de/      Z1 G d de/      Z2 G d dejV                        Z3e4d k(  r ejj                          yy)!    N)libregrtest)support)	os_helper	TestStats)utilssetup)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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*y))*ParseArgsTestCasec                    t        j                         5 }| j                  t              5  t	        j
                  |       d d d        d d d        | j                  |j                                y # 1 sw Y   2xY w# 1 sw Y   6xY wN)r   captured_stderrassertRaises
SystemExitr   _parse_argsassertIngetvalue)selfargsmsgerrs       F/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_regrtest.py
checkErrorzParseArgsTestCase.checkError7   si    $$& 	*#t/@/@/L 	*##D)	* 	*c3<<>*	* 	* 	* 	*s"   A>A2A>2A;	7A>>Bc           	      r   dD ]  }| j                  |      5  t        j                         5 }| j                  t              5  t        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   r!   outs      r   	test_helpzParseArgsTestCase.test_help<   s    ! 	NC#& N,,. 3#&&z23++SE23 3 <cllnM	N N	N3 3 3 3N Ns:   B-B!B	B!"(B-BB!!B*&B--B6	c                     t        j                  ddg      }| j                  |j                  d       | j	                  dgd       | j	                  ddgd       y )N	--timeoutz4.2g@expected one argumentfoozinvalid float value)r   r   assertEqualtimeoutr   r   nss     r   test_timeoutzParseArgsTestCase.test_timeoutD   sP    $$k5%9:S)'>?e,.CD    c                 f    t        j                  dg      }| j                  |j                         y )N--wait)r   r   
assertTruewaitr,   s     r   	test_waitzParseArgsTestCase.test_waitJ   s$    $$hZ0 r/   c                     t        j                  ddg      }| j                  |j                  d       | j	                  dgd       y )Nz--worker-argsz[[], {}]r(   )r   r   r*   worker_argsr   r,   s     r   test_worker_argsz"ParseArgsTestCase.test_worker_argsN   s=    $$oz%BC4)+BCr/   c                     dD ]c  }| j                  |      5  t        j                  |dg      }| j                  |j                  d       | j                  |gd       d d d        e y # 1 sw Y   pxY w)N)z-S--startr    r)   r(   )r"   r   r   r*   startr   r   r!   r-   s      r   
test_startzParseArgsTestCase.test_startS   sy    " 	@C#& @ ,,c5\:  51'>?@ @	@@ @   AA**A3	c                    t        j                  dg      }| j                  |j                  d       t        j                  dg      }| j                  |j                  d       t        j                  dg      }| j                  |j                  d       t        j                  dgdz        }| j                  |j                  d       t        j                  g       }| j                  |j                  d       y )N-v   z-vvvr   	--verboser   )r   r   r*   verboser,   s     r   test_verbosezParseArgsTestCase.test_verboseZ   s    $$dV,Q'$$fX.Q'$$k]3Q'$$k]Q%67Q'$$R(Q'r/   c                     dD ]N  }| j                  |      5  t        j                  |g      }| j                  |j                         d d d        P y # 1 sw Y   [xY w)N)z-w--rerunz
--verbose2r    )r"   r   r   r2   rerunr;   s      r   
test_rerunzParseArgsTestCase.test_rerunf   s[    0 	*C#& * ,,cU3)* *	** *   2AA	c                     dD ]N  }| j                  |      5  t        j                  |g      }| j                  |j                         d d d        P y # 1 sw Y   [xY w)N)-Wz
--verbose3r    )r"   r   r   r2   verbose3r;   s      r   test_verbose3zParseArgsTestCase.test_verbose3l   [    % 	-C#& - ,,cU3,- -	-- -rH   c                     dD ]j  }| j                  |      5  t        j                  |g      }| j                  |j                         | j                  |j                  d       d d d        l y # 1 sw Y   wxY w)N)-q--quietr    r   )r"   r   r   r2   quietr*   rB   r;   s      r   
test_quietzParseArgsTestCase.test_quietr   so    " 	0C#& 0 ,,cU3)  Q/0 0	00 0s   AA11A:	c                     dD ]N  }| j                  |      5  t        j                  |g      }| j                  |j                         d d d        P y # 1 sw Y   [xY w)N)z-o	--slowestr    )r"   r   r   r2   
print_slowr;   s      r   test_slowestzParseArgsTestCase.test_slowesty   s[    $ 	/C#& / ,,cU3./ /	// /rH   c                     t        j                  dg      }| j                  |j                         t        j                  dg      }| j                  |j                         y )Nz--headerrA   )r   r   r2   headerr,   s     r   test_headerzParseArgsTestCase.test_header   sF    $$j\2		"$$k]3		"r/   c                     dD ]N  }| j                  |      5  t        j                  |g      }| j                  |j                         d d d        P y # 1 sw Y   [xY w)N)-rz--randomizer    )r"   r   r   r2   	randomizer;   s      r   test_randomizez ParseArgsTestCase.test_randomize   s[    & 	.C#& . ,,cU3-. .	.. .rH   c                     t        j                  ddg      }| j                  |j                  d       | j	                  |j
                         | j                  dgd       | j                  ddgd       y )Nz
--randseed12345i90  r(   r)   invalid int value)r   r   r*   random_seedr2   r\   r   r,   s     r   test_randseedzParseArgsTestCase.test_randseed   s`    $$lG%<=/%(?@u-/BCr/   c                    dD ]x  }| j                  |      5  t        j                  |dg      }| j                  |j                  d       | j                  |gd       | j                  |ddgd       d d d        z y # 1 sw Y   xY w)N)-f
--fromfiler    r)   r(   -sdon't go together)r"   r   r   r*   fromfiler   r;   s      r   test_fromfilezParseArgsTestCase.test_fromfile   s    % 	IC#& I ,,c5\:  e4'>?eT 24GH	I I	II Is   AA??B	c                     dD ]N  }| j                  |      5  t        j                  |g      }| j                  |j                         d d d        P y # 1 sw Y   [xY w)N)z-x	--excluder    )r"   r   r   r2   excluder;   s      r   test_excludezParseArgsTestCase.test_exclude   [    $ 	,C#& , ,,cU3

+, ,	,, ,rH   c                     dD ]c  }| j                  |      5  t        j                  |g      }| j                  |j                         | j                  |ddgd       d d d        e y # 1 sw Y   pxY w)N)rf   z--singler    rd   r)   rg   )r"   r   r   r2   singler   r;   s      r   test_singlezParseArgsTestCase.test_single   sx    # 	IC#& I ,,cU3		*dE 24GHI I	II Ir=   c                    dD ]d  }| j                  |      5  t        j                  |dg      }| j                  |j                  dg       | j                  |gd       d d d        f | j                  t        j                  t        j                         t        t        j                  d      5 }t        d|       t        d|       d d d        t        j                  j                  t        j                        }t        j                  d	d
d|g      }| j                  |j                  ddg       y # 1 sw Y   AxY w# 1 sw Y   {xY w)N)z-iz--ignorer    patternr(   w
matchfile1file
matchfile2-mmatch--ignorefile)r"   r   r   r*   ignore_testsr   
addCleanupr   unlinkTESTFNopenprintospathabspathr   r!   r-   fpfilenames        r   test_ignorezParseArgsTestCase.test_ignore   s)   # 	@C#& @ ,,c9-=>  9+>'>?@ @	@ 		(()*:*:;)""C( 	)B,R(,R(	) 77??9#3#34$$dG&4h&@ A&5	7@ @	) 	)s   AD:2E:E	Ec                    dD ]d  }| j                  |      5  t        j                  |dg      }| j                  |j                  dg       | j                  |gd       d d d        f t        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                        }t        j                  ddd|g      }| j                  |j                  g d       y # 1 sw Y   vxY w# 1 sw Y   {xY w)N)ry   z--matchr    rs   r(   )ry   pattern1ry   pattern2r   r   rt   ru   rv   rx   ry   rz   --matchfile)rz   ru   rx   )r"   r   r   r*   match_testsr   r}   r   r~   r   r   r   r   r   r   r   s        r   
test_matchzParseArgsTestCase.test_match   sR   " 	@C#& @ ,,c9-=>  )='>?@ @	@ $$ &8 9*j)AB	(()*:*:;)""C( 	)B,R(,R(	) 77??9#3#34$$dG&3X&? @>	@#@ @	) 	)s   AE/'E</E9	<Fc                 N   dD ]  }| j                  |      5  t        j                  |dg      }| j                  |j                         t        j                  |dg      }| j                  |j                         | j                  |gd       d d d         y # 1 sw Y   xY w)N)z-Gz
--failfastr    r?   rJ   z#-G/--failfast needs either -v or -W)r"   r   r   r2   failfastr   r;   s      r   test_failfastzParseArgsTestCase.test_failfast   s    % 	NC#& N ,,c4[9, ,,c4[9,'LMN N	NN Ns   A8BB$	c                 D   dD ]  }| j                  |      5  t        j                  |dg      }| j                  |j                  ddg       t        j                  |dg      }| j                  |j                  dg       t        t        j                        }|j                  d       t        j                  |dg      }| j                  |j                  |       | j                  |gd       | j                  |d	gd
       t        j                  |dg      }| j                  |j                  t        t        j                        dgz          t        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,-guir(   r)   zinvalid resourcez
all,tzdatatzdataextralargefile)	r"   r   r   r*   use_resourceslistALL_RESOURCESremover   )r   r!   r-   expecteds       r   test_usezParseArgsTestCase.test_use   s~     	GC#& G ,,c=-AB  !1!1E93EF ,,c3E-FG  !1!1I;? 9 9:& ,,c:->?  !1!18<'>?e.@A !,,c<-@A  !1!1!%k&?&?!@H:!MO !,,c3C-DE  !1!14D3EF+G G	GG Gs   E0FF	c                     dD ]c  }| j                  |      5  t        j                  |dg      }| j                  |j                  d       | j                  |gd       d d d        e y # 1 sw Y   pxY w)N)z-Mz
--memlimitr    4Gr(   )r"   r   r   r*   memlimitr   r;   s      r   test_memlimitzParseArgsTestCase.test_memlimit   sy    % 	@C#& @ ,,c4[9  d3'>?@ @	@@ @r=   c                     t        j                  ddg      }| j                  |j                  t        j
                  j                  t        j                  d             | j                  dgd       y )Nz	--testdirr)   r(   )
r   r   r*   testdirr   r   joinr   SAVEDCWDr   r,   s     r   test_testdirzParseArgsTestCase.test_testdir   sQ    $$k5%9:RWW\\)2D2De%LM'>?r/   c                     dD ]N  }| j                  |      5  t        j                  |g      }| j                  |j                         d d d        P y # 1 sw Y   [xY w)N)z-Lz
--runleaksr    )r"   r   r   r2   runleaksr;   s      r   test_runleakszParseArgsTestCase.test_runleaks   rM   rH   c                    dD ]9  }| j                  |      5  t        j                  |dg      }| j                  |j                  d       t        j                  |dg      }| j                  |j                  d       t        j                  |dg      }| j                  |j                  d       t        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   HxY w)N)z-R--huntrleaksr    :)r   r   
reflog.txtz6:)   r   r   z:3)r   r   r   z6:3:leaks.log)r   r   z	leaks.logr(   6z&needs 2 or 3 colon-separated argumentszfoo:zinvalid huntrleaks valuez6:foo)r"   r   r   r*   
huntrleaksr   r;   s      r   test_huntrleaksz!ParseArgsTestCase.test_huntrleaks  s2   ' 	LC#& L ,,c3Z8  0DE ,,c4[9  0DE ,,c4[9  0DE ,,c?-CD  0CD'>?c
 HJf/IJg0JKL L	LL Ls   DEE	c                 h   dD ]  }| j                  |      5  t        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)z-jz--multiprocessr    2r
   r(   r)   r`   -Trg   0)r"   r   r   r*   use_mpr   r;   s      r   test_multiprocessz#ParseArgsTestCase.test_multiprocess  s    ) 	GC#& G ,,c3Z8  A.'>?e.ABc4 02EFc4 02EFG G	GG Gs   BB((B1	c                     dD ]N  }| j                  |      5  t        j                  |g      }| j                  |j                         d d d        P y # 1 sw Y   [xY w)N)r   
--coverager    )r"   r   r   r2   tracer;   s      r   test_coveragezParseArgsTestCase.test_coverage  s[    % 	*C#& * ,,cU3)* *	** *rH   c           	      D   dD ]  }| j                  |      5  t        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    r)   r(   )r"   r   r   r*   coverdirr   r   r   r   r   r   r;   s      r   test_coverdirzParseArgsTestCase.test_coverdir%  s    % 	@C#& @ ,,c5\:  !#i.@.@%!HJ'>?	@ @	@@ @s   A3BB	c                     dD ]N  }| j                  |      5  t        j                  |g      }| j                  |j                         d d d        P y # 1 sw Y   [xY w)N)z-Nz--nocoverdirr    )r"   r   r   assertIsNoner   r;   s      r   test_nocoverdirz!ParseArgsTestCase.test_nocoverdir-  s]    ' 	/C#& / ,,cU3!!"++./ /	// /rH   c                    dD ]w  }| j                  |      5  t        j                  |dg      }| j                  |j                  d       | j                  |gd       | j                  |dgd       d d d        y y # 1 sw Y   xY w)N)z-tz--thresholdr    1000i  r(   r)   r`   )r"   r   r   r*   	thresholdr   r;   s      r   test_thresholdz ParseArgsTestCase.test_threshold3  s    & 	CC#& C ,,c6];  t4'>?e.AB	C C	CC Cs   AA>>B	c                 ~   dD ]  }| j                  |      5  t        j                  t        j                               5 }t        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   r2   	nowindowsr   r   )r   r!   stderrr-   r   s        r   test_nowindowsz ParseArgsTestCase.test_nowindows;  s    & 	PC#& P//> 8&$00#7B8-oo'I3OP P	P8 8P Ps$   (B3 B'AB3'B0,B33B<	c                     dD ]N  }| j                  |      5  t        j                  |g      }| j                  |j                         d d d        P y # 1 sw Y   [xY w)N)z-F	--foreverr    )r"   r   r   r2   foreverr;   s      r   test_foreverzParseArgsTestCase.test_foreverD  rn   rH   c                 *    | j                  dgd       y )Nz--xxxzusage:r   r   s    r   test_unrecognized_argumentz,ParseArgsTestCase.test_unrecognized_argumentJ  s    	8,r/   c                     t        j                  dg      }| j                  |j                         | j	                  |j
                  d       y )Nz--quir   )r   r   r2   rQ   r*   rB   r,   s     r   test_long_option__partialz+ParseArgsTestCase.test_long_option__partialM  s8    $$gY/!Q'r/   c                     t        j                  ddg      }| j                  |j                         | j	                  |j
                  d       | j                  |j                         y )NrP   rk   r   )r   r   r2   rQ   r*   rB   rl   r,   s     r   test_two_optionsz"ParseArgsTestCase.test_two_optionsR  sK    $$i%=>!Q'

#r/   c                 j    t        j                  ddg      }| j                  |j                  d       y )Nr9    )r   r   r*   r:   r,   s     r   #test_option_with_empty_string_valuez5ParseArgsTestCase.test_option_with_empty_string_valueX  s*    $$i_52&r/   c                 j    t        j                  dg      }| j                  |j                  dg       y )Nr)   )r   r   r*   r   r,   s     r   test_argzParseArgsTestCase.test_arg\  s*    $$eW-5'*r/   c                     t        j                  ddg      }| j                  |j                         | j	                  |j
                  d       | j	                  |j                  dg       y )NrP   r)   r   )r   r   r2   rQ   r*   rB   r   r,   s     r   test_option_and_argz%ParseArgsTestCase.test_option_and_arg`  sQ    $$i%78!Q'5'*r/   c                     t        j                  g d      }| j                  |j                  d       | j                  |j                  ddg       y )N)test_unaryopr?   
test_binopr@   r   r   )r   r   r*   rB   r   r,   s     r   test_arg_option_argz%ParseArgsTestCase.test_arg_option_argf  s@    $$%IJQ'><"@Ar/   c                 *    | j                  dgd       y )Nz--unknown-optionz(unrecognized arguments: --unknown-optionr   r   s    r   test_unknown_optionz%ParseArgsTestCase.test_unknown_optionk  s    +,B	Dr/   N)+__name__
__module____qualname__r   r%   r.   r4   r7   r<   rC   rG   rL   rR   rV   rY   r]   rb   ri   rm   rq   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   2   s    +
NE!D
@
(*-0/#.DI,I7$@,NG2@@
-L"G*@/CP,-(
$'++B
Dr/   r   T)slotsc                   2    e Zd ZU eed<   edz  ed<   eed<   y)RerunnameNrz   success)r   r   r   str__annotations__boolr   r/   r   r   r   p  s    
I:Mr/   r   c                   j    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Zd ZddZd Zy)BaseTestCaser@   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%sr@   z
                    import unittest

                    class Tests(unittest.TestCase):
                        def test_empty_test(self):
                            pass
                z.pyxzutf-8)encodingzcannot write z: )r   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outputrz   s       r   regex_searchzBaseTestCase.regex_search  s1    		%6IIeV<=r/   Fc                     |r|dz  }t        j                  d|z   t         j                        }| j                  ||       y )N
^)r  compiler  assertRegex)r   r  r  fulls       r   
check_linezBaseTestCase.check_line  s6    TME

4%<6'r/   c                     dt         d| j                  d}t        j                  ||t        j                        }t        d |D              S )Nr  z\[ *[0-9]+(?:/ *[0-9]+)*\] ()c              3   >   K   | ]  }|j                  d         yw)r@   N)group).0rz   s     r   	<genexpr>z4BaseTestCase.parse_executed_tests.<locals>.<genexpr>  s     7uEKKN7s   )
LOG_PREFIXTESTNAME_REGEXr  finditerr  r   )r   r  r  parsers       r   parse_executed_testsz!BaseTestCase.parse_executed_tests  s;     3 35UFBLL97777r/   )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        |      }g }|4|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-| z   }| j                  |d.| d       y )/Nc                     | dk7  rdS dS )Nr@   sr   r   )counts    r   pluralz1BaseTestCase.check_executed_tests.<locals>.plural  s    1*3,",r/   c                 |    t        |      }dj                  t        |            }| | |      fz  }|d|d}|S )N z:\n    $)lenr   sorted)line_formattestsr-  namesr  r.  s        r   
list_regexz5BaseTestCase.check_executed_tests.<locals>.list_regex  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 environmentz%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\.r@   zAll %sT)r  z(Test suite interrupted by signal SIGINT.zrun=,z \(filtered\)z	failures=zskipped=zTotal tests: r0  r   /failedenv_changedskippedresource_deniedrF   run_no_tests=zTotal test files: FAILUREzENV CHANGEDINTERRUPTEDzNO TESTS RANSUCCESS, zFAILURE then zResult: )
isinstancer   intr   r   r   appendr(  r   r*   setr  r$  rz   r2  	tests_runfailuresr<  r   any)"r   r  r5  r<  r:  r;  omittedrF   r>  r=  r\   interruptedfail_env_changedstatsr   r)  rerun_failedexecutedtotal_testsr7  r  goodtextpartslineruntotal_failedtotal_rerunreportr   nteststate	new_stater.  s"                                    @r   check_executed_testsz!BaseTestCase.check_executed_tests  s`    eS!GEgs#iGos+./Ofc"XFk3'&-Kgs#iGlC((>LeS!e$Ejj\F==##EJJ/,,V45kuzz*S]C,<fEX{F;	-	 2G<EOOFE*GYEOOFE*16:EOOFE*L*,EOOFE*2G<EOOFE*1EJJ<@EOOFE*$MNE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#i/E(5' 2>r/   c                     | j                  d|      }t        |j                  d            }| j                  d|cxk  xr dk  nc |       |S )NzUsing random seed ([0-9]+)r@   r   i )r  rE  r!  r2   )r   r  rz   randseeds       r   parse_random_seedzBaseTestCase.parse_random_seedM  sD    !!"?Hu{{1~&X118<r/   c           	      `   |sd}d|vrt         j                  |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 )Nr   r   T)universal_newlinesinputstdoutzCommand z failed with exit code z, but exit code z expected!

stdout:
---
z
---
z
stderr:
---
%s---
)	
subprocessSTDOUTrV  PIPE
returncoder   rd  r   r  )r   r   rc  exitcodekwprocr   s          r   run_commandzBaseTestCase.run_commandS  s    E2%,,BxL~~d $15$)%/__$ !#	$
 ??h& $i(DKKIC {{  
 ++& ' IIcNr/   c                 l    t         j                  dddg|} | j                  |fi |}|j                  S )Nz-Xfaulthandlerz-I)sys
executablerl  rd  )r   r   rj  rk  s       r   
run_pythonzBaseTestCase.run_pythono  s:    ndBTBt++{{r/   )NN)F)
r   r   r   r   Nr   r   FFF)Nr   )r   r   r   r  r  r%  r   r  r  r  r(  r]  r`  rl  rq  r   r/   r   r   r   w  sc    N&O*N;<(8 FH5768-/:?.3Y? 05uY?v8r/   r   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 )N)-Wd-E-bbry   test.regrtest--list-testsztest*.py	   
   z+Unexpectedly low number of tests found in:
rC  )r   )rq  r2  
splitlinesr   r   r   globescaper   r   assertGreater)r   r   r  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_testsv  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   rs  rs  u  s    @r/   rs  c                       e Zd Z	 dZ fdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Z ej                   ej                          d      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 )ProgramsTestCaser   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)ru  rv  rw  z-uallz-rwW--testdir=%s)r'   3600z-j4win32r   )superr   rangeNTESTr  r5  python_argsr   regrtest_argsextendro  platformrF  )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                  dt        | j                               y )NT)r\   rN  )r`  r]  r5  r2  )r   r  s     r   check_outputzProgramsTestCase.check_output  s9    v&!!&$**,0DJJ 	" 	Ir/   c                 H    | j                  |      }| j                  |       y r   )rq  r  )r   r   r  s      r   	run_testszProgramsTestCase.run_tests  s    &&!r/   c                     t         j                  j                  | j                  d      }g | j                  || j
                  | j                  }| j                  |       y )Nzregrtest.pyr   r   r   r   r  r  r5  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 )Nry   testr  r  r5  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 )Nry   rx  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 )Nry   ztest.autotestr  r  s     r   test_module_autotestz%ProgramsTestCase.test_module_autotest  r  r/   c                 ~    d}g | j                   d|| j                  | j                  }| j                  |       y )Nzfrom test import autotestz-cr  )r   r  r   s      r   test_module_from_test_autotestz/ProgramsTestCase.test_module_from_test_autotest  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/   z$run_tests.py script is not installedc                     t         j                  j                  t        ddd      }|g| j                  | j
                  }| j                  |       y )NToolsscriptszrun_tests.py)r   r   r   ROOT_DIRr  r5  r  r  s      r   test_tools_script_run_testsz,ProgramsTestCase.test_tools_script_run_tests  sD     hNK9++9djj9tr/   c                 \    | j                  |      }| j                  |j                         y r   )rl  r  rd  )r   r   rk  s      r   	run_batchzProgramsTestCase.run_batch  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 )Nr  buildbotztest.batr  ARM64-arm64ARM-arm32r   64bit-x64z+d)r   r   r   r  r   r  machinerF  architecturer   Py_DEBUGr  r5  )r   r  	test_argss      r   test_tools_buildbot_testz)ProgramsTestCase.test_tools_buildbot_test  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 existrO   r  r  r  r  r   r  r  z-d)r   r   r   r  isfiler  r  r  rF  r  r   r  r  r  r5  )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  unittest
skipUnlessr	  r
  r  r  ro  r  r  r  __classcell__)r  s   @r   r  r    s    
 E,I
" X2224?AA' 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 ej$                  ej(                  d      d        Z ej$                  ej(                  d      d        Zd Zd Zej2                  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,ej2                  d'        Z-d( Z.d) Z/d* Z0d+ Z1d, Z2d- Z3 ejh                  ejj                  d.      d/        Z6d0 Z7d1 Z8y2)3ArgsTestCasec                 P    ddd| j                   z  g|} | j                  |fi |S )Nry   r  r  )r   rq  )r   testargsrj  cmdargss       r   r  zArgsTestCase.run_tests  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
        r@   r   okr  r   rN  )r  r  r  r  r  r]  r2  )r   r  ir5  r  s        r   test_successzArgsTestCase.test_success	  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  r@   )r<  rN  r  r  r  r  r]  )r   r  test_ok	test_skipr5  r  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  ri  r
   r@   r:  rN  r  r  r  r  EXITCODE_BAD_TESTr]  r   )r   r  r  test_failingr5  r  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   r@   )r=  rN  ri  r   )r  r  r  r3  valuesr  r]  EXITCODE_NO_TESTS_RAN)r   r5  resourcer  
test_namesr  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|z  |t              }| j                  |      }| j                  ||       | j                  d|      }t        |j                  d            }| j                  ||       y )Nza
            import random
            print("TESTRANDOM: %s" % random.randint(1, 1000))
        randomr[   ri  zTESTRANDOM: ([0-9]+)r@   z--randseed=%s)
r  r  r  r  r  r`  r  rE  r!  r*   )	r   r  r  r  r_  rz   test_random	randseed2test_random2s	            r   r  zArgsTestCase.test_random[  s        $/ d5JK))&1!!"96B%++a.) o&@$)>   @**62	H-!!"96B5;;q>*{3r/   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   rt   r@   z00:00:%02i [%s/%s] %sz -- %s took 0 secrv   re   r  [r9  z] zLib/test/%s.py)r  r  r   r   r}   r~   r   	enumerater2  r   r  r]  )
r   r  r5  r   r   previousr   rU  r  rN  s
             r   ri   zArgsTestCase.test_fromfiles  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  rL  rN  )TEST_INTERRUPTEDr  r  EXITCODE_INTERRUPTEDr]  r   r  r  r  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   rT   r  z10 slowest tests:
(?:- z: .*
){})r  r  r  r]  r2  r%  r  )r   r  r5  r  r  s        r   rV   zArgsTestCase.test_slowest  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)Nr  r  )FT)multiprocessingrT   -j2ri  Tr   r  z10 slowest tests:
)r  r  r"   r  r  r]  r  )r   r  r  r  r   r  r  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   r@   r  zLlines +cov% +module +\(path\)\n(?: *[0-9]+ *[0-9]{1,2}% *[^ ]+ +\([^)]+\)+)+)r  r  r]  r  )r   r  r  r  s       r   r   zArgsTestCase.test_coverage  sO    
+d3!!&4&!:B&r/   c                 r    | j                  d      }| j                  d|d      }| j                  |d       y )Nr3   r1   key)rc  zPress any key to continue)r  r  r  )r   r  r  s      r   r4   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   r@   T)r:  rN  r   rE   r   test_runrz   r   r   )rF   rN  r   )r  r  r  r  r  r]  r   r   r  s       r   r   zArgsTestCase.test_forever  s        	5 T<MN!!&4&(4(1!Q*. 	" 	0
 YqI!!&4&((-d4>6:)< )2!Q*. 	" 	0r/   c                    | j                  d|      }d}| j                  t        j                  |       | j	                  dd|t
        t        j                        }| j                  ||g|d       d	}| j                  |t        j                  |             |d
|d}| j                  ||       t        |      5 }|j                         }	| j                  ||	       d d d        y # 1 sw Y   y xY w)Nr   r  r   r   z3:3:)ri  r   r@   r  z&beginning 6 repetitions
123456
......
z leaked [1, 1, 1] z, sum=3
)r  r}   r   r~   r  r  re  rf  r]  r  r  r~  r   r   read)
r   r  whatr  r   r  rU  line2r   reflogs
             r   
check_leakzArgsTestCase.check_leak  s    48	(((3):'1'8'8   : 	!!&4&Q!G:		$0594@eV$(^ 	)rWWYFMM%(	) 	) 	)s    #C,,C5zneed a debug buildc                 R    t        j                  d      }| j                  |d       y )Nz
            import unittest

            GLOBAL_LIST = []

            class RefLeakTest(unittest.TestCase):
                def test_leak(self):
                    GLOBAL_LIST.append(object())
        
referencesr  r  r  r   r  s     r   r   zArgsTestCase.test_huntrleaks  s'         	l+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 descriptorsr
  r  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   ry  )r  r  r  r*   rstripr|  )r   r  r5  r  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-casesry   test_method1)r  r  r  r  r*   r|  )r   r  testnameall_methodsr  s        r   test_list_caseszArgsTestCase.test_list_cases0  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   r  r  ri  Tr   r:  r\   rN  )r  r  r  r]  )r   r  
crash_testr5  r  s        r   test_crashedzArgsTestCase.test_crashedJ  s^     >%%7%>
JJ8IJ!!&%
,0 	" 	;r/   c                     t        j                  dt         j                        }|j                  |      D cg c]  }|j	                  d       c}S c c}w )Nz^(test[^ ]+).*ok$)flagsr@   )r  r  r  r&  r!  )r   r  r  rz   s       r   parse_methodszArgsTestCase.parse_methodsU  s<    

.bllC,1NN6,BC5ACCCs   Ac                    t        j                  d      }g 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  test_method2test_method3test_method4r  r  %s.Tests.test_method3rt   rv   r?   r{   r!  r#  )r  r  r  r   r   r}   r~   r   r   r  r  r*   )
r   r  r  r  r   subsetr   r   r  methodss
             r   test_ignorefilezArgsTestCase.test_ignorefileY  s       7###. ##	(((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)Nr  r   r  r?   r  r$  rt   rv   r   r"  )r  r  r  r  r  r*   r   r   r}   r~   r   r   )
r   r  r  r  r  r&  r   r%  r   r   s
             r   test_matchfilezArgsTestCase.test_matchfile}  s      7###. h/$$V,+. ##	(((3 #h.	0
 (C  	%B %d$%	% mXxH$$V, .1&)	% 	%s   $C>>Dc                     t        j                  d      }| j                  |      }| j                  |      }| j	                  ||g|d       | j                  d|t
              }| j	                  ||g|dd       y )	Nz
            import unittest

            class Tests(unittest.TestCase):
                def test_env_changed(self):
                    open("env_changed", "w").close()
        r  r@   )r;  rN  --fail-env-changedr  Tr;  rM  rN  )r  r  r  r  r]  EXITCODE_ENV_CHANGEDr   r  r  r  s       r   test_env_changedzArgsTestCase.test_env_changed  s        ###. )!!&8*.6a 	" 	A  4h)=   ?!!&8*(37q 	" 	B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  rE   r  test_fail_alwaysF)r   r   r
   rF   rN  )r  r  r  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  rE   r   r  test_fail_onceTr  r   r@   r2  z--fail-rerun)r   r   r   r}   r   r~   assertFalseexistsr  r  r  r  r]  r   r   EXITCODE_RERUN_FAIL)r   marker_filenamer  r  r  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  rE   r  ExampleTestsFr  r   r:  rF   rN  r  r  r  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  rE   r  r=  Fr  r
   r>  r?  r.  s       r   &test_rerun_teardown_class_hook_failurez3ArgsTestCase.test_rerun_teardown_class_hook_failure  rA  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  rE   r  Fr  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  rE   r  Fr  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  rE   r  r  Fr  r
   r>  r?  r.  s       r   test_rerun_setup_hook_failurez*ArgsTestCase.test_rerun_setup_hook_failureV  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  rE   r  r  Fr  r
   r>  r?  r.  s       r    test_rerun_teardown_hook_failurez-ArgsTestCase.test_rerun_teardown_hook_failurel  rJ  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  rE   r  r  Fr  r
   r2  r?  r.  s       r   #test_rerun_async_setup_hook_failurez0ArgsTestCase.test_rerun_async_setup_hook_failure  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  rE   r  r  Fr  r
   r>  r?  r.  s       r   &test_rerun_async_teardown_hook_failurez3ArgsTestCase.test_rerun_async_teardown_hook_failure  rJ  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  ry   
nosuchtestr  r   Tr>  rN  r)  r  r  r  r  r  r]  r.  s       r   test_no_tests_ranzArgsTestCase.test_no_tests_ran  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  r@   )r<  r  )r  r  r  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 rR  rV  )r   r  r  	testname2r  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 )NrS  r  z
            import unittest

            class Tests(unittest.TestCase):
                def test_other_bug(self):
                    pass
        ry   rT  test_other_bugr   r  r@   TrU  r  )r   r  r  
other_coder[  r  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  Tr@   r,  )r  r  r  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)
r  r  r  r  r  r]  r  r  r  r  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+  r?   r  Tr@   r,  zWarning -- Unraisable exceptionzException: weakref callback bugr  r  r  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+  r?   r  Tr@   r,  z$Warning -- Uncaught thread exceptionzException: bug in threadrf  r.  s       r   test_threading_excepthookz&ArgsTestCase.test_threading_excepthookO  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)r?   rJ   )optionr+  ri  Tr@   r,  )r  r  r  r"   r  r-  r]  r  )r   r  r  r  rk  cmdr  s          r   test_print_warningzArgsTestCase.test_print_warningp  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   environgetr   UNICODE_GUARD_ENVassertIsNotNoneisasciir  )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wbry   r  z--tempdir=%sz	--cleanup)
r   r   r   r   mkdirr   closerq  r7  r8  )r   r   r   r6  r  r   s         r   test_cleanupzArgsTestCase.test_cleanup  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+  r?   r  ri  T)r;  rM  r\   rN  zWarning -- z& leaked temporary files (1): mytmpfile)	r  r  r  r  r  r-  r]  r2  r   )r   r  _	testnamesr  r  s         r   test_leak_tmp_filezArgsTestCase.test_leak_tmp_file  s      
  
 ;@(CQT%%4%0C	C 4dE ?I ?)=?!!&).737,0(+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       d}	 |j                  |       | j                  | d|       t        j                  d|d      }| j                  |      }| j                  dd	d
|t              }| j                  ||g|gdd       y # t        $ r Y iw xY w)Nr  z#cannot get regrtest worker encodings	   byte:
z can decode non-ASCII bytes zf
            import sys
            # bytes which cannot be decoded from UTF-8
            nonascii = z]
            sys.stdout.buffer.write(nonascii)
            sys.stdout.buffer.flush()
        r  r+  r?   -j1r  Tr   r  )ro  r  localegetencodingrd  r  
__stdout__r  decodeUnicodeDecodeErrorr  r  r  r  r  r]  )r   r  nonasciir  r  r  s         r   test_mp_decode_errorz!ArgsTestCase.test_mp_decode_error  s    <<7"))+Hzz**H>>22#MM$GI)	QOOH% MMXJ&B8,OP % !| $	   ###. 4dE8):   <!!&8**2,0() 	" 	+! " 		s   5C: :	DD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+  r?   r  r  Tr@   r   r  r  r.  s       r   test_doctestzArgsTestCase.test_doctest  sv     %	 : ###. 4dE8):   <!!&8**2,0(1!Q(: 	" 	<r/   N)9r   r   r   r  r  r  r  r  r  ri   r  rV   r  r   r4   r   r  r  r  r   r  r   r  r  r  cpython_onlyr  r  r'  r)  r/  r3  r;  r@  rC  rE  rG  rI  rL  rN  rP  rW  rY  r\  r`  rb  rd  rg  ri  rm  ru  r|  skipIfis_wasir  r  r  r   r/   r   r  r     s   .8(+9"+>40/>b='/&'= 0D)( X))+?@, A, X))+?@2 A2 ;4 ; ;D"*H'*RB*9,)*V+.+.+,+,+,+,+*+,: A:":0 + +6N8!AF:B'0R,9 X__W__EG"G"4"+H%<r/   r  c                       e 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 secr@   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)r*   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	   r*   r   )r   	normalizes     r   test_normalize_test_namez"TestUtils.test_normalize_test_name/  s    '	#UV&	(#MX\])	+#[fjk'	))$?$OP)$GRVWXr/   N)r   r   r   r  r  r   r/   r   r  r    s    ),	Yr/   r  __main__)6r   dataclassesr}  r   r  os.pathr   r  r  re  ro  r	  r   r  r  r  r   r   test.supportr   r   test.libregrtestr   r   test.libregrtest.runtestr	   has_subprocess_supportSkipTestr   r   r   r   r  r   normpathr$  r  r-  r  r9  r  r  r  TestCaser   	dataclassr   r   rs  r  r  r  r   mainr   r/   r   <module>r     s      	    	  
       - ) 8%%
(

=
>>77<<14>77??277++H56E
     "8?? $ 	 {D)) {D|	 T"  #{8$$ {|@| @0pK| pKfU<< U<p  Y!!  YF zHMMO r/   