HOME


Mini Shell 1.0
DIR: /snap/core20/current/usr/lib/python3.8/test/libregrtest/__pycache__/
Upload File :
Current File : //snap/core20/current/usr/lib/python3.8/test/libregrtest/__pycache__/main.cpython-38.pyc
U

���gK`�@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZddl m!Z!ddl"m#Z#ddl$m%Z%m&Z&m'Z'm(Z(ddl)m*Z*dZ+Gd	d
�d
�Z,d
dd�Z-dS)�N)�_parse_args)�	findtests�runtest�get_abs_module�STDTESTS�NOTTESTS�PASSED�FAILED�ENV_CHANGED�SKIPPED�RESOURCE_DENIED�INTERRUPTED�CHILD_ERROR�TEST_DID_NOT_RUN�TIMEOUT�PROGRESS_MIN_TIME�format_test_result�	is_failed)�setup_tests)�setup_pgo_tests)�removepy�count�format_duration�	printlist)�supportg^@c@s�eZdZdZdd�Zdd�Zd7dd�Zd8d
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd9d1d2�Zd3d4�Zd5d6�Zd0S):�RegrtestalExecute a test suite.

    This also parses command-line options and modifies its behavior
    accordingly.

    tests -- a list of strings containing test names (optional)
    testdir -- the directory in which to look for tests (optional)

    Users other than the Python test suite will certainly want to
    specify testdir; if it's omitted, the directory containing the
    Python test suite is searched for.

    If the tests argument is omitted, the tests listed on the
    command-line will be used.  If that's empty, too, then all *.py
    files beginning with test_ will be used.

    The other default arguments (verbose, quiet, exclude,
    single, randomize, findleaks, use_resources, trace, coverdir,
    print_slow, and random_seed) allow programmers calling main()
    directly to set the values that would normally be set by flags
    on the command line.
    cCs�d|_g|_g|_g|_g|_g|_g|_g|_g|_g|_	d|_
d|_g|_d|_
t��|_d|_d|_d|_d|_d|_d|_d|_d|_dS)NF��)�ns�tests�selected�good�bad�skipped�resource_denieds�environment_changed�run_no_tests�rerun�first_result�interrupted�
test_times�tracer�time�	monotonic�
start_time�
test_count�test_count_width�next_single_test�next_single_filename�
testsuite_xml�win_load_tracker�tmp_dir�worker_test_name��self�r9�+/usr/lib/python3.8/test/libregrtest/main.py�__init__6s.
zRegrtest.__init__cCs<t|j�t|j�Bt|j�Bt|j�Bt|j�Bt|j�BS�N)�setr!r"r#r$r%r&r7r9r9r:�get_executed`s���zRegrtest.get_executedFc	Cs�|j}|j}|ttfkr.|s.|j�|j|f�|tkrD|j�|�n�|t	tfkrb|s�|j
�|�n�|tkrx|j�|�n�|t
kr�|j�|�nj|tkr�|j�|�|j�|�nH|tkr�|j�|�n2|tkr�d|_n"|tkr�|j
�|�ntd|��|�r|t	tthk�r|j
�|�|j}|�r�ddlmm}|D]F}z|j�|�|��Wn(|jk
�r~t|tj d��YnX�q<dS)NTzinvalid test result: %rr��file)!�	test_name�resultrr
r*�append�	test_timerr!r	r"r
r%rr#rr$rr&r)r�
ValueError�remove�xml_data�xml.etree.ElementTree�etree�ElementTreer3Z
fromstringZ
ParseError�print�sys�
__stderr__)r8rBr'rA�okrG�ET�er9r9r:�accumulate_resultesDzRegrtest.accumulate_resultrcCst|}|��}|dk	r(d|d�d|��}t��|j}tjt|�d�}|�d|��}|rd|dd�}t|dd�dS)Nz
load avg: z.2f� )Zseconds���T)�flush)�
getloadavgr,r-r.�datetimeZ	timedelta�intrK)r8�line�emptyZload_avgrDr9r9r:�log�szRegrtest.logcCsh|jjrdS||j��|j��}t|j�t|j�}|rN|jjsN|�d|��}|�d|�d|���dS)N�/�[z] )	r�quietr0r/�lenr"r%�pgorZ)r8�
test_index�textrXZfailsr9r9r:�display_progress�szRegrtest.display_progressc
Cs�ttjdd�f|�}|jr(gt_|_|j}|dk	r\ddlm	}||j�\}}||_||_
t|j�|j
r�|j
\}}}|dks�|dkr�d}	t|	tjdd�t�d�|jr�tj�|j�|_||_dS)Nrr)�parse_worker_argszwInvalid values for the --huntrleaks/-R parameters. The number of warmups and repetitions must be at least 1 each (1:1).T�r@rT�)rrL�argv�xmlpathrZjunit_xml_listr3�worker_args�test.libregrtest.runtest_mprcr6r�args�
huntrleaksrK�stderr�exit�tempdir�os�path�
expanduserr)
r8�kwargsrrhrcrA�warmup�repetitions�_�msgr9r9r:�
parse_args�s&

zRegrtest.parse_argsc	Cs�||_|jjrftj�|jd�|_z0t|jd��}|�	��
�}|g|_W5QRXWntk
rdYnX|jjr�g|_t
�d�}ttj�tj|jj���J}|D]>}|�dd�d}|�
�}|�|�}|dk	r�|j�|���q�W5QRXt|j�|jj�rt|j�tdd�}t��}|jj�rX|jjD]$}	|	|k�rB|�|	�|�|	��q*g|j_|jj�rxt |jjt!�t"��}
nt |jj||�}
|jj�s�|j�p�|jj�p�|
|_#n|j|_#|jj�r|j#dd�|_#z"|
�$|j#d�}|
|d|_%Wnt&k
�rYnX|jj'�r\z|j#d|j#�$|jj'��=Wn,t(k
�rZt)d|jj't*j+d�YnX|jj,�r�|jj-dk�r�t.�/d	�|j_-t.�0|jj-�t.�1|j#�dS)
NZ
pynexttest�rz\btest_[a-zA-Z0-9_]+\b�#rrz1Couldn't find starting test (%s), using all testsr?i���)2rr�singlerorp�joinr5r2�open�read�strip�OSErrorZfromfile�re�compiler�SAVEDCWD�split�searchrC�grouprr_rrr�copyZexcluderjrF�addZtestdirr�listr=r �indexr1�
IndexError�startrErKrLrl�	randomize�random_seed�randomZ	randrangeZseedZshuffle)r8r�fpZ	next_testZregexrX�matchZstdtestsZnottests�argZalltests�posr9r9r:�
find_tests�sr











��
zRegrtest.find_testscCs|jD]}t|�qdSr<)r rK)r8�namer9r9r:�
list_testss
zRegrtest.list_testscCsX|D]N}t|tjj�rqt|tj�r0|�|�qt|tj�rt�|�rt	|�
��qdSr<)�
isinstance�unittest�loaderZ_FailedTestZ	TestSuite�_list_casesZTestCaserZ
match_testrK�id)r8�suite�testr9r9r:r�s
zRegrtest._list_casesc	Cs�dt_t�|jj|jj�|jD]N}t|j|�}ztj	�
|�}|�|�Wq tjk
rl|j
�|�Yq Xq |j
r�ttjd�ttt|j
�d�dtjd�t|j
tjd�dS)NFr?r��skipped:)r�verboseZset_match_testsrZmatch_testsZignore_testsr rr�ZdefaultTestLoaderZloadTestsFromNamer�ZSkipTestr#rCrKrLrlrr^r)r8rAZabstestr�r9r9r:�
list_cases s
zRegrtest.list_casescCs�d|j_d|j_d|j_|��|_|��|�d�|jdd�|_|jD]F}|�d|�d��d|j_t	|j|�}|j
|dd�|jtkrJq�qJ|jr�t
tt|j�d�d�t|j�|��dS)	NTFz'Re-running failed tests in verbose modezRe-running z in verbose mode)r'r�z
failed again:)rr��failfastZverbose3�get_tests_resultr(rZr"r'rrQrBr
rKrr^r�display_result)r8rArBr9r9r:�rerun_failed_tests1s$




zRegrtest.rerun_failed_testscCs
|jjrdSt�td|���|jr0td�t|j�|��}|rht�ttt	|�d�d�t
|�|jr�|jjs�t�|j
s�|js�|js�t	|j�dkr�tddd�ttt	|j�d�d	�|jj�r|jjd
d�t�td�|jdd
�D]\}}td|t|�f�q�|j
�r>t�ttt	|j
�d�d�t
|j
�|j�rpt�td�tt	|j�d���t
|j�|j�r�|jj�s�t�ttt	|j�d�d�t
|j�|j�r�t�tdtt	|j�d��t
|j�|j�rt�ttt	|j�d�d�t
|j�dS)Nz== Tests result: %s ==z(Test suite interrupted by signal SIGINT.r�zomitted:rZAllrR)�endzOK.T)�reversez10 slowest tests:�
z- %s: %szfailed:z%{} altered the execution environment:r�z%s:zre-run testz
run no tests:)rr_rKr�r)r=r r>rr^rr!r]r"r#Z
print_slowr*�sortrr%�formatr'r&)r8ZomittedrDr�r9r9r:r�Ksd���

�


zRegrtest.display_resultcCs�|jjr ddl}|jddd�|_tj��}d}|jjrJ|dt|jj�7}|�	|�d}t
|jd�D�]\}}t�
�}|}|r�d||f}|�||�|jr�d	}	tt��}
|jj|	t�|
d
�|
d}nt|j|�}|�|�|jtkr��q|t|�}t�
�|}|tk�rd|t|�f}n|jtk�r.d}tj��D]&}
|
|k�r8|
�d
��r8t�|
��q8|jjrdt||j�rd�q|qd|�r�t|�dS)NrFT)�tracerzRun tests sequentiallyz (timeout: %s)rz%s -- %szDresult = runtest(self.ns, test_name); self.accumulate_result(result))�globals�localsrBz%s in %sztest.) rr�ZTracer+rL�modules�keysZtimeoutrrZ�	enumeraterr,r-rb�dictr�Zrunctxr�rrQrBr
rrr�
startswithrZunloadr�rrK)r8r�Zsave_modulesrvZ
previous_testr`rAr.ra�cmdrrBrD�moduler9r9r:�run_tests_sequential�sJ






zRegrtest.run_tests_sequentialccs6|D]*}|V|jrdS|jjr|jrdSqqdSr<)r"r�fail_env_changedr%)r8rrAr9r9r:�
_test_forever�szRegrtest._test_forevercCsvtdt��ftj����tdtjdd�dtj�tdt���t�	�}|rXtd|�tdt
�d�t��f�dS)	Nz==T)Zaliasedz	%s-endianz== cwd:z
== CPU count:z== encodings: locale=%s, FS=%sF)
rK�platformZpython_implementationrL�versionr��	byteorderro�getcwd�	cpu_count�localeZgetpreferredencoding�getfilesystemencoding)r8r�r9r9r:�display_header�s�
��zRegrtest.display_headercCs�g}|jr|�d�n@|jjr0|jr0|�d�n&t|j|j|j|j|jf�sV|�d�|jrf|�d�|st|�d�d�	|�}|j
r�d|j
|f}|S)N�FAILUREzENV CHANGEDzNO TEST RUNr
�SUCCESSz, z
%s then %s)r"rCrr�r%�anyr!r#r)r{r()r8rBr9r9r:r��s"�



zRegrtest.get_tests_resultcCs�|jjs.|jjs6|jjs6|jjs6|js6|jjs6|��|jjrh|jj\}}}|dkrhd}t	|t
jdd�|jjr~t	d|jj
�|jjr�|�t|j��|_d|_d|_n.t|j�|_d�t|j��|_t|j�d|_|jjr�d	d
lm}||�n|��dS)N�zhWARNING: Running tests with --huntrleaks/-R and less than 3 warmup repetitions can give false positives!TrdzUsing random seedrz/{}rr)�run_tests_multiprocess)r�headerr_r]rzrrjr�rkrKrL�stdoutr�r�Zforeverr�r�r r/r0�iterr�r^Zuse_mprir�r�)r8rsrtrurvr�r9r9r:�	run_tests�s<�����
zRegrtest.run_testsc	Cs�|jrB|jr6t|jd��}|�|jd�W5QRXnt�|j�|jrf|j��}|jdd|j	j
d�t�t�
�|j}tdt|��td|���|j	jr�t�dt���dS)N�w�
T)Zshow_missingZsummary�coverdirzTotal duration: %szTests result: %szleaks %d)r2r1r|�writero�unlinkr+ZresultsZ
write_resultsrr�rKr,r-r.rr�Zrunleaks�system�getpid)r8r�rxZdurationr9r9r:�finalizes 
�zRegrtest.finalizec

Cs�|jjs|jsdSddlmm}|�d�}dddd�}|jD]N}|�|�|D]:}z ||t|�	|d��7<WqRt
k
r�YqRXqRq@|��D]\}}|�|t
|��q�tj�tj|jj�}t|d�� }|�|�D]}	|�|	�q�W5QRXdS)NrZ
testsuites)r�errorsZfailures�wb)rrgr3rHrIrJZElementrCrW�getrE�itemsr=�strrorpr{rr�r|Ztostringlistr�)
r8rO�rootZtotalsr��k�vrg�f�sr9r9r:�save_xml_results$


 
zRegrtest.save_xml_resultcCst|jjr|jj|_|js`t��rVt�d�|_|jdkrBt�d�|_tj�|jd�|_n
t	�
�|_tj�|j�|_dS)NZabs_builddirZsrcdirZbuild)rrnr5�	sysconfigZis_python_buildZget_config_varrorpr{�tempfileZ
gettempdir�abspathr7r9r9r:�set_temp_dir6s


zRegrtest.set_temp_dircCsLtj|jdd�t��}|jdk	r.d�|�}n
d�|�}tj�|j|�}|S)NT)�exist_okztest_python_worker_{}ztest_python_{})ro�makedirsr5r�r6r�rpr{)r8�pid�test_cwdr9r9r:�create_temp_dirLs

zRegrtest.create_temp_dircCszddl}tj�|�|j�d�}td|j�|�|�D]>}tj�|�r^td|�t�	|�q6td|�t�
|�q6dS)Nrz
test_python_*zCleanup %s directoryzRemove directory: %szRemove file: %s)�globrorpr{�escaper5rK�isdirrZrmtreer�)r8r�rpr�r9r9r:�cleanupZszRegrtest.cleanupNc
Ks�|�|�|��|jjr,|��t�d�|��}z2tj|dd��||j_	|�
||�W5QRXWn<tk
r�}ztj
tdd�t�|j�W5d}~XYnXdS)NrT)r])rm)rwr�rr�rLrmr�rZtemp_cwdrn�_main�
SystemExit�faulthandlerZdump_traceback_later�EXIT_TIMEOUT�code)r8rrrr��excr9r9r:�maings

z
Regrtest.maincCs.|jdk	r|j��Sttd�r*t��dSdS)NrUr)r4rU�hasattrror7r9r9r:rU�s



zRegrtest.getloadavgc
Cs�|jdk	r$ddlm}||j|j�|jjr4td�|jjt_|jj	t_
t|j�|�|�|jj
rv|�
�t�d�|jjr�|��t�d�tjdkr�|jdkr�ddlm}z|�|_Wn0tk
r�}ztd|���W5d}~XYnXz.|��|��|jj�r|j�r|��W5|jdk	�r:|j��d|_X|��|��|j�r^t�d�|j�rpt�d�|jj �r�|j!�r�t�d	�t�d�dS)
Nr)�run_tests_workerzPress any key to continue...Zwin32)�WindowsLoadTrackerz%Failed to create WindowsLoadTracker: re�r�)"r6rir�r�wait�inputr_rZPGOZpgo_extendedZPGO_EXTENDEDrr�r�rLrmr�r�Ztest.libregrtest.win_utilsr�r4�FileNotFoundErrorrK�closer�r�Zverbose2r"r�r�r�r)r�r%)r8rrrr�r��errorr9r9r:r��sL






 



zRegrtest._main)F)r)N)�__name__�
__module__�__qualname__�__doc__r;r>rQrZrbrwr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rUr�r9r9r9r:rs4*
)
I
;7	
 
	rcKst�jfd|i|��dS)zRun the Python suite.rN)rr�)rrrr9r9r:r��sr�)N).rVr�r�ror�r�r�rLr�r�r,r�Ztest.libregrtest.cmdlinerZtest.libregrtest.runtestrrrrrrr	r
rrr
rrrrrrZtest.libregrtest.setuprZtest.libregrtest.pgorZtest.libregrtest.utilsrrrrr�rr�rr�r9r9r9r:�<module>s2L/