Your IP : 216.73.216.147


Current Path : /opt/alt/python39/lib64/python3.9/test/__pycache__/
Upload File :
Current File : //opt/alt/python39/lib64/python3.9/test/__pycache__/test_regrtest.cpython-39.opt-2.pyc

a

XC?hC��@sLddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlmZddlmZddlmZeed�Zej�ej�e�dd�Zej�ej�e��ZdZe�d�ZGd	d
�d
e
j�Z Gdd�de
j�Z!Gd
d�de!�Z"Gdd�de!�Z#Gdd�de!�Z$Gdd�de
j�Z%e&dk�rHe
�'�dS)�N)�libregrtest)�support)�utilsZgettotalrefcountz..z5[0-9]+:[0-9]+:[0-9]+ (?:load avg: [0-9]+\.[0-9]{2} )?z�
    from signal import SIGINT, raise_signal
    try:
        raise_signal(SIGINT)
    except ImportError:
        import os
        os.kill(os.getpid(), SIGINT)
    c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Z d=d>�Z!d?d@�Z"dAdB�Z#dCdD�Z$dEdF�Z%dGdH�Z&dIdJ�Z'dKdL�Z(dMdN�Z)dOdP�Z*dQS)R�ParseArgsTestCasec	Cspt���D}|�t��t�|�Wd�n1s40YWd�n1sR0Y|�||���dS�N)rZcaptured_stderr�assertRaises�
