
    7bhr                       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 dd
lmZm Z m!Z! ddl"m#Z# ddl$m%Z% ejL                  s ejN                  d      ejP                  jS                  ejP                  jU                  e+      dd      Z,ejP                  j[                  ejP                  j]                  e,            Z,dZ/dZ0ddjS                  e0       dZ0dZ1dZ2dZ3dZ4dZ5 ejl                  d      Z7 G d dejp                        Z9 ejt                  d       G d d             Z; G d  d!ejp                        Z< G d" d#e<      Z= G d$ d%e<      Z> G d& d'e<      Z? G d( d)ejp                        Z@eAd*k(  r ej6                          yy)+zM
Tests of regrtest.py.

Note: test_regrtest cannot be run twice in parallel.
    N)ElementTree)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} )?)passedfailedskippedinterruptedzenv changedz	timed outzran no testszworker non-zero exit codez(?:|)               z
    from signal import SIGINT, raise_signal
    try:
        raise_signal(SIGINT)
    except ImportError:
        import os
        os.kill(os.getpid(), SIGINT)
    c                   B   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,d4d*Z-d+ Z.d, Z/d- Z0d. Z1d/ Z2d0 Z3d1 Z4d2 Z5y3)5ParseArgsTestCasezC
    Test regrtest's argument parsing, function _parse_args().
    c                 ,    t        j                  |       S N)r   _parse_args)argss    </opt/python-3.12.12/usr/lib/python3.12/test/test_regrtest.py
parse_argszParseArgsTestCase.parse_argsK   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.checkErrorO   sW    $$&#t/@/@/LOOD! 0M&c3<<>* 0M/L&&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_helpT   s    !C#&,,.#&&z2OOSE* 3 / <cllnM	 '& " 32 /. '&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timeoutr0   r,   )r)   nsr8   s      r    test_timeoutzParseArgsTestCase.test_timeout\   s    __k512S) %EE*__
5'&:%;<  T2 +* %
 	'>?e,.FG +*s   2B++B4	c                 ^    | j                  dg      }| j                  |j                         y )N--wait)r!   
