HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //proc/thread-self/root/usr/local/lib/python3.7/test/__pycache__/test_regrtest.cpython-37.opt-1.pyc
B

��g���@s8dZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlmZddlmZddlmZee	d�Zej�ej�e�dd�Zej�ej�e��ZdZe�d	�ZGd
d�de
j�Z Gdd
�d
e
j�Z!Gdd�de!�Z"Gdd�de!�Z#Gdd�de
j�Z$e%dk�r4e
�&�dS)zM
Tests of regrtest.py.

Note: test_regrtest cannot be run twice in parallel.
�N)�libregrtest)�support)�utilsZgettotalrefcountz..z5[0-9]+:[0-9]+:[0-9]+ (?:load avg: [0-9]+\.[0-9]{2} )?z�
    from signal import SIGINT
    try:
        from _testcapi import raise_signal
        raise_signal(SIGINT)
    except ImportError:
        import os
        os.kill(os.getpid(), SIGINT)
    c@sbeZdZdZdd�Zdd�Ze�ee	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.dRdS�Z/dTS)U�ParseArgsTestCasezC
    Test regrtest's argument parsing, function _parse_args().
    c
CsHt���&}|�t��t�|�WdQRXWdQRX|�||���dS)N)rZcaptured_stderr�assertRaises�
SystemExitr�_parse_args�assertIn�getvalue)�self�args�msg�err�r�./usr/local/lib/python3.7/test/test_regrtest.py�
checkError-szParseArgsTestCase.checkErrorcCspxjdD]b}|j|d��Lt���(}|�t��t�|g�WdQRXWdQRX|�d|���WdQRXqWdS)N)z-hz--help)�optzRun Python regression tests.)	�subTestrZcaptured_stdoutrrrrr	r
)rr�outrrr�	test_help2s

 zParseArgsTestCase.test_help�dump_traceback_laterz,faulthandler.dump_traceback_later() requiredcCs>t�ddg�}|�|jd�|�dgd�|�ddgd�dS)Nz	--timeoutz4.2g������@zexpected one argument�foozinvalid float value)rr�assertEqualZtimeoutr)r�nsrrr�test_timeout:szParseArgsTestCase.test_timeoutcCst�dg�}|�|j�dS)Nz--wait)rr�
assertTrue�wait)rrrrr�	test_waitBszParseArgsTestCase.test_waitcCs.t�ddg�}|�|jd�|�dgd�dS)Nz
--worker-argsz[[], {}]zexpected one argument)rrrZworker_argsr)rrrrr�test_worker_argsFsz"ParseArgsTestCase.test_worker_argsc
CsTxNdD]F}|j|d��0t�|dg�}|�|jd�|�|gd�WdQRXqWdS)N)z-Sz--start)rrzexpected one argument)rrrr�startr)rrrrrr�
test_startKs

zParseArgsTestCase.test_startcCs�t�dg�}|�|jd�t�dg�}|�|jd�t�dg�}|�|jd�t�dgd�}|�|jd�t�g�}|�|jd�dS)Nz-v�z-vvv�z	--verboser)rrr�verbose)rrrrr�test_verboseRs
zParseArgsTestCase.test_verbosec
CsBx<dD]4}|j|d��t�|g�}|�|j�WdQRXqWdS)N)z-wz
--verbose2)r)rrrrZverbose2)rrrrrr�
test_verbose2^s
zParseArgsTestCase.test_verbose2c
CsBx<dD]4}|j|d��t�|g�}|�|j�WdQRXqWdS)N)z-Wz
--verbose3)r)rrrrZverbose3)rrrrrr�
test_verbose3ds
zParseArgsTestCase.test_verbose3c
CsPxJdD]B}|j|d��,t�|g�}|�|j�|�|jd�WdQRXqWdS)N)z-qz--quiet)rr)rrrr�quietrr#)rrrrrr�
test_quietjs