SystemExitr�_parse_args�assertIn�getvalue)�self�args�msg�err�r�7/opt/alt/python39/lib64/python3.9/test/test_regrtest.py�
checkError-sFzParseArgsTestCase.checkErrorcCs�dD]�}|j|d��~t���F}|�t��t�|g�Wd�n1sL0YWd�n1sj0Y|�d|���Wd�q1s�0YqdS)N)z-hz--help��optzRun Python regression tests.)	�subTestrZcaptured_stdoutrrrr	r
r)rr�outrrr�	test_help2s
�HzParseArgsTestCase.test_helpcCs>t�ddg�}|�|jd�|�dgd�|�ddgd�dS)N�	--timeoutz4.2g������@�expected one argument�foozinvalid float value)rr	�assertEqualZtimeoutr�r�nsrrr�test_timeout:szParseArgsTestCase.test_timeoutcCst�dg�}|�|j�dS)N�--wait)rr	�
assertTrue�waitrrrr�	test_wait@szParseArgsTestCase.test_waitcCs.t�ddg�}|�|jd�|�dgd�dS)Nz
--worker-argsz[[], {}]r)rr	rZworker_argsrrrrr�test_worker_argsDsz"ParseArgsTestCase.test_worker_argsc	CsddD]Z}|j|d��:t�|dg�}|�|jd�|�|gd�Wd�q1sT0YqdS)N)z-S�--startrrr)rrr	r�startr�rrrrrr�
test_startIs
zParseArgsTestCase.test_startcCs�t�dg�}|�|jd�t�dg�}|�|jd�t�dg�}|�|jd�t�dgd�}|�|jd�t�g�}|�|jd�dS)N�-v�z-vvv��	--verboser)rr	r�verboserrrr�test_verbosePs
zParseArgsTestCase.test_verbosec	CsRdD]H}|j|d��(t�|g�}|�|j�Wd�q1sB0YqdS)N)�-wz
--verbose2r)rrr	r Zverbose2r&rrr�
test_verbose2\szParseArgsTestCase.test_verbose2c	CsRdD]H}|j|d��(t�|g�}|�|j�Wd�q1sB0YqdS)N)�-Wz
--verbose3r)rrr	r Zverbose3r&rrr�
test_verbose3bszParseArgsTestCase.test_verbose3c	Cs`dD]V}|j|d��6t�|g�}|�|j�|�|jd�Wd�q1sP0YqdS)N)�-q�--quietrr)rrr	r �quietrr,r&rrr�
test_quieths
zParseArgsTestCase.test_quietc	CsRdD]H}|j|d��(t�|g�}|�|j�Wd�q1sB0YqdS)N)z-o�	--slowestr)rrr	r Z
print_slowr&rrr�test_slowestoszParseArgsTestCase.test_slowestcCs4t�dg�}|�|j�t�dg�}|�|j�dS)Nz--headerr+)rr	r �headerrrrr�test_headeruszParseArgsTestCase.test_headerc	CsRdD]H}|j|d��(t�|g�}|�|j�Wd�q1sB0YqdS)N)�-rz--randomizer)rrr	r �	randomizer&rrr�test_randomize|sz ParseArgsTestCase.test_randomizecCsJt�ddg�}|�|jd�|�|j�|�dgd�|�ddgd�dS)Nz
--randseedZ12345i90rr�invalid int value)rr	rZrandom_seedr r;rrrrr�
test_randseed�s
zParseArgsTestCase.test_randseedc	CsvdD]l}|j|d��Lt�|dg�}|�|jd�|�|gd�|�|ddgd�Wd�q1sf0YqdS)N)�-f�
--fromfilerrr�-s�don't go together)rrr	rZfromfilerr&rrr�
test_fromfile�szParseArgsTestCase.test_fromfilec	CsRdD]H}|j|d��(t�|g�}|�|j�Wd�q1sB0YqdS)N)z-x�	--excluder)rrr	r �excluder&rrr�test_exclude�szParseArgsTestCase.test_excludec	CsddD]Z}|j|d��:t�|g�}|�|j�|�|ddgd�Wd�q1sT0YqdS)N)rAz--singlerr?rrB)rrr	r Zsinglerr&rrr�test_single�s
zParseArgsTestCase.test_singlec	Cs�dD]\}|j|d��<t�|dg�}|�|jdg�|�|gd�Wd�q1sV0Yq|�tjtj	�t
tj	d��(}td|d�td|d�Wd�n1s�0Ytj
�tj	�}t�d	d
d|g�}|�|jddg�dS)N)z-iz--ignorer�patternr�w�
matchfile1��file�
matchfile2�-m�match�--ignorefile)rrr	rZignore_testsr�
addCleanupr�unlink�TESTFN�open�print�os�path�abspath�rrr�fp�filenamerrr�test_ignore�s .*��zParseArgsTestCase.test_ignorec	CsdD]\}|j|d��<t�|dg�}|�|jdg�|�|gd�Wd�q1sV0Yqt�gd��}|�|jddg�|�tjtj	�t
tj	d��(}td	|d
�td|d
�Wd�n1s�0Ytj
�tj	�}t�dd
d|g�}|�|jgd��dS)N)rNz--matchrrHr)rN�pattern1rN�pattern2r]r^rIrJrKrMrNrO�--matchfile)rOrJrM)rrr	rZmatch_testsrrQrrRrSrTrUrVrWrXrYrrr�
test_match�s$.*��zParseArgsTestCase.test_matchc	Cs|dD]r}|j|d��Rt�|dg�}|�|j�t�|dg�}|�|j�|�|gd�Wd�q1sl0YqdS)N)z-Gz
--failfastrr(r0z#-G/--failfast needs either -v or -W)rrr	r Zfailfastrr&rrr�
test_failfast�szParseArgsTestCase.test_failfastc	CsdD�]}|j|d���t�|dg�}|�|jddg�t�|dg�}|�|jdg�ttj�}|�d�t�|dg�}|�|j|�|�|gd�|�|d	gd
�t�|dg�}|�|jttj�dg�t�|d
g�}|�|jd
g�Wd�q1s�0YqdS)N)�-uz--userzgui,networkZgui�networkzgui,none,networkzall,-guirrzinvalid resourcez
all,tzdataZtzdataZextralargefile)	rrr	rZ
use_resources�listZ
ALL_RESOURCES�remover)rrrZexpectedrrr�test_use�s$


�zParseArgsTestCase.test_usec	CsddD]Z}|j|d��:t�|dg�}|�|jd�|�|gd�Wd�q1sT0YqdS)N)z-Mz
--memlimitrZ4Gr)rrr	rZmemlimitrr&rrr�
test_memlimit�s
zParseArgsTestCase.test_memlimitcCs:t�ddg�}|�|jtj�tjd��|�	dgd�dS)Nz	--testdirrr)
rr	r�testdirrVrW�joinr�SAVEDCWDrrrrr�test_testdir�szParseArgsTestCase.test_testdirc	CsRdD]H}|j|d��(t�|g�}|�|j�Wd�q1sB0YqdS)N)z-Lz
--runleaksr)rrr	r Zrunleaksr&rrr�
test_runleaks�szParseArgsTestCase.test_runleaksc	Cs�dD]�}|j|d���t�|dg�}|�|jd�t�|dg�}|�|jd�t�|dg�}|�|jd�t�|d	g�}|�|jd
�|�|gd�|�|dgd
�|�|dgd�|�|dgd�Wd�q1s�0YqdS)N)z-R�--huntrleaksr�:)���
reflog.txtz6:)�rprqz:3)ror*rqz
6:3:leaks.log)rrr*z	leaks.logr�6z&needs 2 or 3 colon-separated argumentszfoo:zinvalid huntrleaks valuez6:foo)rrr	r�
huntrleaksrr&rrr�test_huntrleaks�s 
�z!ParseArgsTestCase.test_huntrleaksc	Cs�dD]�}|j|d��nt�|dg�}|�|jd�|�|gd�|�|dgd�|�|ddgd	�|�|d
dgd	�Wd�q1s�0YqdS)N)z-jz--multiprocessr�2�rrr=�-TrB�0)rrr	rZuse_mprr&rrr�test_multiprocesssz#ParseArgsTestCase.test_multiprocessc	CsRdD]H}|j|d��(t�|g�}|�|j�Wd�q1sB0YqdS)N)rx�
--coverager)rrr	r Ztracer&rrr�
test_coverageszParseArgsTestCase.test_coveragec	CspdD]f}|j|d��Ft�|dg�}|�|jtj�tj	d��|�
|gd�Wd�q1s`0YqdS)N)z-Dz
--coverdirrrr)rrr	r�coverdirrVrWrirrjrr&rrr�
test_coverdirs�zParseArgsTestCase.test_coverdirc	CsRdD]H}|j|d��(t�|g�}|�|j�Wd�q1sB0YqdS)N)z-Nz--nocoverdirr)rrr	ZassertIsNoner}r&rrr�test_nocoverdir#sz!ParseArgsTestCase.test_nocoverdirc	CstdD]j}|j|d��Jt�|dg�}|�|jd�|�|gd�|�|dgd�Wd�q1sd0YqdS)N)z-tz--thresholdrZ1000i�rrr=)rrr	rZ	thresholdrr&rrr�test_threshold)sz ParseArgsTestCase.test_thresholdc
Cs�dD]�}|j|d��jt�t����}t�|g�}Wd�n1sF0Y|�|j�|�	�}|�
d|�Wd�q1s�0YqdS)N)�-nz--nowindowsrz)the --nowindows (-n) option is deprecated)r�
contextlib�redirect_stderr�io�StringIOrr	r Z	nowindowsrr
)rr�stderrrrrrr�test_nowindows1s*z ParseArgsTestCase.test_nowindowsc	CsRdD]H}|j|d��(t�|g�}|�|j�Wd�q1sB0YqdS)N)z-F�	--foreverr)rrr	r �foreverr&rrr�test_forever:szParseArgsTestCase.test_forevercCs|�dgd�dS)Nz--xxxzusage:�r�rrrr�test_unrecognized_argument@sz,ParseArgsTestCase.test_unrecognized_argumentcCs*t�dg�}|�|j�|�|jd�dS)Nz--quir)rr	r r4rr,rrrr�test_long_option__partialCsz+ParseArgsTestCase.test_long_option__partialcCs8t�ddg�}|�|j�|�|jd�|�|j�dS)Nr3rDr)rr	r r4rr,rErrrr�test_two_optionsHsz"ParseArgsTestCase.test_two_optionscCs t�ddg�}|�|jd�dS)Nr$�)rr	rr%rrrr�#test_option_with_empty_string_valueNsz5ParseArgsTestCase.test_option_with_empty_string_valuecCs t�dg�}|�|jdg�dS)Nr)rr	rr
rrrr�test_argRszParseArgsTestCase.test_argcCs<t�ddg�}|�|j�|�|jd�|�|jdg�dS)Nr3rr)rr	r r4rr,r
rrrr�test_option_and_argVsz%ParseArgsTestCase.test_option_and_argcCs2t�gd��}|�|jd�|�|jddg�dS)N)�test_unaryopr(�
test_binopr)r�r�)rr	rr,r
rrrr�test_arg_option_arg\sz%ParseArgsTestCase.test_arg_option_argcCs|�dgd�dS)Nz--unknown-optionz(unrecognized arguments: --unknown-optionr�r�rrr�test_unknown_optionas�z%ParseArgsTestCase.test_unknown_optionN)+�__name__�
__module__�__qualname__rrrr"r#r'r-r/r1r5r7r9r<r>rCrFrGr\r`rarfrgrkrlrurzr|r~rr�r�r�r�r�r�r�r�r�r�r�rrrrr(sP	
	rc	@sxeZdZdZdZdZdd�Zddd�Zd	d