assertTruewaitr)   r=   s     r    	test_waitzParseArgsTestCase.test_waiti   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.   r:   r9   )r0   r!   r;   startr,   r)   r/   r=   s      r    
test_startzParseArgsTestCase.test_startm   s`    "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!   r;   verboserC   s     r    test_verbosezParseArgsTestCase.test_verboset   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.   )r0   r!   rA   rerunrH   s      r    
test_rerunzParseArgsTestCase.test_rerun   sI    0C#&__cU+) '& 1&&   .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.   )r0   r!   rA   verbose3rH   s      r    test_verbose3zParseArgsTestCase.test_verbose3   I    %C#&__cU+, '& &&&rU   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   )r0   r!   rA   quietr;   rO   rH   s      r    
test_quietzParseArgsTestCase.test_quiet   s]    "C#&__cU+)  Q/ '& #&&s   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.   )r0   r!   rA   
print_slowrH   s      r    test_slowestzParseArgsTestCase.test_slowest   sI    $C#&__cU+. '& %&&rU   c                     | j                  dg      }| j                  |j                         | j                  dg      }| j                  |j                         y )Nz--headerrN   )r!   rA   headerrC   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_EPOCHrj   )r0   r!   rA   	randomizer   EnvironmentVarGuardr   RegrtestassertFalseassertIsInstancerandom_seedstrr;   int)r)   r/   r=   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  r9   r:   invalid int value)r!   r;   rr   rA   rm   r,   rC   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.   r:   r9   -sdon't go together)r0   r!   r;   fromfiler,   rH   s      r    test_fromfilezParseArgsTestCase.test_fromfile   sv    %C#&__c5\2  e4'>?eT 24GH	 '& &&&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.   )r0   r!   rA   excluderH   s      r    test_excludezParseArgsTestCase.test_exclude   I    $C#&__cU+

+ '& %&&rU   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)r   z--singler.   r}   r:   r   )r0   r!   rA   singler,   rH   s      r    test_singlezParseArgsTestCase.test_single   s_    #C#&__cU+		*dE 24GH '& $&&rJ   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   Tr9   )-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)r0   r!   r;   match_testsr,   
addCleanupr   unlinkTESTFNopenprintospathabspath)r)   r/   r=   fpfilenames        r    
test_matchzParseArgsTestCase.test_match   s   "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.   rL   rW   z#-G/--failfast needs either -v or -W)r0   r!   rA   failfastr,   rH   s      r    test_failfastzParseArgsTestCase.test_failfast   s~    %C#&__c4[1,__c4[1,'LM '& &&&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,-guir9   r:   zinvalid resourcez
all,tzdatatzdataextralargefile)	r0   r!   r;   use_resourceslistr   ALL_RESOURCESremover,   )r)   r/   r=   expecteds       r    test_usezParseArgsTestCase.test_use   s]    C#&__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+ '& !&&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.   4Gr9   )r0   r!   r;   memlimitr,   rH   s      r    test_memlimitzParseArgsTestCase.test_memlimit  s`    %C#&__c4[1  d3'>? '& &&&rJ   c                     | j                  ddg      }| j                  |j                  t        j                  j                  t        j                  d             | j                  dgd       y )Nz	--testdirr:   r9   )	r!   r;   testdirr   r   joinr   SAVEDCWDr,   rC   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.   )r0   r!   rA   runleaksrH   s      r    test_runleakszParseArgsTestCase.test_runleaks$  r[   rU   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.logr9   6z&needs 2 or 3 colon-separated argumentszfoo:zinvalid huntrleaks valuez6:foo)r0   r!   r;   
huntrleaksr,   rH   s      r    test_huntrleaksz!ParseArgsTestCase.test_huntrleaks*  s   'C#&__c3Z0  0DE__c4[1  0DE__c4[1  0DE__c?%;<  0CD'>?c
 HJf/IJg0JK '& (&&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   r9   r:   rz   -Tr   r6   )r0   r!   r;   use_mpr,   rH   s      r    test_multiprocessz#ParseArgsTestCase.test_multiprocess;  s    )C#&__c3Z0  A.'>?e.ABc4 02EFc4 02EF '& *&&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.   )r0   r!   rA   tracerH   s      r    test_coveragezParseArgsTestCase.test_coverageE  sI    %C#&__cU+) '& &&&rU   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.   r:   r9   )
r0   r!   r;   coverdirr   r   r   r   r   r,   rH   s      r    test_coverdirzParseArgsTestCase.test_coverdirK  sy    %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.   )r0   r!   assertIsNoner   rH   s      r    test_nocoverdirz!ParseArgsTestCase.test_nocoverdirS  sK    'C#&__cU+!!"++. '& (&&rU   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  r9   r:   rz   )r0   r!   r;   	thresholdr,   rH   s      r    test_thresholdz ParseArgsTestCase.test_thresholdY  ss    &C#&__c6]3  t4'>?e.AB	 '& '&&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)
r0   
contextlibredirect_stderrioStringIOr!   rA   	nowindowsr(   r'   )r)   r/   stderrr=   r+   s        r    test_nowindowsz ParseArgsTestCase.test_nowindowsa  s    &C#&//>&#/B ?-oo'I3O '& '>> '&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.   )r0   r!   rA   foreverrH   s      r    test_foreverzParseArgsTestCase.test_foreverj  r   rU   c                 *    | j                  dgd       y )Nz--xxxzusage:r,   r)   s    r    test_unrecognized_argumentz,ParseArgsTestCase.test_unrecognized_argumentp  s    	8,r"   c                     | j                  dg      }| j                  |j                         | j                  |j                  d       y )Nz--quir   )r!   rA   r_   r;   rO   rC   s     r    test_long_option__partialz+ParseArgsTestCase.test_long_option__partials  s6    __gY'!Q'r"   c                     | j                  ddg      }| j                  |j                         | j                  |j                  d       | j                  |j
                         y )Nr^   r   r   )r!   rA   r_   r;   rO   r   rC   s     r    test_two_optionsz"ParseArgsTestCase.test_two_optionsx  sI    __i56!Q'

#r"   c                 b    | j                  ddg      }| j                  |j                  d       y )NrF   r7   )r!   r;   rG   rC   s     r    #test_option_with_empty_string_valuez5ParseArgsTestCase.test_option_with_empty_string_value~  s(    __i_-2&r"   c                 b    | j                  dg      }| j                  |j                  dg       y )Nr:   )r!   r;   r   rC   s     r    test_argzParseArgsTestCase.test_arg  s(    __eW%5'*r"   c                     | j                  ddg      }| j                  |j                         | j                  |j                  d       | j                  |j
                  dg       y )Nr^   r:   r   )r!   rA   r_   r;   rO   r   rC   s     r    test_option_and_argz%ParseArgsTestCase.test_option_and_arg  sO    __i/0!Q'5'*r"   c                     | j                  g d      }| j                  |j                  d       | j                  |j                  ddg       y )N)test_unaryoprL   
test_binoprM   r   r   )r!   r;   rO   r   rC   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= t	        j
                  |      }d d d        |S # 1 sw Y   S xY w)Nrl   )r   r   r   rn   r   ro   )r)   r   r=   ru   rv   s        r    create_regrtestz!ParseArgsTestCase.create_regrtest  sR      & **,'(}}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   r;   num_workers
want_rerunrA   rm   rq   rr   rt   fail_env_changed
fail_rerunprint_slowestoutput_on_failuresortedr   )r)   r   r   rS   rv   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
  r;   r<   r)   r   r   rv   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)rS   r  )python-Xdev)r	  r   r   r   r
  r;   r<   
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
  r;   r<   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   rp   _add_python_opts)r)   r   r=   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   rA   want_bisectr)   r   rv   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:10rX   r   
   )
r   r$   r   assertIsNotNonehunt_refleakr;   warmupsrunsrp   r  r#  s      r    test_verbose3_huntrleaksz*ParseArgsTestCase.test_verbose3_huntrleaks  s    +$$&++D1H 'X223..66:..33R8334 '&s   B66B?c                    ddg}t        j                         5  | j                  |      }d d d        | j                  j                  d       | j                  |j                         ddg}t        j                         5  | j                  |      }d d d        | j                  |j                  d       | j                  |j                         y # 1 sw Y   xY w# 1 sw Y   MxY w)N-j2z--single-processr   r  )r   r$   r   r;   r  rA   single_processr#  s      r    test_single_processz%ParseArgsTestCase.test_single_process  s    )*$$&++D1H '--q1//0/0$$&++D1H '--q1//0 '& '&s   CC C C)N)T)6__name__
__module____qualname____doc__staticmethodr!   r,   r3   r>   rD   rI   rP   rT   rZ   r`   rd   rg   rw   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
  r  r  r  r  r  r$  r+  r/   r"   r    r   r   F   s    ) )+
NH!@
(*-0/#=,DI,I"[HNG2@@
-L"G*@/CP,-(
$'++B
D4G04.
.
51r"   r   T)slotsc                   2    e Zd ZU eed<   edz  ed<   eed<   y)RerunnameNr   success)r0  r1  r2  rs   __annotations__boolr5  r"   r    r8  r8    s    
I:Mr"   r8  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)BaseTestCaserM   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%srM   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   rF  r   r   r   r   writePermissionError	sysconfigis_python_buildskipTest)r)   r9  coder   r   excs         r    create_testzBaseTestCase.create_test  s    l999D''1,'<?? $ D ##d*ww||DOOTE\:	(($/	dC'2b 3  3 	  	,,.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
^)rZ  escapecompiler\  assertRegex)r)   r_  r   fullr^  s        r    
check_linezBaseTestCase.check_line#  sG    ii(GtOG

4'>2<<8'r"   c                     dt          d| j                   dt         }t        j                  ||t        j
                        }t        d |D              S )Nrc  z\[ *[0-9]+(?:/ *[0-9]+)*\] (z) c              3   >   K   | ]  }|j                  d         yw)rM   N)group).0r   s     r    	<genexpr>z4BaseTestCase.parse_executed_tests.<locals>.<genexpr>/  s     7uEKKNs   )
LOG_PREFIXTESTNAME_REGEXRESULT_REGEXrZ  finditerr\  r   )r)   r_  r^  parsers       r    parse_executed_testsz!BaseTestCase.parse_executed_tests+  sN    j\ "))*"\N<UFBLL97777r"   r5  )r   r   env_changedomittedrS   run_no_testsresource_deniedrm   parallelr   r  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 )NrM   sr7   r5  )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   r	  )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 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\.rM   zAll %s)rg  z(Test suite interrupted by signal SIGINT.zrun=,z \(filtered\)z	failures=zskipped=zTotal tests: r  r   /r   rt  r   rw  rS   rv  =zTotal test files: FAILUREzENV CHANGEDINTERRUPTEDzNO TESTS RANSUCCESS, z then zResult: )
isinstancers   rt   r   r9  r:  appendrs  r   r;   setrh  rn  r   r  	tests_runfailuresr   r   any)#r)   r_  r  statsr   r   rt  ru  rS   rv  rw  rm   rx  r   r  r   ry  rerun_failedexecutedtotal_testsr  r^  goodtextpartslineruntotal_failedtotal_rerunreportr9  nteststate	new_stater~  s#                                     @r    check_executed_testsz!BaseTestCase.check_executed_tests1  so    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./
KD% aw/0
 %SXXf%5$6740 LL#+LL'LL'D&+w!13 4LL(LL#		% %*]]		IgVI;/E(5' 2>r"   r_  returnc                 H    | j                  d|      }|j                  d      S )NzUsing random seed: (.*)rM   )r`  rk  )r)   r_  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 )Nr7   r   ru   rl   T)r  inputstdoutru   zCommand z failed with exit code z, but exit code z expected!

stdout:
---
z
---
z
stderr:
---
%s---
)
subprocessSTDOUTpopdictr   environr  PIPE
returncoders   r  r   r]  )r)   r   r  exitcodekwru   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   )r0  r1  r2  rM  rP  ro  rH  rX  r`  rh  rs  r  rs   r  r  r  r5  r"   r    r>  r>    sr    N&O*N;<(8 &()+R#'b-/',u%.3%*U]?~  !F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)	zP
        Check that regrtest appears to find the expected set of tests.
        )-Wd-E-bbr   test.regrtest--list-testsztest*.py	   r&  z+Unexpectedly low number of tests found in:
r  )r*   N)r  r  
splitlinesr   r   r   globrd  rB  rC  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_tests  s     K&&)&*;*;*=&># "T[[9R-S-7!9&)$))4I*J&K# 	66q8"<M"ii(9(9(;<= ? 	 	@r"   N)r0  r1  r2  r  r5  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)r5   3600z-j4win32r   )superrH  rangeNTESTrX  r  python_argsrF  regrtest_argsr  r  platformr  )r)   index	__class__s     r    rH  zProgramsTestCase.setUp!  s     7<DJJ6GH6GUd&&(6GH
/%v,t>@!!">?<<7"%%d+ # Is   B1c                     | j                  |      }| j                  |j                         |       | j                  || j                  dt        | j                               y )NT)rm   r  )r  rA   isdigitr  r  r  )r)   r_  randseeds      r    check_outputzProgramsTestCase.check_output.  sR    ))&1((*H5!!&$**,0DJJ 	" 	Ir"   c                 L    | j                  ||      }| j                  |       y )N)ru   )r  r  )r)   r   ru   r_  s       r    	run_testszProgramsTestCase.run_tests5  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_regrtest9  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_regrtestF  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_autotestL  r  r"   c                 ~    d}g | j                   d|| j                  | j                  }| j                  |       y )Nzfrom test import autotestz-cr  )r)   rV  r   s      r    test_module_from_test_autotestz/ProgramsTestCase.test_module_from_test_autotestR  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_autotestY  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_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 )NToolsbuildbotztest.batr  ARM64-arm64ARM-arm32r   64bit-x64z+d)r   r   r   ROOT_DIRrF  r  machiner  architecturer   Py_DEBUGr  r  )r)   r  	test_argss      r    test_tools_buildbot_testz)ProgramsTestCase.test_tools_buildbot_testc  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 existr]   r  r  r  r  r   r  r   z-d)r   r   r   r  isfilerU  r  r  r  r  r   r  r  r  r  )r)   r  rt_argss      r    test_pcbuild_rtz ProgramsTestCase.test_pcbuild_rtt  s     h(9:ww~~f%MMF6(*:;<&(NN8$5(NN8$""$Q'72NN6"NN4 vJJ$*<*<JtzzJr"   r   )r0  r1  r2  r3  r  rH  r  r  r  r  r  r  r  r  r  unittest
skipUnlessrS  rT  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 ZGdC ZHyD)EArgsTestCasez2
    Test arguments of the Python test suite.
    c                 P    ddd| j                   z  g|} | j                  |fi |S )Nr   r  r  )rF  r  )r)   testargsr  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
        rM   r   okrV  r   r  )rN  rO  r  rX  r  r  r  )r)   rV  ir  r_  s        r    test_successzArgsTestCase.test_success  s        AFaL1!!Bqc(!6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  rM   )r   r  rN  rO  rX  r  r  )r)   rV  test_ok	test_skipr  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  r  r   rM   r   r  rN  rO  rX  r  EXITCODE_BAD_TESTr  r   )r)   rV  r  test_failingr  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   rM   )rw  r  r  r   )rN  rO  rX  r	  valuesr  r  EXITCODE_NO_TESTS_RAN)r)   r  resourcerV  
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| |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))
        randomri   r  zTESTRANDOM: ([0-9]+)rM   --randseed=rk   )rl   r  ru   zTESTRANDOM: 520XYZzTESTRANDOM: 22r7   )rN  rO  rX  r  r)  r  r`  rt   rk  r;   rA   r  r  r   r  rh  )r)   rV  r  r_  r  r   test_random	randseed2test_random2	timestampru   s              r    r3  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   rM   z00:00:%02i [%s/%s] %sz -- %s took 0 secr   r~   r  [r  z] zLib/test/%s.py)r  rX  r   r   r   r   r   	enumerater  r   r  r  )
r)   r  r  r   r   previousr9  r  r_  r  s
             r    r   zArgsTestCase.test_fromfile  s   16q:!!#:
 ##	(((3 (C BH(2t/ %UT:;/(::Dd$  3 ! h7E
!!&%u!= (C B(2teSZ>RH  3 ! h7!!&%u!= (C Bd$  ! h7!!&%u!= (C B&-B7  ! h7!!&%u!=[ ; !  !  !  ! s6   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   ru  r   r  )TEST_INTERRUPTEDrX  r  EXITCODE_INTERRUPTEDr  r)   rV  r  r_  s       r    test_interruptedzArgsTestCase.test_interruptedG  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   rb   r  z10 slowest tests:
(?:- z: .*
){})r  rX  r  r  r  ro  rh  )r)   r  r  r_  r^  s        r    rd   zArgsTestCase.test_slowestN  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  r  )multiprocessingrb   r-  r  Tr   r=  z10 slowest tests:
)r>  rX  r0   r  r?  r  rh  )r)   rV  r  rE  r   r_  r^  s          r    test_slowest_interruptedz%ArgsTestCase.test_slowest_interruptedX  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   rM   r  zLlines +cov% +module +\(path\)\n(?: *[0-9]+ *[0-9]{1,2}% *[^ ]+ +\([^)]+\)+)+)rX  r  r  rh  )r)   r  r_  r^  s       r    r   zArgsTestCase.test_coveragek  sO    
+d3!!&4&!:B&r"   c                 r    | j                  d      }| j                  d|d      }| j                  |d       y )NrB   r@   key)r  zPress any key to continue)rX  r  rh  )r)   r  r_  s      r    rD   zArgsTestCase.test_waitt  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   rM   T)r   r  r   rR   r   test_runr   r:  r   )rS   r  r   )rN  rO  rX  r  r"  r  r   r8  r@  s       r    r   zArgsTestCase.test_foreverz  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   rM   r   z6beginning 6 repetitions. .*\n123:456\n[.0-9X]{3} 111\nz leaked [1, 1, 1] z, sum=3
)rX  r   r   r   r  r  r"  r  r  r  rh  r'   r   read)r)   rV  whatrO  r  r   cmdr_  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 buildrO  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())
        
