Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.9/test/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.9/test/__pycache__/bisect_cmd.cpython-39.pyc

a

��g��@s�dZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
dd�Zdd�Zdd�Z
d	d
�Zdd�Zdd
d�Zdd�Zdd�Zedkr�e�dS)a�
Command line tool to bisect failing CPython tests.

Find the test_os test method which alters the environment:

    ./python -m test.bisect_cmd --fail-env-changed test_os

Find a reference leak in "test_os", write the list of failing tests into the
"bisect" file:

    ./python -m test.bisect_cmd -o bisect -R 3:3 test_os

Load an existing list of tests from a file using -i option:

    ./python -m test --list-cases -m FileTests test_os > tests
    ./python -m test.bisect_cmd -i tests test_os
�NcCsLt|d��.}|D]}t||d�q|��Wd�n1s>0YdS)N�w)�file)�open�print�flush)�filename�tests�fp�name�r�+/usr/local/lib/python3.9/test/bisect_cmd.py�write_testssr
cCs*|sdStdt|�|f�t||�|S)NzWriting %s tests into %s)r�lenr
)rrrrr�write_output&s

rcCs
d�|�S)N� )�join)�argsrrr�format_shell_args.srcCs(tjg}|�t���|�t���|S)N)�sys�
executable�extend�
subprocess�_args_from_interpreter_flags�"_optim_args_from_interpreter_flags)�cmdrrr�
python_cmd2srcCslt�}|�gd��|�|j�tj|tjdd�}|j}|r^t|�}td||f�t	�
|�|j��}|S)N)�-m�testz--list-casesT)�stdout�universal_newlinesz1Failed to list tests: %s failed with exit code %s)
rr�	test_argsr�run�PIPE�
returncoderrr�exitr�
splitlines)rr�proc�exitcoderrrr�
list_cases9s ��

r(c	Cs�t��}zht||�t�}|�ddd|g�|�|j�tdt|��t�	|�}|j
Wtj�
|�rnt�|�Sntj�
|�r�t�|�0dS)Nrrz--matchfilez+ %s)�tempfile�mktempr
rrr rrrr!r#�os�path�exists�unlink)rrZ
huntrleaks�tmprr&rrr�	run_testsJs 


��r0cCsft��}|jdddd�|jdddd�|jdd	td
dd�|jd
dtddd�|��\}}||_|S)Nz-iz--inputzUTest names produced by --list-tests written into a file. If not set, run --list-tests)�helpz-oz--outputzResult of the bisectionz-nz--max-tests�z:Maximum number of tests to stop the bisection (default: 1))�type�defaultr1z-Nz
--max-iter�dz5Maximum number of bisection iterations (default: 100))�argparse�ArgumentParser�add_argument�int�parse_known_argsr )�parserrr rrr�
parse_argsZs ����r<cCsRt�}d|jvsd|jvr(td�t�|jrht|j��}dd�|D�}Wd�qp1s\0Ynt|�}tdt|��tdt|j��td|j|j	f�t
|j|�}t�t�
�}d	}z�t|�|jk�r�||j	k�r�t|�}t|d
d	�}t�||�}td|t|�t|�f�t�t||�}td|t|�f�td
|�|�rltd�|}t
|j|�}ntd�t�|d	7}q�Wn(t�y�t�td�t�Yn0tdt|��|D]}	td|	��q�t�|�r�td|�t�t�
�|�}
t|�|jk�r6td|tj|
d�f�t�d	�ntd|tj|
d�f�dS)Nz-wz
--verbose2z;WARNING: -w/--verbose2 option should not be used to bisect!cSsg|]}|���qSr)�strip)�.0�linerrr�
<listcomp>v�zmain.<locals>.<listcomp>zStart bisection with %s testszTest arguments: %szxBisection will stop when getting %s or less tests (-n/--max-tests option), or after %s iterations (-N/--max-iter option)r2�z![+] Iteration %s: run %s tests/%szran %s tests/%sr$z*Tests failed: continuing with this subtestz;Tests succeeded: skipping this subtest, trying a new subsetzBisection interrupted!zTests (%s):z* %szOutput written into %sz+Bisection completed in %s iterations and %s)Zsecondsz+Bisection failed after %s iterations and %s)r<r r�inputrr(rrZ	max_testsZmax_iterr�output�time�	monotonic�max�random�sampler0�KeyboardInterrupt�math�ceil�datetimeZ	timedeltarr$)rr	rrDZ
start_timeZ	iterationZntestZsubtestsr'rZdtrrr�mainnsn.
��

��rN�__main__)N)�__doc__r6rMZos.pathr+rKrHrrr)rEr
rrrr(r0r<rN�__name__rrrr�<module>s&
D

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists