3 \ � @ s6 d Z ddlZddlZddlZddlZddlZddlZddljj Z ddlmZ G dd� dej�Z G dd� d�Zdd d �Zddd�Zed k�r2G dd� dej�Zej� Zejeje�� ej� Zeedd� ejD ���Zeej�Zeje�Z e!dej"� � e!ddd� x(e j#e j$� �D ]Z%e!e%j&� dd� �qW e!� dS )z=Test runner and result class for the regression test suite. � N)�datetimec s� e Zd Zdd d Zdd d Z� fdd�Zedd� �Z� fd d �Zd$dd �Z dd� Z edd� �Z� fdd�Z� fdd�Z � fdd�Z� fdd�Z� fdd�Z� fdd�Zdd� Zd d!� Zd"d#� Z� ZS )%�RegressionTestResult�=�F � �-c s\ t � j||dd� d| _tjd�| _| jjdtj� j d�� d | _ d | _g | _t |�| _d S )Nr )�stream�descriptions� verbosityTZ testsuite�start� )�super�__init__�buffer�ETZElement�_RegressionTestResult__suite�setr ZutcnowZ isoformat�_RegressionTestResult__e�!_RegressionTestResult__start_timeZ_RegressionTestResult__results�bool�_RegressionTestResult__verbose)�selfr r r )� __class__� �//usr/lib64/python3.6/test/support/testresult.pyr s zRegressionTestResult.__init__c C sL y |j }W n tk r" t|�S X y|� S tk rB t|�S X t|�S )N)�id�AttributeError�str� TypeError�repr)�cls�testZtest_idr r r Z__getId s zRegressionTestResult.__getIdc sV t � j|� tj| jd� | _}tj� | _| j rR| j j| j|�� d�� | j j � d S )NZtestcasez ... )r � startTestr � SubElementr r �time�perf_counterr r r �write�getDescription�flush)r r! �e)r r r r" + s zRegressionTestResult.startTestFc K sP | j }d | _ |d krd S |jd|jd| j|��� |jd|jdd�� |jd|jdd�� | jrz|jdtj� | j d�� |r�| jd k r�| jj� j � }|t j|d�_| j d k r�| j j� j � }|t j|d �_x�|j� D ]t\}}| s�| r�q�t j||�} t|d ��r>xD|j� D ],\} }| �r,| j| t|�� n t|�| _�qW q�t|�| _q�W d S )N�nameZstatus�run�resultZ completedr$ z0.6fz system-outz system-err�items)r r �pop�_RegressionTestResult__getIdr r$ r% Z_stdout_buffer�getvalue�rstripr r# �textZ_stderr_bufferr- �hasattrr )r r! Zcapture�argsr) �stdout�stderr�k�vZe2Zk2Zv2r r r �_add_result3 s4 z RegressionTestResult._add_resultc C s | j r| jj|� d�� d S )Nr )r r r&