zParseArgsTestCase.test_quietc
CsBx<dD]4}|j|d��t�|g�}|�|j�WdQRXqWdS)N)z-oz	--slowest)r)rrrrZ
print_slow)rrrrrr�test_slowestqs
zParseArgsTestCase.test_slowestcCs4t�dg�}|�|j�t�dg�}|�|j�dS)Nz--headerz	--verbose)rrr�header)rrrrr�test_headerwszParseArgsTestCase.test_headerc
CsBx<dD]4}|j|d��t�|g�}|�|j�WdQRXqWdS)N)z-rz--randomize)r)rrrr�	randomize)rrrrrr�test_randomize~s
z ParseArgsTestCase.test_randomizecCsJt�ddg�}|�|jd�|�|j�|�dgd�|�ddgd�dS)Nz
--randseedZ12345i90zexpected one argumentrzinvalid int value)rrrZrandom_seedrr,r)rrrrr�
test_randseed�s
zParseArgsTestCase.test_randseedc
Csfx`dD]X}|j|d��Bt�|dg�}|�|jd�|�|gd�|�|ddgd�WdQRXqWdS)N)z-fz
--fromfile)rrzexpected one argumentz-szdon't go together)rrrrZfromfiler)rrrrrr�
test_fromfile�s
zParseArgsTestCase.test_fromfilec
CsBx<dD]4}|j|d��t�|g�}|�|j�WdQRXqWdS)N)z-xz	--exclude)r)rrrr�exclude)rrrrrr�test_exclude�s
zParseArgsTestCase.test_excludec
CsTxNdD]F}|j|d��0t�|g�}|�|j�|�|ddgd�WdQRXqWdS)N)z-sz--single)rz-frzdon't go together)rrrrZsingler)rrrrrr�test_single�s

zParseArgsTestCase.test_singlec
Cs�xPdD]H}|j|d��2t�|dg�}|�|jdg�|�|gd�WdQRXqW|�tjtj	�t
tj	d��}td|d�td|d�WdQRXtj
�tj	�}t�d	d
d|g�}|�|jddg�dS)N)z-iz--ignore)r�patternzexpected one argument�w�
matchfile1)�file�
matchfile2z-m�matchz--ignorefile)rrrrZignore_testsr�
addCleanupr�unlink�TESTFN�open�print�os�path�abspath)rrr�fp�filenamerrr�test_ignore�s

zParseArgsTestCase.test_ignorec
Cs�xPdD]H}|j|d��2t�|dg�}|�|jdg�|�|gd�WdQRXqWt�ddddg�}|�|jddg�|�tjtj	�t
tj	d��}td	|d
�td|d
�WdQRXtj
�tj	�}t�ddd
|g�}|�|jdd	dg�dS)N)z-mz--match)rr3zexpected one argumentz-mZpattern1Zpattern2r4r5)r6r7r8z--matchfile)rrrrZmatch_testsrr9rr:r;r<r=r>r?r@)rrrrArBrrr�
test_match�s"


zParseArgsTestCase.test_matchc
CslxfdD]^}|j|d��Ht�|dg�}|�|j�t�|dg�}|�|j�|�|gd�WdQRXqWdS)N)z-Gz
--failfast)rz-vz-Wz#-G/--failfast needs either -v or -W)rrrrZfailfastr)rrrrrr�
test_failfast�s
zParseArgsTestCase.test_failfastc
Cs�x�dD]�}|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�WdQRXqWdS)N)z-uz--use)rzgui,networkZgui�networkzgui,none,networkzall,-guizexpected one argumentrzinvalid resourcez
all,tzdataZtzdataZextralargefile)	rrrrZ
use_resources�listZ
ALL_RESOURCES�remover)rrrZexpectedrrr�test_use�s"


zParseArgsTestCase.test_usec
CsTxNdD]F}|j|d��0t�|dg�}|�|jd�|�|gd�WdQRXqWdS)N)z-Mz
--memlimit)rZ4Gzexpected one argument)rrrrZmemlimitr)rrrrrr�
test_memlimit�s

zParseArgsTestCase.test_memlimitcCs:t�ddg�}|�|jtj�tjd��|�	dgd�dS)Nz	--testdirrzexpected one argument)
rrr�testdirr>r?�joinr�SAVEDCWDr)rrrrr�test_testdir�szParseArgsTestCase.test_testdirc
CsBx<dD]4}|j|d��t�|g�}|�|j�WdQRXqWdS)N)z-Lz
--runleaks)r)rrrrZrunleaks)rrrrrr�
test_runleaks�s
zParseArgsTestCase.test_runleaksc
Cs�x�dD]�}|j|d���t�|dg�}|�|jd�t�|dg�}|�|jd�t�|dg�}|�|jd�t�|d	g�}|�|jd
�|�|gd�|�|dgd
�|�|dgd�|�|dgd�WdQRXqWdS)N)z-Rz--huntrleaks)r�:)��z
reflog.txtz6:)�rRz
reflog.txtz:3)rQr"z
reflog.txtz
6:3:leaks.log)rSr"z	leaks.logzexpected one argument�6z&needs 2 or 3 colon-separated argumentszfoo:zinvalid huntrleaks valuez6:foo)rrrr�
huntrleaksr)rrrrrr�test_huntrleaks�s

z!ParseArgsTestCase.test_huntrleaksc
Cs�x�dD]z}|j|d��dt�|dg�}|�|jd�|�|gd�|�|dgd�|�|ddgd	�|�|d
dgd	�WdQRXqWdS)N)z-jz--multiprocess)r�2�zexpected one argumentrzinvalid int valuez-Tzdon't go together�0)rrrrZuse_mpr)rrrrrr�test_multiprocess
s
z#ParseArgsTestCase.test_multiprocessc
CsBx<dD]4}|j|d��t�|g�}|�|j�WdQRXqWdS)N)z-Tz
--coverage)r)rrrrZtrace)rrrrrr�
test_coverages
zParseArgsTestCase.test_coveragec
Cs`xZdD]R}|j|d��<t�|dg�}|�|jtj�tj	d��|�
|gd�WdQRXqWdS)N)z-Dz
--coverdir)rrzexpected one argument)rrrr�coverdirr>r?rLrrMr)rrrrrr�
test_coverdirs
zParseArgsTestCase.test_coverdirc
CsBx<dD]4}|j|d��t�|g�}|�|j�WdQRXqWdS)N)z-Nz--nocoverdir)r)rrrZassertIsNoner\)rrrrrr�test_nocoverdir%s
z!ParseArgsTestCase.test_nocoverdirc
Csdx^dD]V}|j|d��@t�|dg�}|�|jd�|�|gd�|�|dgd�WdQRXqWdS)N)z-tz--threshold)rZ1000i�zexpected one argumentrzinvalid int value)rrrrZ	thresholdr)rrrrrr�test_threshold+s
z ParseArgsTestCase.test_thresholdcCspxjdD]b}|j|d��Lt�t����}t�|g�}WdQRX|�|j�|�	�}|�
d|�WdQRXqWdS)N)z-nz--nowindows)rz)the --nowindows (-n) option is deprecated)r�
contextlib�redirect_stderr�io�StringIOrrrZ	nowindowsr
r	)rr�stderrrrrrr�test_nowindows3s
z ParseArgsTestCase.test_nowindowsc
CsBx<dD]4}|j|d��t�|g�}|�|j�WdQRXqWdS)N)z-Fz	--forever)r)rrrr�forever)rrrrrr�test_forever<s
zParseArgsTestCase.test_forevercCs|�dgd�dS)Nz--xxxzusage:)r)rrrr�test_unrecognized_argumentBsz,ParseArgsTestCase.test_unrecognized_argumentcCs*t�dg�}|�|j�|�|jd�dS)Nz--quir)rrrr'rr#)rrrrr�test_long_option__partialEsz+ParseArgsTestCase.test_long_option__partialcCs8t�ddg�}|�|j�|�|jd�|�|j�dS)Nz--quietz	--excluder)rrrr'rr#r0)rrrrr�test_two_optionsJsz"ParseArgsTestCase.test_two_optionscCs t�ddg�}|�|jd�dS)Nz--start�)rrrr)rrrrr�#test_option_with_empty_string_valuePsz5ParseArgsTestCase.test_option_with_empty_string_valuecCs t�dg�}|�|jdg�dS)Nr)rrrr)rrrrr�test_argTszParseArgsTestCase.test_argcCs<t�ddg�}|�|j�|�|jd�|�|jdg�dS)Nz--quietrr)rrrr'rr#r)rrrrr�test_option_and_argXsz%ParseArgsTestCase.test_option_and_argcCs4t�dddg�}|�|jd�|�|jddg�dS)NZtest_unaryopz-vZ
test_binopr!)rrrr#r)rrrrr�test_arg_option_arg^sz%ParseArgsTestCase.test_arg_option_argcCs|�dgd�dS)Nz--unknown-optionz(unrecognized arguments: --unknown-option)r)rrrr�test_unknown_optioncsz%ParseArgsTestCase.test_unknown_optionN)0�__name__�
__module__�__qualname__�__doc__rr�unittest�
skipUnless�hasattr�faulthandlerrrrr r$r%r&r(r)r+r-r.r/r1r2rCrDrErIrJrNrOrVrZr[r]r^r_rergrhrirjrlrmrnrorprrrrr(sT	
	rc	@sfeZdZdZdZdZdd�Zddd�Zd	d
�Zdd�Z	d
d�Z
ddd�Zdd�Zddd�Z
dd�ZdS)�BaseTestCaser!Ztest_regrtest_ztest_[a-zA-Z0-9_]+cCs4tj�tj�t��|_t��|_|�	t
j|j�dS)N)r>r?�realpath�dirname�__file__rK�tempfileZmkdtemp�
tmptestdirr9rZrmtree)rrrr�setUpms
zBaseTestCase.setUpNc
Cs�|sdtj}tjd7_|dkr.t�d�}|j|}tj�|j|d�}|�	t
j|�y(t|ddd��}|�
|�WdQRXWn>tk
r�}z t��s�|�d||f��Wdd}~XYnX|S)	Nznoop%sr!z�
                    import unittest

                    class Tests(unittest.TestCase):
                        def test_empty_test(self):
                            pass
                z.py�xzutf-8)�encodingzcannot write %s: %s)ry�TEST_UNIQUE_ID�textwrap�dedent�TESTNAME_PREFIXr>r?rLr~r9rr:r<�write�PermissionError�	sysconfig�is_python_build�skipTest)r�name�coder?rA�excrrr�create_testss"

zBaseTestCase.create_testcCs*t�||tj�}|s&|�d||f�|S)Nz%r not found in %r)�re�search�	MULTILINE�fail)r�regex�outputr8rrr�regex_search�szBaseTestCase.regex_searchcCs"t�d|tj�}|�||�dS)N�^)r��compiler��assertRegex)rr�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)�.0r8rrr�	<genexpr>�sz4BaseTestCase.parse_executed_tests.<locals>.<genexpr>)�
LOG_PREFIX�TESTNAME_REGEXr��finditerr�rG)rr�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}t|t�rp|g}|�|�}|	r�|�t|�t|�|�n|�|||�dd���fdd�}
|r�|
d|�}|�||�|r�|
d|�}|�||�|�r|
d|�}|�||�|�r$|
d|�}|�||�|�r�|
d	|�}|�||�td
}|�||�x*|D]"}td|�d�}|�||��qZW|�r�|
d
|�}|�||�t|�t|�t|�t|�t|�t|�}|�rd|�|�f}|�s|�s|dk�rd|}|�||�|
�r|�|d�g}|�r4|�d�n|�rJ|�rJ|�d�|
�rZ|�d�t	||||
|||f��s~|�d�n|�s�|�d�d�
|�}|�r�|�|d�d|}|�|d|�dS)NcSs|dkrdSdS)Nr!�srkr)�countrrr�plural�sz1BaseTestCase.check_executed_tests.<locals>.pluralcs6t|�}d�t|��}||�|�f}d||f}|S)N� z%s:\n    %s$)�lenrL�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 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: FAILUREzFAILURE then %szTests result: %s)�
isinstance�strr�r�setr�r�r��append�anyrL)rr�r��skipped�failed�env_changed�omitted�rerun�no_test_ranr,�interrupted�fail_env_changedZexecutedr�r�Z	test_nameZgood�resultr)r�r�check_executed_tests�s�













