HEX
Server: Apache
System: Linux opal14.opalstack.com 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64
User: curbgloabal_opal (1234)
PHP: 8.1.29
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //lib64/python3.6/test/__pycache__/test_regrtest.cpython-36.pyc
3


 \�@s4dZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlmZddlmZddlmZee	d�Zejjejje�dd�Zejjejje��Zejd�ZGd	d
�d
e
j�ZGdd�de
j�Z Gd
d�de �Z!Gdd�de �Z"Gdd�de
j�Z#e$dk�r0e
j%�dS)zM
Tests of regrtest.py.

Note: test_regrtest cannot be run twice in parallel.
�N)�libregrtest)�support)�utilsZ
getobjectsz..z�
    from signal import SIGINT
    try:
        from _testcapi import raise_signal
        raise_signal(SIGINT)
    except ImportError:
        import os
        os.kill(os.getpid(), SIGINT)
    c@sZeZdZdZdd�Zdd�Zejee	d�d�dd	��Z
d
d�Zdd
�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Z d6d7�Z!d8d9�Z"d:d;�Z#d<d=�Z$d>d?�Z%d@dA�Z&dBdC�Z'dDdE�Z(dFdG�Z)dHdI�Z*dJdK�Z+dLdM�Z,dNdO�Z-dPdQ�Z.dRS)S�ParseArgsTestCasezC
    Test regrtest's argument parsing, function _parse_args().
    cCsHtj��&}|jt��tj|�WdQRXWdQRX|j||j��dS)N)rZcaptured_stderr�assertRaises�
SystemExitr�_parse_args�assertIn�getvalue)�self�args�msg�err�r�%/usr/lib64/python3.6/test_regrtest.py�
checkError,szParseArgsTestCase.checkErrorcCspxjdD]b}|j|d��Ltj��(}|jt��tj|g�WdQRXWdQRX|jd|j��WdQRXqWdS)N�-h�--help)�optzRun Python regression tests.)rr)	�subTestrZcaptured_stdoutrrrrr	r
)rr�outrrr�	test_help1s

 zParseArgsTestCase.test_help�dump_traceback_laterz,faulthandler.dump_traceback_later() requiredcCs>tjddg�}|j|jd�|jdgd�|jddgd�dS)Nz	--timeoutz4.2g������@zexpected one argument�foozinvalid float value)rr�assertEqualZtimeoutr)r�nsrrr�test_timeout9szParseArgsTestCase.test_timeoutcCstjdg�}|j|j�dS)Nz--wait)rr�
assertTrue�wait)rrrrr�	test_waitAszParseArgsTestCase.test_waitcCs.tjddg�}|j|jd�|jdgd�dS)Nz
--worker-argsz[[], {}]zexpected one argument)rrrZworker_argsr)rrrrr�test_worker_argsEsz"ParseArgsTestCase.test_worker_argscCsTxNdD]F}|j|d��0tj|dg�}|j|jd�|j|gd�WdQRXqWdS)N�-S�--start)rrzexpected one argument)r!r")rrrr�startr)rrrrrr�
test_startJs

zParseArgsTestCase.test_startcCs�tjdg�}|j|jd�tjdg�}|j|jd�tjdg�}|j|jd�tjdgd�}|j|jd�tjg�}|j|jd�dS)Nz-v�z-vvv�z	--verboser)rrr�verbose)rrrrr�test_verboseQs
zParseArgsTestCase.test_verbosec
CsBx<dD]4}|j|d��tj|g�}|j|j�WdQRXqWdS)N�-w�
--verbose2)r)r)r*)rrrrZverbose2)rrrrrr�
test_verbose2]s
zParseArgsTestCase.test_verbose2c
CsBx<dD]4}|j|d��tj|g�}|j|j�WdQRXqWdS)N�-W�
--verbose3)r)r,r-)rrrrZverbose3)rrrrrr�
test_verbose3cs
zParseArgsTestCase.test_verbose3cCsPxJdD]B}|j|d��,tj|g�}|j|j�|j|jd�WdQRXqWdS)N�-q�--quiet)rr)r/r0)rrrr�quietrr')rrrrrr�
test_quietis

