�
�(�g�f � �X � d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZm Z m
Z
ddlmZm
Z
ddlmZmZmZ ddlmZ ddlmZ ddlmZ dd lmZmZ dd
lmZmZ ddlmZmZ ddl m!Z!m"Z" dd
l#m$Z$ ddl%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 G d� d� Z:dd�Z;y)� N)� os_helper�
MS_WINDOWS�flush_std_streams� )�_parse_args� Namespace)� findtests�split_test_packages�
list_cases)�Logger)�setup_pgo_tests)�State)�TestResults�EXITCODE_INTERRUPTED)�RunTests�HuntRefleak)�
setup_process�setup_test_dir)�run_single_test�PROGRESS_MIN_TIME)�setup_tsan_tests)�StrPath�StrJSON�TestName�TestList� TestTuple�
TestFilter�strip_py_suffix�count�format_duration� printlist�get_temp_dir�get_work_dir�exit_timeout�display_header�cleanup_temp_dir�
print_warning�is_cross_compiled�get_host_runner�process_cpu_count�EXIT_TIMEOUTc �\ � e Zd ZdZd%dedefd�Zd&d�Zd'dedz de e
edz f fd �Zede
fd
�� Z
defd�Zdefd
�Zdedededefd�Zdeddfd�Zd� Zdedefd�Zd� Zd� Zdededdfd�Zd� Zd� Zde
fd�Zde
dedz defd�Zde
dedz defd�Zd� Z d � Z!d!� Z"d"� Z#d#� Z$d'dedz fd$�Z%y)(�Regrtestaa Execute 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, 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.
�ns�_add_python_optsc � � t |j � | _ |j | _ |j | _ |j | _ |j
| _ t
� | _ d | _ t | j | j | j � | _
|j | _ |j | _ |j | _ |j" |