0



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

stdout:
---
%s
---
z
stderr:
---
%s---
)�
subprocess�PIPE�run�
returncoder�r�rdr�)rrr��exitcode�kw�procr
rrr�run_commands"



zBaseTestCase.run_commandcKs&tjdddf|�}|j|f|�}|jS)Nz-Xrxz-I)�sys�
executabler�r�)rrr�r�rrr�
run_python#szBaseTestCase.run_python)NN)	rrrrrrFFF)Nr)rqrrrsr�r�r�rr�r�r�r�r�r�r�r�rrrrryhs 

\
rycs�eZdZdZdZ�fdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
e�e��d�dd��Zdd�Ze�e��d�e�ejdkd�dd���Ze�ejdkd�dd ��Z�ZS)!�ProgramsTestCasezp
    Test various ways to run the Python test suite. Use options close
    to options used on the buildbot.
    rRcsrt����fdd�t�j�D��_dddg�_ddd�jg�_tt	d	�rX�j�
d
�tjdkrn�j�
d�dS)
Ncsg|]}����qSr)r�)r��index)rrr�
<listcomp>5sz*ProgramsTestCase.setUp.<locals>.<listcomp>z-Wdz-Ez-bbz-uallz-rwWz--testdir=%sr)z	--timeoutZ3600z-j4�win32z-n)�superr�range�NTESTr��python_argsr~�
regrtest_argsrwrx�extendr��platformr�)r)�	__class__)rrr1s