referencesrN  rN  rO  rY  )r)   rO  rV  s      r    check_huntrleakszArgsTestCase.check_huntrleaks  s+         	lDr"   c                 (    | j                  d       y NFrN  r]  r   s    r    r   zArgsTestCase.test_huntrleaks  s    %0r"   c                 (    | j                  d       y NTrN  r`  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   rQ  r!  rS  zBisect z: exit code 0zBisection completed inzTests (1):
* z.RefLeakTest.test3
)rN  rO  rX  r   r   r   r  r"  r  r  r'   )r)   rV  r  r   rV  r_  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 descriptorsr\  )r)   rV  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  rX  r  r;   rstripr  )r)   r  r  r_  s       r    test_list_testszArgsTestCase.test_list_tests  s_    -21X6X!!#X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)rN  rO  rX  r  r;   r  )r)   rV  testnameall_methodsr_  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r9  rV  r-  r  Tr   r   rx  r  )rX  r  r"  r  )r)   rV  
crash_testr  r_  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$flagsrM   )rZ  re  r\  rq  rk  )r)   r_  r^  r   s       r    parse_methodszArgsTestCase.parse_methods+  sB    

.bllC,1NN6,BC,B5A,B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  rl  %s.Tests.test_method3r   r   rL   r   test_method2test_method4)rN  rO  rX  r   r   r   r   r   r   r  ry  r;   )	r)   rV  rm  r   subsetr   r9  r_  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)Nr{  )rl  r}  test_method3r~  r  rL   rl  r|  r   r   r   r  )rN  rO  rX  r  ry  r;   r   r   r   r   r   r   )
r)   rV  rn  rm  r_  r  r   r  r   r9  s
             r    test_matchfilezArgsTestCase.test_matchfileQ  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  rM   )rt  r  --fail-env-changedr/  Trt  r  r  rR   rM  r   )rt  rS   r  )rN  rO  rX  r  r  EXITCODE_ENV_CHANGEDr8  r)   rV  rm  r_  s       r    test_env_changedzArgsTestCase.test_env_changedz  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  rR   r/  test_fail_alwaysF)r:  r   r   rS   r  )rN  rO  rX  r  r"  r  r8  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  rR   r   r/  test_fail_onceTrM  r   rM   r  z--fail-rerun)r   r   r   r   r   r   rp   existsrN  rO  rX  r  r  r8  r   EXITCODE_RERUN_FAIL)r)   marker_filenamerV  rm  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  rR   r/  ExampleTestsFrM  r   r   rS   r  rN  rO  rX  r  r"  r  r8  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  rR   r/  r  FrM  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  rR   r/  FrM  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  rR   r/  FrM  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  rR   r/  r  FrM  r   r  r  r  s       r    test_rerun_setup_hook_failurez*ArgsTestCase.test_rerun_setup_hook_failure3  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  rR   r/  r  FrM  r   r  r  r  s       r     test_rerun_teardown_hook_failurez-ArgsTestCase.test_rerun_teardown_hook_failureI  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  rR   r/  r  FrM  r   r  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  rR   r/  r  FrM  r   r  r  r  s       r    &test_rerun_async_teardown_hook_failurez3ArgsTestCase.test_rerun_async_teardown_hook_failuret  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rv  r  ry  rN  rO  rX  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  rM   )r   r  )rN  rO  rX  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)   rV  rm  	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 )Nr  r  z
            import unittest

            class Tests(unittest.TestCase):
                def test_other_bug(self):
                    pass
        r   r  test_other_bugr   r/  rM   Tr  r  )r)   rV  rm  
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/  TrM   r  )rN  rO  rX  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)
rN  rO  rX  r  r"  r  rf  rZ  re  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  rL   r/  TrM   r  zWarning -- Unraisable exceptionzException: weakref callback bugrN  rO  rX  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  rL   r/  TrM   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)rL   rW   )optionr  r  TrM   r  )rN  rO  rX  r0   r  r  r  rf  )r)   rV  rm  r^  r  rV  r_  s          r    test_print_warningzArgsTestCase.test_print_warningM  s        $ ###. #FV,+VX>'L7KL))&8*7?j;?01 * 3   / -, #,,s   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'  isasciirU  )r)   guards     r    test_unicode_guard_envz#ArgsTestCase.test_unicode_guard_envv  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   rF  mkdirr   closer  rp   r  )r)   rB  r   r  r  r9  s         r    test_cleanupzArgsTestCase.test_cleanup~  s    '',,t0AB
77<<1BCXt""$(#!DOO3  	 DRWW^^D148 r"   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  rL   r-  r  T)rt  r  rx  r  zWarning -- z& leaked temporary files (1): mytmpfile)	rN  rO  r  rX  r  r  r  r  r'   )r)   rV  _	testnamesr_  rm  s         r    test_leak_tmp_filezArgsTestCase.test_leak_tmp_file  s      
  
 ;@(C(QT%%4%0(	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   r5  )rl  chs     r    rm  z8ArgsTestCase.test_worker_decode_error.<locals>.<genexpr>  s     6oos         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  rL   rR  TrM   )rx  r  F)r^  )r  r  localegetencodingr  rL  
__stdout__rU  bytesr  encodedecodeUnicodeDecodeErrorrN  rO  rX  r  r  rh  )	r)   rL  nonasciicorrupted_outputassertion_failedexpected_linerV  rm  r_  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  rL   rR  r/  TrM   r   rs  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}")
        rM   r   r3  rr  iJ3rj   r0  r   r&  r   r   zRandom numbers: z^Random numbers: .*$rw  )rN  rO  r  rX  r  r  r  r  r.  seedrandintrZ  findallr\  r;   )r)   rO  rV  r  r  rr   rV  r_  r  numbersr   r^  matchess                r    _check_random_seedzArgsTestCase._check_random_seed  s!         3-)'Q !!QC'8t!D' 	 ) "K=9:JJCJ<()

5%K  5:"I>Iq6>>!T*I>%gY/'**UF",,?8*s5z"9:)) ?s   D-Dc                 (    | j                  d       y r_  r  r   s    r    test_random_seedzArgsTestCase.test_random_seed!  s    E2r"   c                 (    | j                  d       y rb  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  rx  )rN  rO  r  rX  r  r  shlexr   r  r  r  )r)   rV  r  r  r  r_  s         r    test_python_commandz ArgsTestCase.test_python_command'  s        7<Ah?h!!t!,h? 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cr?  r  r  r  r   r  r  r   r  )r   r   r   rB  rC  r  r  )r)   r   r9  r  r   r_  s         r    test_unload_testszArgsTestCase.test_unload_tests<  s     '',,rwwx8-/BD5DE_T>$(_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   )rN  rO  rX  r  r  rF  r  r  r  r  r;   r  )r)   r  rV  rm  rV  r  s         r    check_add_python_optsz"ArgsTestCase.check_add_python_optsO  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.   )r0   r  )r)   r/   s     r    test_add_python_optsz!ArgsTestCase.test_add_python_opts  s7    -C#&**3/ '& .&&s   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=0rR  r1  T)r   r  rx  z
Exit code z
 (SIGSEGV)zjust before crash!F)rg  r^  )r  r  ImportErrorrU  rN  rO  rX  r  r   r  r   set_sanitizer_env_varr  r"  r  
MS_WINDOWSrt   signalSIGSEGVr'   rh  )r)   r  rV  rm  ru   r  r_  r  s           r    test_worker_output_on_failurez*ArgsTestCase.test_worker_output_on_failure  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  rX   rM   r  zSPAM SPAM SPAMr   z3:3rR  Tr  )rN  rO  rX  r  r  assertNotInr   r  r  s       r    rZ   zArgsTestCase.test_verbose3  s        ###. h7!!&(!!<)62 ^^D%hOF%%fha$%O-v6	 r"   c           
         t        j                  d      }| j                  |      }t        j                  }| j                  t        j                  |       | j                  |d|t              }| j                  |||t        ddd             t        |d	      5 }|j                         }d d d        t        j                        }| j                  t!        |j#                  d
            d       | j                  t!        |j#                  d            d       | j                  t!        |j#                  d            d       |d   d   }| j                  |j#                  d      d       | j                  |j#                  d      d       | j%                  t'        |j#                  d            d       |j)                  d      D ]  }	| j                  |	j*                  d         y # 1 sw Y   DxY w)Nz
            import unittest
            from test import support

            class VerboseTests(unittest.TestCase):
                def test_failed(self):
                    print("abc \x1b def")
                    self.fail()
        r  z--junit-xmlr/  rM   r   r   utf8rK  r  errorsr  statusr  result	completedtimez
system-outzabc \x1b def)rN  rO  rX  r   r   r   r   r  r"  r  r   r   rT  r   
fromstringr;   rt   r  r  floatiterr  )
r)   rV  rm  r   r_  r   content	testsuitetestcaser2   s
             r    test_xmlzArgsTestCase.test_xml  s       ###. ##	(((3-):   <!!&()1(1!Q(: 	" 	<
 (V,ggiG -  **73	Y]]734a8Y]]845q9Y]]:67;Q<?h/7h/=5f!56:==.CSXX7 / -,s   G11G;N)Ir0  r1  r2  r3  r  r  r  r$  r,  r3  r   rA  rd   rF  r   rD   r   rY  r  r  r   r  r<  r]  r   rc  re  rg  rj  ro  cpython_onlyru  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  skipIfis_wasir  r  r  r  r  r  r  r  r  r  
is_androidr  rZ   r  r5  r"   r    r  r    sG   .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7.$8r"   r  c                   0    e Zd 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 secrM   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"   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)rt   r  r1  r  r;   r	   get_signal_name)r)   r  r   s      r    test_get_signal_namezTestUtils.test_get_signal_name	  s`    &--  (+&..!!9-31	#
Hh U228<hQ#
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  Nr5  )rl  r9  s     r    rm  z2TestUtils.test_format_resources.<locals>.<genexpr>(	  s      #5MD&*em $(Ms   zresources: all,-cpur   zresources: all,tzdata)r	   format_resourcesr   r;   tuple)r)   r9  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)   rA  s     r    __init__z0TestUtils.test_match_test.<locals>.Test.__init__1	  s	    &r"   c                     | j                   S r   r@  r   s    r    idz*TestUtils.test_match_test.<locals>.Test.id4	  s    ||#r"   N)r0  r1  r2  rB  rD  r5  r"   r    Testr>  0	  s    '$r"   rE  z"test.test_os.FileTests.test_accessz'test.test_os.Win32ErrorTests.test_chdirz#test.test_shutil.TestCopy.test_copy_test_matchersr5  T)test_osT)test_*T)	filetestsT)	FileTestsT)*test_os.*.test_*T)r+  T)	DONTMATCHTF)rG  F)rH  F)rI  F)rJ  F)rK  F)r+  F)rL  F)*test_osF)rM  T)	r
   r   r   r   	swap_attrrA   r   rD  rp   )r)   rE  patternsr+  