zParseArgsTestCase.test_quietc
CsBx<dD]4}|j|d��tj|g�}|j|j�WdQRXqWdS)N�-o�	--slowest)r)r3r4)rrrrZ
print_slow)rrrrrr�	test_slowps
zParseArgsTestCase.test_slowcCs4tjdg�}|j|j�tjdg�}|j|j�dS)Nz--headerz	--verbose)rrr�header)rrrrr�test_headervszParseArgsTestCase.test_headerc
CsBx<dD]4}|j|d��tj|g�}|j|j�WdQRXqWdS)N�-r�--randomize)r)r8r9)rrrr�	randomize)rrrrrr�test_randomize}s
z ParseArgsTestCase.test_randomizecCsJtjddg�}|j|jd�|j|j�|jdgd�|jddgd�dS)Nz
--randseedZ12345i90zexpected one argumentrzinvalid int value)rrrZrandom_seedrr:r)rrrrr�
test_randseed�s
zParseArgsTestCase.test_randseedcCsfx`dD]X}|j|d��Btj|dg�}|j|jd�|j|gd�|j|ddgd�WdQRXqWdS)	N�-f�
--fromfile)rrzexpected one argumentz-szdon't go together)r=r>)rrrrZfromfiler)rrrrrr�
test_fromfile�s
zParseArgsTestCase.test_fromfilec
CsBx<dD]4}|j|d��tj|g�}|j|j�WdQRXqWdS)N�-x�	--exclude)r)r@rA)rrrr�exclude)rrrrrr�test_exclude�s
zParseArgsTestCase.test_excludecCsTxNdD]F}|j|d��0tj|g�}|j|j�|j|ddgd�WdQRXqWdS)N�-s�--single)rz-frzdon't go together)rDrE)rrrrZsingler)rrrrrr�test_single�s

zParseArgsTestCase.test_singlecCs�xPdD]H}|j|d��2tj|dg�}|j|jdg�|j|gd�WdQRXqWtjddddg�}|j|jddg�|jtjtj	�t
tj	d��}td	|d
�td|d
�WdQRXtj
jtj	�}tjddd
|g�}|j|jdd	dg�dS)N�-m�--match)r�patternzexpected one argumentZpattern1Zpattern2�wZ
matchfile1)�fileZ
matchfile2�matchz--matchfile)rGrH)rrrrZmatch_testsr�
addCleanupr�unlink�TESTFN�open�print�os�path�abspath)rrr�fp�filenamerrr�
test_match�s"


zParseArgsTestCase.test_matchcCslxfdD]^}|j|d��Htj|dg�}|j|j�tj|dg�}|j|j�|j|gd�WdQRXqWdS)N�-G�
--failfast)rz-vz-Wz#-G/--failfast needs either -v or -W)rXrY)rrrrZfailfastr)rrrrrr�
test_failfast�s
zParseArgsTestCase.test_failfastcCs�x�dD]�}|j|d���tj|dg�}|j|jddg�tj|dg�}|j|jdg�ttj�}|jd�tj|dg�}|j|j|�|j|gd	�|j|d
gd�tj|dg�}|j|jttj�d
g�tj|dg�}|j|jdg�WdQRXqWdS)N�-u�--use)rzgui,networkZgui�networkzgui,none,networkzall,-guizexpected one argumentrzinvalid resourcez
all,tzdataZtzdataZextralargefile)r[r\)	rrrrZ
use_resources�listZ
ALL_RESOURCES�remover)rrrZexpectedrrr�test_use�s"


zParseArgsTestCase.test_usecCsTxNdD]F}|j|d��0tj|dg�}|j|jd�|j|gd�WdQRXqWdS)N�-M�
--memlimit)rZ4Gzexpected one argument)rarb)rrrrZmemlimitr)rrrrrr�
test_memlimit�s

zParseArgsTestCase.test_memlimitcCs:tjddg�}|j|jtjjtjd��|j	dgd�dS)Nz	--testdirrzexpected one argument)
rrr�testdirrRrS�joinr�SAVEDCWDr)rrrrr�test_testdir�szParseArgsTestCase.test_testdirc
CsBx<dD]4}|j|d��tj|g�}|j|j�WdQRXqWdS)N�-L�
--runleaks)r)rhri)rrrrZrunleaks)rrrrrr�
test_runleaks�s
zParseArgsTestCase.test_runleaksc
Cs�x�dD]�}|j|d���tj|dg�}|j|jd�tj|dg�}|j|jd�tj|d
g�}|j|jd�tj|dg�}|j|jd�|j|gd�|j|dgd�|j|dgd�|j|dgd�WdQRXqWdS)N�-R�--huntrleaks)r�:���
reflog.txtz6:�z:3r&z
6:3:leaks.log�	leaks.logzexpected one argument�6z&needs 2 or 3 colon-separated argumentszfoo:zinvalid huntrleaks valuez6:foo)rkrl)rnrorp)rqrorp)rnr&rp)rqr&rr)rrrr�
huntrleaksr)rrrrrr�test_huntrleaks�s

z!ParseArgsTestCase.test_huntrleakscCs�x�d
D]�}|j|d���tj|dg�}|j|jd�|j|gd�|j|dgd�|j|dd	gd
�|j|ddgd
�|j|dd	gd
�|j|ddgd
�WdQRXqWdS)N�-j�--multiprocess)r�2�zexpected one argumentrzinvalid int valuez-Tzdon't go togetherz-l�0)rvrw)rrrrZuse_mpr)rrrrrr�test_multiprocess�s
z#ParseArgsTestCase.test_multiprocessc
CsBx<dD]4}|j|d��tj|g�}|j|j�WdQRXqWdS)N�-T�
--coverage)r)r|r})rrrrZtrace)rrrrrr�
test_coverages
zParseArgsTestCase.test_coveragec
Cs`xZdD]R}|j|d��<tj|dg�}|j|jtjjtj	d��|j
|gd�WdQRXqWdS)N�-D�
--coverdir)rrzexpected one argument)rr�)rrrr�coverdirrRrSrerrfr)rrrrrr�
test_coverdirs
zParseArgsTestCase.test_coverdirc
CsBx<dD]4}|j|d��tj|g�}|j|j�WdQRXqWdS)N�-N�--nocoverdir)r)r�r�)rrrZassertIsNoner�)rrrrrr�test_nocoverdirs
z!ParseArgsTestCase.test_nocoverdircCsdx^d	D]V}|j|d��@tj|dg�}|j|jd�|j|gd�|j|dgd�WdQRXqWdS)
N�-t�--threshold)rZ1000i�zexpected one argumentrzinvalid int value)r�r�)rrrrZ	thresholdr)rrrrrr�test_thresholds
z ParseArgsTestCase.test_thresholdcCspxjdD]b}|j|d��Ltjtj���}tj|g�}WdQRX|j|j�|j	�}|j
d|�WdQRXqWdS)N�-n�--nowindows)rz)the --nowindows (-n) option is deprecated)r�r�)r�
contextlib�redirect_stderr�io�StringIOrrrZ	nowindowsr
r	)rr�stderrrrrrr�test_nowindows"s
z ParseArgsTestCase.test_nowindowsc
CsBx<dD]4}|j|d��tj|g�}|j|j�WdQRXqWdS)N�-F�	--forever)r)r�r�)rrrr�forever)rrrrrr�test_forever+s
zParseArgsTestCase.test_forevercCs|jdgd�dS)Nz--xxxzusage:)r)rrrr�test_unrecognized_argument1sz,ParseArgsTestCase.test_unrecognized_argumentcCs*tjdg�}|j|j�|j|jd�dS)Nz--quir)rrrr1rr')rrrrr�test_long_option__partial4sz+ParseArgsTestCase.test_long_option__partialcCs8tjddg�}|j|j�|j|jd�|j|j�dS)Nz--quietz	--excluder)rrrr1rr'rB)rrrrr�test_two_options9sz"ParseArgsTestCase.test_two_optionscCs tjddg�}|j|jd�dS)Nz--start�)rrrr#)rrrrr�#test_option_with_empty_string_value?sz5ParseArgsTestCase.test_option_with_empty_string_valuecCs tjdg�}|j|jdg�dS)Nr)rrrr)rrrrr�test_argCszParseArgsTestCase.test_argcCs<tjddg�}|j|j�|j|jd�|j|jdg�dS)Nz--quietrr)rrrr1rr'r)rrrrr�test_option_and_argGsz%ParseArgsTestCase.test_option_and_argcCs4tjdddg�}|j|jd�|j|jddg�dS)NZtest_unaryopz-vZ
test_binopr%)rrrr'r)rrrrr�test_arg_option_argMsz%ParseArgsTestCase.test_arg_option_argcCs|jdgd�dS)Nz--unknown-optionz(unrecognized arguments: --unknown-option)r)rrrr�test_unknown_optionRsz%ParseArgsTestCase.test_unknown_optionN)/�__name__�
__module__�__qualname__�__doc__rr�unittest�
skipUnless�hasattr�faulthandlerrrr r$r(r+r.r2r5r7r;r<r?rCrFrWrZr`rcrgrjrur{r~r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr'sR		rc	@sxeZdZdZdZdZdd�Zddd�Zd	d
�Zdd�Z	d
d�Z
ffffffdddf	dd�Zdd�Zddd�Z
dd�ZdS)�BaseTestCaser%Ztest_regrtest_ztest_[a-zA-Z0-9_]+cCs4tjjtjjt��|_tj�|_|j	t
j|j�dS)N)rRrS�realpath�dirname�__file__rd�tempfileZmkdtemp�
tmptestdirrMrZrmtree)rrrr�setUp\s
zBaseTestCase.setUpNcCs�|sdtj}tjd7_|dkr.tjd�}|j|}tjj|j|d�}|j	t
j|�y(t|ddd��}|j
|�WdQRXWn>tk
r�}z"tj�s�|jd||f��WYdd}~XnX|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_PREFIXrRrSrer�rMrrNrP�write�PermissionError�	sysconfig�is_python_build�skipTest)r�name�coderSrU�excrrr�create_testbs"

zBaseTestCase.create_testcCs*tj||tj�}|s&|jd||f�|S)Nz%r not found in %r)�re�search�	MULTILINE�fail)r�regex�outputrLrrr�regex_search�szBaseTestCase.regex_searchcCs"tjd|tj�}|j||�dS)N�^)r��compiler�ZassertRegex)rr�r�rrr�
check_line�szBaseTestCase.check_linecCs,d|j}tj||tj�}tdd�|D��S)NzU^[0-9]+:[0-9]+:[0-9]+ (?:load avg: [0-9]+\.[0-9]{2} )?\[ *[0-9]+(?:/ *[0-9]+)*\] (%s)css|]}|jd�VqdS)r%N)�group)�.0rLrrr�	<genexpr>�sz4BaseTestCase.parse_executed_tests.<locals>.<genexpr>)�TESTNAME_REGEXr��finditerr�r^)rr�r��parserrrr�parse_executed_tests�sz!BaseTestCase.parse_executed_testsFc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}t|t�rp|g}|j|�}|	r�|jt|�t|�|�n|j|||�dd���fdd�}
|r�|
d|�}|j||�|r�|
d|�}|j||�|�r|
d|�}|j||�|�r$|
d|�}|j||�|�rp|
d	|�}|j||�|j|d
�x"|D]}d|}|j||��qRW|�r�|
d|�}|j||�t|�t|�t|�t|�t|�t|�}|�rd
|�|�f}|�r�|�r�|dk�r�d|}|j||�|
�r|j|d�g}|�r(|jd�n|�r>|�r>|jd�|
�rN|jd�t||||
|||f��sr|jd�n|�s�|jd�dj	|�}|�r�|j|d|�d|}|j|d|�dS)NcSs|dkrdSdS)Nr%�sr�r)�countrrr�plural�sz1BaseTestCase.check_executed_tests.<locals>.pluralcs6t|�}djt|��}||�|�f}d||f}|S)N� z%s:\n    %s$)�lenre�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 modez"Re-running test %r in verbose modez%s test%s run no testsz%s test%s OK\.$r%zAll %sz(Test suite interrupted by signal SIGINT.�FAILUREzENV CHANGEDZINTERRUPTEDzNO TEST RUN�SUCCESSz, zTests result: %szFAILURE then %s)
�
isinstance�strr�r�setr�r��append�anyre)rr�r��skipped�failed�env_changed�omitted�rerun�no_test_ranr:�interrupted�fail_env_changedZexecutedr�r�r�Zgood�resultr)r�r�check_executed_tests�s�













0



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

stdout:
---
%s
---
z
stderr:
---
%s---
)�
subprocess�PIPEZrun�
returncoder�r�r�r�)rrr��exitcode�kw�procr
rrr�run_command�s"



zBaseTestCase.run_commandcKs&tjdddf|�}|j|f|�}|jS)Nz-Xr�z-I)�sys�
executabler�r�)rr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�Ws 
[
r�cs�eZdZdZdZ�fdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
ejej�d�dd��Zdd�Zejej�d�ejejdkd�dd���Zejejdkd�dd ��Z�ZS)!�ProgramsTestCasezp
    Test various ways to run the Python test suite. Use options close
    to options used on the buildbot.
    rocsrt�j��fdd�t�j�D��_dddg�_ddd�jg�_tt	d	�rX�jj
d�tjd
krn�jj
d�dS)Ncsg|]}�j��qSr)r�)r��index)rrr�
<listcomp>#sz*ProgramsTestCase.setUp.<locals>.<listcomp>z-Wdz-Ez-bbz-uallz-rwWz--testdir=%sr�	--timeout�3600�-j4�win32z-n)r�r�r�)�superr��range�NTESTr��python_argsr��
regrtest_argsr�r��extendr��platformr�)r)�	__class__)rrr�s


zProgramsTestCase.setUpcCs |j|�|j||jdd�dS)NT)r:)r�r�r�)rr�rrr�check_output-s
zProgramsTestCase.check_outputcCs|j|�}|j|�dS)N)r�r)rrr�rrr�	run_tests1s
zProgramsTestCase.run_testscCs2tjj|jd�}|j|f|j|j�}|j|�dS)Nzregrtest.py)rRrSrerdrrr�r)r�scriptrrrr�test_script_regrtest5sz%ProgramsTestCase.test_script_regrtestcCs |jd|j|j�}|j|�dS)N�-m�test)r	r
)rrr�r)rrrrr�test_module_test<sz!ProgramsTestCase.test_module_testcCs |jd|j|j�}|j|�dS)N�-m�
test.regrtest)rr
)rrr�r)rrrrr�test_module_regrtestBsz%ProgramsTestCase.test_module_regrtestcCs |jd|j|j�}|j|�dS)N�-m�
test.autotest)rr)rrr�r)rrrrr�test_module_autotestHsz%ProgramsTestCase.test_module_autotestcCs(d}|jd|f|j|j�}|j|�dS)Nzfrom test import autotestz-c)rrr�r)rr�rrrr�test_module_from_test_autotestNs
z/ProgramsTestCase.test_module_from_test_autotestcCs2tjj|jd�}|j|f|j|j�}|j|�dS)Nzautotest.py)rRrSrerdrrr�r)rrrrrr�test_script_autotestUsz%ProgramsTestCase.test_script_autotestz$run_tests.py script is not installedcCs0tjjtddd�}|f|j|j�}|j|�dS)N�Tools�scriptszrun_tests.py)rRrSre�ROOT_DIRrr�r)rrrrrr�test_tools_script_run_tests[sz,ProgramsTestCase.test_tools_script_run_testscGs|j|�}|j|j�dS)N)r�rr�)rrr�rrr�	run_batchcs
zProgramsTestCase.run_batchz test.bat script is not installedr�zWindows onlycCs^tjjtddd�}d|jg}tj�ddkr8|jd�tsF|jd�|j	|f||j
��dS)	NrZbuildbotztest.batz--testdir=%sr�64bitz-x64z+d)rRrSrerr�r�architecturer��Py_DEBUGrr�)rrZ	test_argsrrr�test_tools_buildbot_testgs

z)ProgramsTestCase.test_tools_buildbot_testcCsvtjjtd�}tjj|�s,|jd|�d��dg}tj�ddkrL|jd�t	rZ|jd�|j
|f||j|j��dS)	NzPCbuild\rt.batzFile "z" does not existz-qrrz-x64z-d)
rRrSrer�isfiler�rrr�rrrr�)rrZrt_argsrrr�test_pcbuild_rtts

z ProgramsTestCase.test_pcbuild_rt)r�r�r�r�r�r�rrrrrrrrr�r�r�r�rrr�rrr�
__classcell__rr)rrr�s$

r�c@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zejed�dd��Zejed�dd��Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3S)4�ArgsTestCasez2
    Test arguments of the Python test suite.
    cOs"ddd|jf|�}|j|f|�S)Nz-mr
z--testdir=%s)r�r�)rZtestargsr�Zcmdargsrrrr�szArgsTestCase.run_testscCsNtjd�}|jd�}|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�ry)r�)r�r�r�rr�)rr�Ztest_okZtest_failingr�r�rrr�test_failing_test�s
zArgsTestCase.test_failing_testcCs�i}x*dD]"}tjd|�}|j||�||<q
Wt|j��}|jd	|��}|j||�|jd
|��}|j|||dd�|j|�}|j|||d�dS)N�audior]a
                        from test import support; support.requires(%r)
                        import unittest
                        class PassingTest(unittest.TestCase):
                            def test_pass(self):
                                pass
                    �-u�all�-uaudio)r�)r#r])r$r%)r&)r�r�r�r��valuesrr�)rr�Zresourcer�Z
test_namesr�rrr�test_resources�s


zArgsTestCase.test_resourcesc	Cs�tjd�}|jd|�}|jd|�}|j|�}|jd|�}t|jd��}|jdd||�}|j|�}|j||�|jd|�}t|jd��}|j||�dS)Nza
            import random
            print("TESTRANDOM: %s" % random.randint(1, 1000))
        Zrandomz-rzTESTRANDOM: ([0-9]+)r%z
--randseed=%s)	r�r�r�rr�r�r�r�r)	rr�r
r�r�rL�test_randomZ	randseed2Ztest_random2rrrr)�s

zArgsTestCase.test_randomc	!s��fdd�td�D�}tj}�jtj|�t|d��V}d}xJt|d�D]<\}}d||t|�|f}|rr|d|7}t||d�|}qFWWdQRX�j	d	|�}�j
||�t|d��8}x0t|d�D]"\}}td
|t|�|f|d�q�WWdQRX�j	d	|�}�j
||�t|d��"}x|D]}t||d��qWWdQRX�j	d	|�}�j
||�t|d��&}x|D]}td||d��qdWWdQRX�j	d	|�}�j
||�dS)Ncsg|]}�j��qSr)r�)r�r�)rrrr��sz.ArgsTestCase.test_fromfile.<locals>.<listcomp>rnrJr%z00:00:%02i [%s/%s] %sz -- %s took 0 sec)rKz
--fromfilez
[%s/%s] %szLib/test/%s.py)r�rrOrMrNrP�	enumerater�rQrr�)	rr�rVrUZpreviousr�r��liner�r)rrr?�s:(

 zArgsTestCase.test_fromfilecCs6t}|jd|d�}|j|dd�}|j|||dd�dS)N�sigint)r��)r�T)r�r�)�TEST_INTERRUPTEDr�rr�)rr�r
r�rrr�test_interrupted�s

zArgsTestCase.test_interruptedcsR�fdd�td�D�}�jd|��}�j||�d�jt|�f}�j||�dS)Ncsg|]}�j��qSr)r�)r�r�)rrrr�sz-ArgsTestCase.test_slowest.<locals>.<listcomp>r&�	--slowestz#10 slowest tests:
(?:- %s: .*
){%s})r0)r�rr�r�r�r�)rr�r�r�r)rr�test_slowestszArgsTestCase.test_slowestc	Cs�t}|jd|d�}yddl}d}Wntk
r:d
}YnXxV|D]N}|rVdd|f}nd|f}|j|dd	i�}|j|||dd
�d}|j||�qBWdS)Nr,)r�rFTz	--slowestz-j2r�r-)r�r�z10 slowest tests:
)FT)F)r.r��	threading�ImportErrorrr�r�)	rr�r
r2r�Zmultiprocessingrr�r�rrr�test_slow_interrupteds 


z"ArgsTestCase.test_slow_interruptedcCs8|jd�}|jd|�}|j||g�d}|j||�dS)NZcoveragez
--coveragezLlines +cov% +module +\(path\)\n(?: *[0-9]+ *[0-9]{1,2}% *[^ ]+ +\([^)]+\)+)+)r�rr�r�)rr
r�r�rrrr~&s

zArgsTestCase.test_coveragecCs*|jd�}|jd|dd�}|j|d�dS)Nrz--wait�key)r�zPress any key to continue)r�rr�)rr
r�rrrr/s
zArgsTestCase.test_waitcCsBtjd�}|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�)r�z	--foreverry)r�r&)r�)r�r�r�rr�)rr�r
r�rrrr�5s
zArgsTestCase.test_foreverc

Cs�|jd|d�}d}|jtj|�|jdd|dtjd�}|j||g|d�d	}|j|t	j
|��d
||f}|j||�t|��}|j
�}	|j||	�WdQRXdS)Nrt)r�z
reflog.txtz--huntrleaksz3:3:ry)r�r�)r�z&beginning 6 repetitions
123456
......
z%s leaked [1, 1, 1] %s, sum=3
)r�rMrrNrr�ZSTDOUTr�r�r��escaper	rP�read)
rr�Zwhatr
rVr�r+Zline2rUZreflogrrr�
check_leakJs


zArgsTestCase.check_leakzneed a debug buildcCstjd�}|j|d�dS)Nz�
            import unittest

            GLOBAL_LIST = []

            class RefLeakTest(unittest.TestCase):
                def test_leak(self):
                    GLOBAL_LIST.append(object())
        Z
references)r�r�r8)rr�rrrru^szArgsTestCase.test_huntrleakscCstjd�}|j|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 descriptors)r�r�r8)rr�rrr�test_huntrleaks_fd_leaklsz$ArgsTestCase.test_huntrleaks_fd_leakcs<�fdd�td�D�}�jd|��}�j|j�j�|�dS)Ncsg|]}�j��qSr)r�)r��i)rrrr�|sz0ArgsTestCase.test_list_tests.<locals>.<listcomp>rn�--list-tests)r;)r�rr�rstrip�
splitlines)rr�r�r)rr�test_list_testszszArgsTestCase.test_list_testscCsptjd�}|j|d�}d|d|g}|jd|�}|j|j�|�d|g}|jddd|�}|j|j�|�dS)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-casesz-m�test_method1)r�r�r�rrr=)rr��testname�all_methodsr�rrr�test_list_cases�s

zArgsTestCase.test_list_casescCsPd}|jd|d�}|jdd�}||g}|jd|�ddi�}|j|||d	d
�dS)Nz,import faulthandler; faulthandler._sigsegv()Zcrash)r�r�r!)r��-j2r�ryT)r�r:)rC)r�rr�)rr�Z
crash_testZok_testr�r�rrr�test_crashed�s
zArgsTestCase.test_crashedcCs$tjdtjd�}dd�|j|�D�S)Nz^(test[^ ]+).*ok$)�flagscSsg|]}|jd��qS)r%)r�)r�rLrrrr��sz.ArgsTestCase.parse_methods.<locals>.<listcomp>)r�r�r�r�)rr�r�rrr�
parse_methods�szArgsTestCase.parse_methodsc
Cs�tjd�}ddddg}|j|d�}|jd|�}|j|�}|j||�tj}|jtj	|�dd|g}t
|d	�� }x|D]}	t|	|d
�qvWWdQRX|jdd||�}|j|�}ddg}|j||�dS)NaV
            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?Ztest_method2Ztest_method3Ztest_method4)r�z-vz%s.Tests.test_method3rJ)rKz--matchfile)r�r�r�rrFrrrOrMrNrPrQ)
rr�rAr@r��methodsrVZsubsetrUr�rrr�test_matchfile�s&



zArgsTestCase.test_matchfilecCsZtjd�}|j|d�}|j|�}|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()
        )r�)r�z--fail-env-changedr&)r�T)r�r�)r�r�r�rr�)rr�r@r�rrr�test_env_changed�s
zArgsTestCase.test_env_changedcCs>tjd�}|j|d�}|jd|dd�}|j||g||d�dS)Nz�
            import unittest

            class Tests(unittest.TestCase):
                def test_bug(self):
                    # test always fail
                    self.fail("bug")
        )r�z-wry)r�)r�r�)r�r�r�rr�)rr�r@r�rrr�test_rerun_fail�s
zArgsTestCase.test_rerun_failcCs>tjd�}|j|d�}|j|dddd�}|j||g|d�dS)Nz�
            import unittest

            class Tests(unittest.TestCase):
                def test_bug(self):
                    pass
        )r�z-m�
nosuchtestr)r�)r�)r�r�r�rr�)rr�r@r�rrr�test_no_tests_ran�s
zArgsTestCase.test_no_tests_rancCsRtjd�}|j|d�}|j|d�}|j||dddd�}|j|||g||gd�dS)Nz�
            import unittest

            class Tests(unittest.TestCase):
                def test_bug(self):
                    pass
        )r�z-mrKr)r�)r�)r�r�r�rr�)rr�r@�	testname2r�rrr�,test_no_tests_ran_multiple_tests_nonexistentsz9ArgsTestCase.test_no_tests_ran_multiple_tests_nonexistentc	Cs^tjd�}|j|d�}tjd�}|j|d�}|j||dddddd�}|j|||g|gd	�dS)
Nz�
            import unittest

            class Tests(unittest.TestCase):
                def test_bug(self):
                    pass
        )r�z�
            import unittest

            class Tests(unittest.TestCase):
                def test_other_bug(self):
                    pass
        z-mrKZtest_other_bugr)r�)r�)r�r�r�rr�)rr�r@Z
other_coderMr�rrr�)test_no_test_ran_some_test_exist_some_notsz6ArgsTestCase.test_no_test_ran_some_test_exist_some_notN)r�r�r�r�rr"r(r)r?r/r1r4r~rr�r8r�r�rrur9r>rBrDrFrHrIrJrLrNrOrrrrr �s20
	)
r c@seZdZdd�ZdS)�	TestUtilscCs�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd	�d
�|jtjd�d
�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d�dS)Nrz0 msg��&�.>z1 msg{�G�z�?z10 msg�?z1 sec 500 msr%z1 secry�<z2 minz2 min 1 secr&iz3 hourz3 hour 2 minz3 hour 1 sec�xrR�yi0*i0*rRi�*i�*i0*i1*)rrZformat_duration)rrrr�test_format_duration)s(zTestUtils.test_format_durationN)r�r�r�rTrrrrrP(srP�__main__)&r�r�r�r�Zos.pathrRrr�r�r�r�r�r�r�r
rrZtest.libregrtestrr�rrSrer�r�rrT�normpathr�r.ZTestCaserr�r�r rPr��mainrrrr�<module>sB
2Ak)