zProgramsTestCase.setUpcCs |�|�|j||jdd�dS)NT)r,)r�r�r�)rr�rrr�check_output?s
zProgramsTestCase.check_outputcCs|�|�}|�|�dS)N)r�r�)rrr�rrr�	run_testsCs
zProgramsTestCase.run_testscCs2tj�|jd�}|j|f|j|j�}|�|�dS)Nzregrtest.py)r>r?rLrKr�r�r�r�)r�scriptrrrr�test_script_regrtestGsz%ProgramsTestCase.test_script_regrtestcCs |jd|j|j�}|�|�dS)N�-m�test)r�r�)r�r�r�r�)rrrrr�test_module_testNsz!ProgramsTestCase.test_module_testcCs |jd|j|j�}|�|�dS)N�-m�
test.regrtest)r�r�)r�r�r�r�)rrrrr�test_module_regrtestTsz%ProgramsTestCase.test_module_regrtestcCs |jd|j|j�}|�|�dS)N�-m�
test.autotest)r�r�)r�r�r�r�)rrrrr�test_module_autotestZsz%ProgramsTestCase.test_module_autotestcCs(d}|jd|f|j|j�}|�|�dS)Nzfrom test import autotestz-c)r�r�r�r�)rr�rrrr�test_module_from_test_autotest`s
z/ProgramsTestCase.test_module_from_test_autotestcCs2tj�|jd�}|j|f|j|j�}|�|�dS)Nzautotest.py)r>r?rLrKr�r�r�r�)rr�rrrr�test_script_autotestgsz%ProgramsTestCase.test_script_autotestz$run_tests.py script is not installedcCs0tj�tddd�}|f|j|j�}|�|�dS)N�ToolsZscriptszrun_tests.py)r>r?rL�ROOT_DIRr�r�r�)rr�rrrr�test_tools_script_run_testsmsz,ProgramsTestCase.test_tools_script_run_testscGs|�|�}|�|j�dS)N)r�r�r�)rrr�rrr�	run_batchus
zProgramsTestCase.run_batchz test.bat script is not installedr�zWindows onlycCs^tj�tddd�}d|jg}t��ddkr8|�d�tsF|�d�|j	|f||j
��dS)	Nr�Zbuildbotztest.batz--testdir=%sr�64bitz-x64z+d)r>r?rLr�r~r��architecturer��Py_DEBUGr�r�)rr�Z	test_argsrrr�test_tools_buildbot_testys

z)ProgramsTestCase.test_tools_buildbot_testcCsvtj�td�}tj�|�s,|�d|�d��dg}t��ddkrL|�d�t	rZ|�d�|j
|f||j|j��dS)	NzPCbuild\rt.batzFile "z" does not existz-qrr�z-x64z-d)
r>r?rLr��isfiler�r�r�r�r�r�r�r�)rr�Zrt_argsrrr�test_pcbuild_rt�s

z ProgramsTestCase.test_pcbuild_rt)rqrrrsrtr�rr�r�r�r�r�r�r�r�rurvr�r�r�r�r�r�r�r��
__classcell__rr)r�rr�)s$

r�c@s$eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Ze�ed�dd��Ze�ed�dd��Zdd �Zd!d"�Zejd#d$��Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Z d3d4�Z!d5d6�Z"d7d8�Z#ejd9d:��Z$d;d<�Z%d=d>�Z&d?S)@�ArgsTestCasez2
    Test arguments of the Python test suite.
    cOs"ddd|jf|�}|j|f|�S)Nz-mr�z--testdir=%s)r~r�)rZtestargsr��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�rX)r�)r�r�r�r�r�)rr�Ztest_okZtest_failingr�r�rrr�test_failing_test�s
zArgsTestCase.test_failing_testcCs�i}x*dD]"}t�d|�}|�||�||<q
Wt|���}|jd|��}|�||�|jd	|��}|j|||dd�|j|�}|j|||d�dS)
N)ZaudiorFa
                        from test import support; support.requires(%r)
                        import unittest
                        class PassingTest(unittest.TestCase):
                            def test_pass(self):
                                pass
                    �-u�all�-uaudiorF)r�)r�r�)r�)r�r�r�r��valuesr�r�)rr��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))
        Zrandomz-rzTESTRANDOM: ([0-9]+)r!z
--randseed=%s)	r�r�r�r�r�r�r�r�r)	rr�r�r�r�r8�test_randomZ	randseed2Ztest_random2rrrr��s

zArgsTestCase.test_randomc		s��fdd�td�D�}tj}��tj|�t|d��V}d}xJt|d�D]<\}}d||t|�|f}|rr|d|7}t||d�|}qFWWdQRX��	d	|�}��
||�t|d��8}x0t|d�D]"\}}td
|t|�|f|d�q�WWdQRX��	d	|�}��
||�t|d��"}x|D]}t||d��qWWdQRX��	d	|�}��
||�t|d��&}x|D]}td||d��qdWWdQRX��	d	|�}��
||�dS)Ncsg|]}����qSr)r�)r�r�)rrrr��sz.ArgsTestCase.test_fromfile.<locals>.<listcomp>rQr4r!z00:00:%02i [%s/%s] %sz -- %s took 0 sec)r6z
--fromfilez
[%s/%s] %szLib/test/%s.py)r�rr;r9r:r<�	enumerater�r=r�r�)	rr�rBrAZpreviousr�r��liner�r)rrr/�s:(

 zArgsTestCase.test_fromfilecCs6t}|jd|d�}|j|dd�}|j|||dd�dS)N�sigint)r��)r�T)r�r�)�TEST_INTERRUPTEDr�r�r�)rr�r�r�rrr�test_interrupteds

zArgsTestCase.test_interruptedcsR�fdd�td�D�}�jd|��}��||�d�jt|�f}��||�dS)Ncsg|]}����qSr)r�)r�r�)rrrr�sz-ArgsTestCase.test_slowest.<locals>.<listcomp>r"�	--slowestz#10 slowest tests:
(?:- %s: .*
){%s})r)r�r�r�r�r�r�)rr�r�r�r)rrr)szArgsTestCase.test_slowestc
Cs�t}|jd|d�}xndD]f}|j|d��P|r:dd|f}nd|f}|j|ddi�}|j|||d	d
�d}|�||�WdQRXqWdS)Nr�)r�)FT)�multiprocessingz	--slowestz-j2r�rT)r�r�z10 slowest tests:
)rr�rr�r�r�)rr�r�rrr�r�rrr�test_slowest_interrupted"s

z%ArgsTestCase.test_slowest_interruptedcCs8|�d�}|�d|�}|�||g�d}|�||�dS)NZcoveragez
--coveragezLlines +cov% +module +\(path\)\n(?: *[0-9]+ *[0-9]{1,2}% *[^ ]+ +\([^)]+\)+)+)r�r�r�r�)rr�r�r�rrrr[4s

zArgsTestCase.test_coveragecCs*|�d�}|jd|dd�}|�|d�dS)Nrz--wait�key)r�zPress any key to continue)r�r�r�)rr�r�rrrr=s
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
        rf)r�z	--foreverrX)r�r")r�)r�r�r�r�r�)rr�r�r�rrrrgCs
zArgsTestCase.test_foreverc
	Cs�|jd|d�}d}|�tj|�|jdd|dtjd�}|j||g|d�d	}|�|t	�
|��d
||f}|�||�t|��}|�
�}	|�||	�WdQRXdS)NrU)r�z
reflog.txtz--huntrleaksz3:3:rX)r�rd)r�z&beginning 6 repetitions
123456
......
z%s leaked [1, 1, 1] %s, sum=3
)r�r9rr:r�r�ZSTDOUTr�r�r��escaper	r<�read)
rr�Zwhatr�rBr�r�Zline2rAZreflogrrr�
check_leakXs


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�r	)rr�rrrrVlszArgsTestCase.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 descriptors)r�r�r	)rr�rrr�test_huntrleaks_fd_leakzsz$ArgsTestCase.test_huntrleaks_fd_leakcs<�fdd�td�D�}�jd|��}��|����|�dS)Ncsg|]}����qSr)r�)r��i)rrrr��sz0ArgsTestCase.test_list_tests.<locals>.<listcomp>rQ�--list-tests)r)r�r�r�rstrip�
splitlines)rr�r�r)rr�test_list_tests�szArgsTestCase.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
        )r�z%s.Tests.test_method1z%s.Tests.test_method2z--list-casesz-m�test_method1)r�r�r�r�rr)rr��testname�all_methodsr�rrr�test_list_cases�s

zArgsTestCase.test_list_casescCsBd}|jd|d�}|g}|jd	|�ddi�}|j|||dd�dS)
Nz,import faulthandler; faulthandler._sigsegv()Zcrash)r�r��-j2r�rXT)r�r,)r)r�r�r�)rr�Z
crash_testr�r�rrr�test_crashed�s
zArgsTestCase.test_crashedcCs$tjdtjd�}dd�|�|�D�S)Nz^(test[^ ]+).*ok$)�flagscSsg|]}|�d��qS)r!)r�)r�r8rrrr��sz.ArgsTestCase.parse_methods.<locals>.<listcomp>)r�r�r�r�)rr�r�rrr�
parse_methods�szArgsTestCase.parse_methodsc
	Cs�t�d�}ddddg}|j|d�}tj}|�tj|�dd|g}t|d�� }x|D]}t||d	�qTWWdQRX|�	d
d||�}|�
|�}	ddg}|�|	|�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�test_method2�test_method3�test_method4)r�z%s.Tests.test_method3r4)r6z-vz--ignorefile)r�r�r�rr;r9r:r<r=r�rr)
rr�rrrB�subsetrAr�r��methodsrrr�test_ignorefile�s 


zArgsTestCase.test_ignorefilec
	Cs�t�d�}ddddg}|j|d�}|�d|�}|�|�}|�||�tj}|�tj	|�dd|g}t
|d	�� }x|D]}	t|	|d
�qvWWdQRX|�dd||�}|�|�}ddg}|�||�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
        rrrr)r�z-vz%s.Tests.test_method3r4)r6z--matchfile)r�r�r�r�rrrr;r9r:r<r=)
rr�rrr�rrBrrAr�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()
        )r�)r�z--fail-env-changedr")r�T)r�r�)r�r�r�r�r�)rr�rr�rrr�test_env_changeds
zArgsTestCase.test_env_changedcCs>t�d�}|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-wrX)r�)r�r�)r�r�r�r�r�)rr�rr�rrr�test_rerun_fails
zArgsTestCase.test_rerun_failcCs<t�d�}|j|d�}|jd|dd�}|j||g|d�dS)NaT
            import builtins
            import unittest

            class Tests(unittest.TestCase):
                failed = False

                def test_fail_once(self):
                    if not hasattr(builtins, '_test_failed'):
                        builtins._test_failed = True
                        self.fail("bug")
        )r�z-wr)r�)r�)r�r�r�r�r�)rr�rr�rrr�test_rerun_success(s
zArgsTestCase.test_rerun_successcCs>t�d�}|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�r�r�)rr�rr�rrr�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")
        )r�r)r�)r�r�r�r�r�)rr�rr�rrr�test_no_tests_ran_skipIs
z#ArgsTestCase.test_no_tests_ran_skipcCsRt�d�}|j|d�}|j|d�}|j||dddd�}|j|||g||gd�dS)Nz�
            import unittest

            class Tests(unittest.TestCase):
                def test_bug(self):
                    pass
        )r�z-mr"r)r�)r�)r�r�r�r�r�)rr�r�	testname2r�rrr�,test_no_tests_ran_multiple_tests_nonexistentVsz9ArgsTestCase.test_no_tests_ran_multiple_tests_nonexistentc	Cs^t�d�}|j|d�}t�d�}|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-mr"Ztest_other_bugr)r�)r�)r�r�r�r�r�)rr�rZ
other_coder%r�rrr�)test_no_test_ran_some_test_exist_some_notes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
        )r�z--fail-env-changedr")r�T)r�r�z--findleaks)r�r�r�r�r�)rr�rr�rrr�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)
        )r�z-j2z
--timeout=1.0rX)r�)r�z%s timed out)	r�r�r�r�r�r�r�r�r�)rr�rr�rrr�test_multiprocessing_timeout�s
z)ArgsTestCase.test_multiprocessing_timeoutcCs�tj�|jd�}t�|�tj�|jd�}t|d���||g}ddd|jdg}|�|�x |D]}|�tj�	|�|�qbWdS)NZtest_python_123Ztest_python_456�wbz-mr�z--tempdir=%sz	--cleanup)
r>r?rLr~�mkdirr<�closer�ZassertFalse�exists)rr{rBr�r�r�rrr�test_cleanup�s


zArgsTestCase.test_cleanupN)'rqrrrsrtr�r�r�r�r/rr)rr[rrgr	rurvr�rVr
rrrZcpython_onlyrrrrrr r!r#r$r&r'r(r)r.rrrrr��s>0
	$)

 r�c@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_duration)rrrr�test_format_duration�s(zTestUtils.test_format_durationN)rqrrrsr2rrrrr/�sr/�__main__)'rtr`rxrbZos.pathr>r�r�r�r�r�r}r�rur�rrZtest.libregrtestrrwr�r?rLr{r|r�r@�normpathr�r�rZTestCaserryr�r�r/rq�mainrrrr�<module>sF
BBk7