�Zdd�Z	d
d�Z
ddddiddddf	dd�Zdd�Zddd�Z
dd�ZdS)�BaseTestCaser)Ztest_regrtest_ztest_[a-zA-Z0-9_]+cCs4tj�tj�t��|_t��|_|�	t
j|j�dSr)rVrW�realpath�dirname�__file__rh�tempfileZmkdtemp�
tmptestdirrQrZrmtreer�rrr�setUpks
zBaseTestCase.setUpNc
Cs�|sdtj}tjd7_|dur.t�d�}|j|}tj�|j|d�}|�	t
j|�z<t|ddd��}|�
|�Wd�n1s�0YWn@ty�}z(t��s�|�d||f��WYd}~n
d}~00|S)	Nznoop%sr)z�
                    import unittest

                    class Tests(unittest.TestCase):
                        def test_empty_test(self):
                            pass
                z.py�xzutf-8)�encodingzcannot write %s: %s)r��TEST_UNIQUE_ID�textwrap�dedent�TESTNAME_PREFIXrVrWrir�rQrrRrT�write�PermissionError�	sysconfig�is_python_build�skipTest)r�name�coderWrZ�excrrr�create_testqs 



,zBaseTestCase.create_testcCs*t�||tj�}|s&|�d||f�|S)Nz%r not found in %r)�re�search�	MULTILINE�fail)r�regex�outputrOrrr�regex_search�szBaseTestCase.regex_searchcCs"t�d|tj�}|�||�dS)N�^)r��compiler��assertRegex�rr�r�rrr�
check_line�szBaseTestCase.check_linecCs0dt|jf}t�||tj�}tdd�|D��S)Nz"^%s\[ *[0-9]+(?:/ *[0-9]+)*\] (%s)css|]}|�d�VqdS)r)N��group��.0rOrrr�	<genexpr>��z4BaseTestCase.parse_executed_tests.<locals>.<genexpr>)�
LOG_PREFIX�TESTNAME_REGEXr��finditerr�rd)rr�r��parserrrr�parse_executed_tests�s
�z!BaseTestCase.parse_executed_testsrFcs�t|t�r|g}t|t�r |g}t|t�r0|g}t|t�r@|g}t|t�rP|g}t|t�r`|g}|�|�}|	r�|�t|�t|�|�n|�|||�dd���fdd�}
|r�|
d|�}|�||�|r�|
d|�}|�||�|r�|
d|�}|�||�|�r|
d|�}|�||�|�r||
d	|���}|�||�td
}|�||�|��D],\}}td|�d|�d
�}|�||��qN|�r�|
d|�}|�||�t	|�t	|�t	|�t	|�t	|�t	|�}|�rd|�|�f}|�s�|�s�|dk�r�d|}|�||�|
�r|�|d�g}|�r0|�
d�n|�rF|�rF|�
d�|
�rV|�
d�t||||
|||f��sz|�
d�n|�s�|�
d�d�|�}|�r�|�|d�d|}|�|d|�dS)NcSs|dkrdSdS)Nr)�sr�r)�countrrr�plural�sz1BaseTestCase.check_executed_tests.<locals>.pluralcs6t|�}d�t|��}||�|�f}d||f}|S)N� z%s:\n    %s$)�lenri�sorted)Zline_format�testsr��namesr��r�rr�
list_regex�s
z5BaseTestCase.check_executed_tests.<locals>.list_regexz%s test%s skippedz%s test%s failedz+%s test%s altered the execution environmentz%s test%s omittedz%s re-run test%sz'Re-running failed tests in verbose modezRe-running z in verbose mode \(matching: z\)z%s test%s run no testsz%s test%s OK\.$r)zAll %sz(Test suite interrupted by signal SIGINT.�FAILUREzENV CHANGEDZINTERRUPTEDzNO TEST RUN�SUCCESS�, zTests result: FAILUREzFAILURE then %szTests result: %s)
�
isinstance�strr�r�setr��keysr��itemsr��append�anyri)rr�r��skipped�failed�env_changed�omitted�rerun�no_test_ranr;�interrupted�fail_env_changedZexecutedr�r�r�rOZgood�resultrr�r�check_executed_tests�s�








�

���

�

z!BaseTestCase.check_executed_testscCs>|�d|�}t|�d��}|�d|ko0dkn|�|S)NzUsing random seed ([0-9]+)r)ri���)r��intr�r )rr�rO�randseedrrr�parse_random_seed�s zBaseTestCase.parse_random_seedrcKsx|sd}d|vrtj|d<tj|fd|tjd�|��}|j|krtdt|�|j|jf}|jrj|d|j7}|�|�|S)Nr�r�T)Zuniversal_newlines�input�stdoutz8Command %s failed with exit code %s

stdout:
---
%s
---
z
stderr:
---
%s---
)	�
subprocess�STDOUT�run�PIPE�
returncoder�r�r�r�)rr
r��exitcode�kw�procrrrr�run_commands*
��
��
zBaseTestCase.run_commandcKs*tjdddg|�}|j|fi|��}|jS)Nz-XZfaulthandlerz-I)�sys�
executabler�r�)rr
r�r�rrr�
run_pythonszBaseTestCase.run_python)NN)Nr)r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�fs"
�
^
r�c@seZdZdd�ZdS)�CheckActualTestscCstgd�}|�|�}t|���}tj�t�tj�t	��d�}tt�|��}|j
||dddd�|�����d�dS)N)�-Wd�-E�-bbrN�
test.regrtest�--list-testsztest*.py�	�
z+Unexpectedly low number of tests found in:
r�)r)r�r��
splitlinesrVrWri�glob�escaper�r�Z
assertGreater)rr
r�Zrough_number_of_tests_foundZactual_testsuite_globZrough_counted_test_py_filesrrr�#test_finds_expected_number_of_tests&s
�
��z4CheckActualTests.test_finds_expected_number_of_testsN)r�r�r�rrrrrr�%sr�cs�eZdZdZ�fdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Ze
�e��d�dd��Zdd�Ze
�e��d�e
�ejdkd�dd���Ze
�ejdkd�dd��Z�ZS) �ProgramsTestCaserpcsft����fdd�t�j�D��_gd��_ddd�jg�_�j�d�t	j
dkrb�j�d	�dS)
Ncsg|]}����qSr�r��r��indexr�rr�
<listcomp>Ir�z*ProgramsTestCase.setUp.<locals>.<listcomp>)r�r�r�z-uallz-rwW�--testdir=%s)rZ3600z-j4�win32r�)�superr��range�NTESTr��python_argsr��
regrtest_args�extendr��platformr�r���	__class__r�rr�Es

�
zProgramsTestCase.setUpcCs |�|�|j||jdd�dS)NT)r;)r�r�r�)rr�rrr�check_outputRs
zProgramsTestCase.check_outputcCs|�|�}|�|�dSr)r�r)rr
r�rrr�	run_testsVs
zProgramsTestCase.run_testscCs8tj�|jd�}g|j�|�|j�|j�}|�|�dS)Nzregrtest.py�rVrWrirhr
rr�r�r�scriptr
rrr�test_script_regrtestZsz%ProgramsTestCase.test_script_regrtestcCs,g|j�d�d�|j�|j�}|�|�dS)NrN�test�r
rr�r�rr
rrr�test_module_testas��z!ProgramsTestCase.test_module_testcCs,g|j�d�d�|j�|j�}|�|�dS)NrNr�rrrrr�test_module_regrtestgs��z%ProgramsTestCase.test_module_regrtestcCs,g|j�d�d�|j�|j�}|�|�dS)NrNz
test.autotestrrrrr�test_module_autotestms��z%ProgramsTestCase.test_module_autotestcCs0d}g|j�d�|�|j�|j�}|�|�dS)Nzfrom test import autotestz-cr)rr�r
rrr�test_module_from_test_autotestss��z/ProgramsTestCase.test_module_from_test_autotestcCs8tj�|jd�}g|j�|�|j�|j�}|�|�dS)Nzautotest.pyrrrrr�test_script_autotestzsz%ProgramsTestCase.test_script_autotestz$run_tests.py script is not installedcCs2tj�tddd�}|g|j�|j�}|�|�dS)N�ToolsZscriptszrun_tests.py)rVrWri�ROOT_DIRrr�rrrrr�test_tools_script_run_tests�sz,ProgramsTestCase.test_tools_script_run_testscGs|�|�}|�|j�dSr)r�rr�)rr
r�rrr�	run_batch�s
zProgramsTestCase.run_batchz test.bat script is not installedr	zWindows onlycCs�tj�tddd�}d|jg}t��dkr6|�d�n2t��dkrN|�d�nt��d	d
krh|�d�t	sv|�d�|j
|g|�|j�R�dS)
Nr!Zbuildbotztest.batr�ARM64�-arm64�ARM�-arm32r�64bit�-x64z+d)rVrWrir"r�r�machiner��architecture�Py_DEBUGr$r�)rrZ	test_argsrrr�test_tools_buildbot_test�s

z)ProgramsTestCase.test_tools_buildbot_testcCs�tj�td�}tj�|�s,|�d|�d��dg}t��dkrJ|�d�n2t��dkrb|�d�nt�	�d	d
kr||�d�t
r�|�d�|j|g|�|j�|j
�R�dS)
NzPCbuild\rt.batzFile "z" does not existr2r%r&r'r(rr)r*z-d)rVrWrir"�isfiler�rr+r�r,r-r$rr�)rrZrt_argsrrr�test_pcbuild_rt�s

z ProgramsTestCase.test_pcbuild_rt)r�r�r�rr�rrrrrrrr �unittest�
skipUnlessr�r�r#r$r�rr.r0�
__classcell__rrrrr=s,

�

�rc@s(eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Ze�ed�dd��Ze�ed�dd��Zdd�Zd d!�Zejd"d#��Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Z d4d5�Z!d6d7�Z"ejd8d9��Z#d:d;�Z$d<d=�Z%d>d?�Z&d@S)A�ArgsTestCasecOs&ddd|jg|�}|j|fi|��S)NrNrr)r�r�)rZtestargsr��cmdargsrrrr�szArgsTestCase.run_testscCsNt�d�}|�d�}|jd|d�}||g}|j|ddi�}|j|||d�dS)Nz�
            import unittest

            class FailingTest(unittest.TestCase):
                def test_failing(self):
                    self.fail("bug")
        �okZfailing�r�r�rw�r��r�r�r�rr�)rr�Ztest_okZtest_failingr�r�rrr�test_failing_test�s

zArgsTestCase.test_failing_testcCs�i}dD]"}t�d|�}|�||�||<qt|���}|jddg|�R�}|�||�|jdg|�R�}|j|||dd�|j|�}|j|||d�dS)N)Zaudiorca
                        from test import support; support.requires(%r)
                        import unittest
                        class PassingTest(unittest.TestCase):
                            def test_pass(self):
                                pass
                    rb�allz-uaudiorc)r�)r�r�r�r��valuesrr�)rr��resourcer�Z
test_namesr�rrr�test_resources�s"��
�zArgsTestCase.test_resourcesc	Cs�t�d�}|�d|�}|�d|�}|�|�}|�d|�}t|�d��}|�dd||�}|�|�}|�||�|�d|�}t|�d��}|�||�dS)Nza
            import random
            print("TESTRANDOM: %s" % random.randint(1, 1000))
        Zrandomr:zTESTRANDOM: ([0-9]+)r)z
--randseed=%s)	r�r�r�rr�r�r�r�r)	rr�rr�r�rO�test_randomZ	randseed2Ztest_random2rrrr?�s


zArgsTestCase.test_randomc	s��fdd�td�D�}tj}��tj|�t|d��\}d}t|d�D]<\}}d||t|�|f}|rp|d|7}t||d�|}qDWd�n1s�0Y��	d	|�}��
||�t|d��>}t|d�D]"\}}td
|t|�|f|d�q�Wd�n1�s0Y��	d	|�}��
||�t|d��(}|D]}t||d��q:Wd�n1�sd0Y��	d	|�}��
||�t|d��,}|D]}td||d��q�Wd�n1�s�0Y��	d	|�}��
||�dS)Ncsg|]}����qSrrrr�rrr�r�z.ArgsTestCase.test_fromfile.<locals>.<listcomp>rorIr)z00:00:%02i [%s/%s] %sz -- %s took 0 secrKr@z
[%s/%s] %szLib/test/%s.py)rrrSrQrRrT�	enumerater�rUrr�)	rr�r[rZZpreviousrr��liner�rr�rrC�s<�$<04zArgsTestCase.test_fromfilecCs6t}|jd|d�}|j|dd�}|j|||dd�dS)N�sigintr7��r�T�r�r�)�TEST_INTERRUPTEDr�rr��rr�rr�rrr�test_interrupted,s
�zArgsTestCase.test_interruptedcsV�fdd�td�D�}�jdg|�R�}��||�d�jt|�f}��||�dS)Ncsg|]}����qSrrrr�rrr5r�z-ArgsTestCase.test_slowest.<locals>.<listcomp>r*r6z#10 slowest tests:
(?:- %s: .*
){%s})rrr�r�r�r�)rr�r�r�rr�rr73s�zArgsTestCase.test_slowestc	Cs�t}|jd|d�}dD]z}|j|d��Z|r8dd|f}nd|f}|j|ddi�}|j|||d	d
�d}|�||�Wd�q1s�0YqdS)NrBr7)FT)�multiprocessingr6�-j2r�rCTrEz10 slowest tests:
)rFr�rrr�r�)rr�rrIr
r�r�rrr�test_slowest_interrupted=s�z%ArgsTestCase.test_slowest_interruptedcCs8|�d�}|�d|�}|�||g�d}|�||�dS)NZcoverager{zLlines +cov% +module +\(path\)\n(?: *[0-9]+ *[0-9]{1,2}% *[^ ]+ +\([^)]+\)+)+)r�rr�r�)rrr�r�rrrr|Os

zArgsTestCase.test_coveragecCs*|�d�}|jd|dd�}|�|d�dS)Nr!r�key)r�zPress any key to continue)r�rr�)rrr�rrrr"Xs
zArgsTestCase.test_waitcCsBt�d�}|jd|d�}|jd|dd�}|j||gd|d�dS)	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�r7r�rwrDr*r8r9rGrrrr�^s
zArgsTestCase.test_foreverc
Cs�|jd|d�}d}|�tj|�|jdd|dtjd�}|j||g|d�d	}|�|t	�
|��d
||f}|�||�t|��$}|�
�}	|�||	�Wd�n1s�0YdS)Nrtr7rqrmz3:3:rw)r�r�r8z&beginning 6 repetitions
123456
......
z%s leaked [1, 1, 1] %s, sum=3
)r�rQrrRrr�r�r�r�r�rr
rT�read)
rr�Zwhatrr[r�rAZline2rZZreflogrrr�
check_leakss
�
zArgsTestCase.check_leakzneed a debug buildcCst�d�}|�|d�dS)Nz�
            import unittest

            GLOBAL_LIST = []

            class RefLeakTest(unittest.TestCase):
                def test_leak(self):
                    GLOBAL_LIST.append(object())
        Z
references�r�r�rN�rr�rrrru�s
	zArgsTestCase.test_huntrleakscCst�d�}|�|d�dS)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
        zfile descriptorsrOrPrrr�test_huntrleaks_fd_leak�s
	z$ArgsTestCase.test_huntrleaks_fd_leakcs@�fdd�td�D�}�jdg|�R�}��|����|�dS)Ncsg|]}����qSrr)r��ir�rrr�r�z0ArgsTestCase.test_list_tests.<locals>.<listcomp>ror�)rrr�rstripr�)rr�r�rr�r�test_list_tests�s
�zArgsTestCase.test_list_testscCspt�d�}|j|d�}d|d|g}|�d|�}|�|��|�d|g}|�ddd|�}|�|��|�dS)Nz�
            import unittest

            class Tests(unittest.TestCase):
                def test_method1(self):
                    pass
                def test_method2(self):
                    pass
        r7z%s.Tests.test_method1z%s.Tests.test_method2z--list-casesrN�test_method1)r�r�r�rrr�)rr��testname�all_methodsr�rrr�test_list_cases�s
	�
�zArgsTestCase.test_list_casescCsFd}|jd|d�}|g}|jdg|�Rddi�}|j|||dd�dS)	Nz,import faulthandler; faulthandler._sigsegv()Zcrash)r�r�rJr�rwT)r�r;)r�rr�)rr�Z
crash_testr�r�rrr�test_crashed�s
�zArgsTestCase.test_crashedcCs$tjdtjd�}dd�|�|�D�S)Nz^(test[^ ]+).*ok$)�flagscSsg|]}|�d��qS)r)r�r�rrrr�r�z.ArgsTestCase.parse_methods.<locals>.<listcomp>)r�r�r�r�r�rrr�
parse_methods�szArgsTestCase.parse_methodsc
Cs�t�d�}gd�}|j|d�}tj}|�tj|�dd|g}t|d��&}|D]}t||d�qNWd�n1st0Y|�	dd	||�}|�
|�}	d
dg}|�|	|�dS)N�V
            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
        �rU�test_method2�test_method3�test_method4r7rU�%s.Tests.test_method3rIrKr(rPr^r`)r�r�r�rrSrQrRrTrUrr[r)