test_chdir	test_copys         r    test_match_testzTestUtils.test_match_test/	  s   	$ 	$ #$2?@CD
>?	 w(8"=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_ >d w(8"=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 >P w(8"=02GHIOOJ{34Z
34OOJy12/1GHIZ45OOJz23Z	23 >=u >=d >=P >=s'   KY<IZ	<B7Z<Z	ZZc                 D   t         j                  }| j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d	      d	       | j                   |d
      d
       y )Nz
abc  defzabc \x1b\x1f defznul: , bell:znul:\x00, bell:\x07u   surrogate:zsurrogate:\udc80u   illegal ￾ and ￿zillegal \ufffe and \uffffza
	bu   valid téxt €)r	   sanitize_xmlr;   )r)   rT  s     r    test_sanitize_xmlzTestUtils.test_sanitize_xml	  s    )) 	&89,	.&;</	1&89,	.&AB5	7 	h/!	#&<=/	1r"   N)	r0  r1  r2  r)  r/  r5  r;  rR  rU  r5  r"   r    r$  r$    s$    ),	YR%(t4l1r"   r$  __main__)Br3  r   dataclassesr  r   r  os.pathr   r  r.  rZ  r  r  r  r  rS  rD  rN  r  	xml.etreer   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   rB  rC  r  r   normpathrn  rp  r"  r  r)  r  r?  rO  r>  TestCaser   	dataclassr8  r>  r  r  r  r$  r0  r5  r"   r    <module>rd     s      	     	    
     !  " $ ! " " P P - 6%%
(

=
>>77<<14>77??277++H56E
	 chh|,-Q/     "8?? $ 	 d1)) d1N T"  #J8$$ JZ@| @0jK| jKZg8< g8T+F1!! F1R zHMMO r"   