rr�rWrVr[�subsetrZr�r��methodsrrr�test_ignorefile�s

�,
zArgsTestCase.test_ignorefilec
Cs�t�d�}gd�}|j|d�}|�d|�}|�|�}|�||�tj}|�tj	|�dd|g}t
|d��&}|D]}	t|	|d�qpWd�n1s�0Y|�dd	||�}|�|�}dd
g}|�||�dS)Nr\r]r7r(rUrarIrKr_r_)r�r�r�rr[rrrSrQrRrTrU)
rr�rWrVr�rcr[rbrZr�rrr�test_matchfile�s$


�,
zArgsTestCase.test_matchfilecCsZt�d�}|j|d�}|�|�}|j||g|d�|jd|dd�}|j||g|dd�dS)	Nz�
            import unittest

            class Tests(unittest.TestCase):
                def test_env_changed(self):
                    open("env_changed", "w").close()
        r7)r��--fail-env-changedr*rDT�r�r�r9�rr�rVr�rrr�test_env_changed s

�zArgsTestCase.test_env_changedcCsBt�d�}|j|d�}|jd|dd�}|j||g||did�dS)Na
            import unittest

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

                def test_fail_always(self):
                    # test that always fails
                    self.fail("bug")
        r7r.rwrDZtest_fail_always)r�r�r9rhrrr�test_rerun_fail3s

�zArgsTestCase.test_rerun_failcCs@t�d�}|j|d�}|jd|dd�}|j||g|did�dS)Nax
            import builtins
            import unittest

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

                def test_fail_once(self):
                    if not hasattr(builtins, '_test_failed'):
                        builtins._test_failed = True
                        self.fail("bug")
        r7r.rrDZtest_fail_once)r�r9rhrrr�test_rerun_successFs


�zArgsTestCase.test_rerun_successcCs>t�d�}|j|d�}|j|dddd�}|j||g|d�dS�N��
            import unittest

            class Tests(unittest.TestCase):
                def test_bug(self):
                    pass
        r7rN�
nosuchtestrrD�r�r9rhrrr�test_no_tests_ran[s
zArgsTestCase.test_no_tests_rancCs6t�d�}|j|d�}|j|dd�}|�||g�dS)Nz�
            import unittest

            class Tests(unittest.TestCase):
                def test_skipped(self):
                    self.skipTest("because")
        r7rrDr9rhrrr�test_no_tests_ran_skiphs
z#ArgsTestCase.test_no_tests_ran_skipcCsRt�d�}|j|d�}|j|d�}|j||dddd�}|j|||g||gd�dSrlr9)rr�rV�	testname2r�rrr�,test_no_tests_ran_multiple_tests_nonexistentus
�z9ArgsTestCase.test_no_tests_ran_multiple_tests_nonexistentc	Cs^t�d�}|j|d�}t�d�}|j|d�}|j||dddddd�}|j|||g|gd	�dS)
Nrmr7z�
            import unittest

            class Tests(unittest.TestCase):
                def test_other_bug(self):
                    pass
        rNrnZtest_other_bugrrDror9)rr�rVZ
other_coderrr�rrr�)test_no_test_ran_some_test_exist_some_not�s

��z6ArgsTestCase.test_no_test_ran_some_test_exist_some_notcCsft�d�}|j|d�}|jd|dd�}|j||g|gdd�|jd|dd�}|j||g|gdd�dS)	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
        r7rfr*rDTrgz--findleaksr9rhrrr�test_findleaks�s

�
�zArgsTestCase.test_findleakscCsXt�d�}|j|d�}|jdd|dd�}|j||g|d�|�|t�d|tj��dS)	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)
        r7rJz
--timeout=1.0rwrDr8z%s timed out)	r�r�r�rr�r�r�r�r�rhrrr�test_multiprocessing_timeout�s

��z)ArgsTestCase.test_multiprocessing_timeoutcCsZt�d�}|j|d�}|jdd|dd�}|j||g|gdd�|�d	|�|�d
|�dS)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(), '')
        r7rfr(r*rDTrgzWarning -- Unraisable exceptionzException: weakref callback bug)r�r�r�rr�r
rhrrr�test_unraisable_exc�s

�z ArgsTestCase.test_unraisable_exccCs~tj�|jd�}t�|�tj�|jd�}t|d���||g}ddd|jdg}|�|�|D]}|�tj�	|�|�q`dS)NZtest_python_123Ztest_python_456�wbrNrz--tempdir=%sz	--cleanup)
rVrWrir��mkdirrT�closer�ZassertFalse�exists)rr�r[r�r5r�rrr�test_cleanup�s
�
zArgsTestCase.test_cleanupN)'r�r�r�rr:r>r?rCrHr7rKr|r"r�rNr1r2r-rurQrTrXrZcpython_onlyrYr[rdrerirjrkrprqrsrtrurvrwr|rrrrr4�sF0
	






$)


!r4c@seZdZdd�ZdS)�	TestUtilscCs�|�t�d�d�|�t�d�d�|�t�d�d�|�t�d�d�|�t�d	�d
�|�t�d�d�|�t�d
�d�|�t�d�d�|�t�d�d�|�t�d�d�dS)Nrz0 msg��&�.>z1 msg{�G�z�?z10 msg�?z1.5 secr)z1.0 sec�xz2 min�yz2 min 1 seci0*z3 houri�*z3 hour 2 mini1*z3 hour 1 sec)rrZformat_durationr�rrr�test_format_durations<����������zTestUtils.test_format_durationN)r�r�r�r�rrrrr}sr}�__main__)(r�rr�Zos.pathrVrr�r�r�r�r�r��timer1rrrZtest.libregrtestr�hasattrr-rWrir�r�r"rX�normpathr�r�rFZTestCaserr�r�rr4r}r��mainrrrr�<module>sF


@@r\