U �VF � @ s� d Z ddlmZ ddlZddlZddlZddlZe�e�Z G dd� dej �ZG dd� dej �Zzddl mZ d ZeZW n ek r� d ZeZY nX dS )a� setuptools/distutils commands to run testr via setup.py Currently provides 'testr' which runs tests using testr. You can pass --coverage which will also export PYTHON='coverage run --source <your package>' and automatically combine the coverage from each testr backend test runner after the run completes. To use, just use setuptools/distribute and depend on testr, and it should be picked up automatically (as the commands are exported in the testrepository package metadata. � )�cmdNc @ s\ e Zd ZdZdddddddgZd d dgZdd � Zdd� Zdd� Zdd� Z dd� Z dd� ZdS )� TestrReal�Run unit tests using testr)�coverageNzGReplace PYTHON with coverage and merge coverage from each testr worker.)ztestr-args=�tzRun 'testr' with these args)zomit=�oz(Files to omit from coverage calculations)zcoverage-package-name=Nz"Use this name for coverage package)�slowestNz-Show slowest test times after tests complete.)zno-parallelNzRun testr serially)z log-level=�lzLog level (default: info)r r �no_parallelc G s2 t �d|� t�tjd gt|� tjtjtj �S )Nz _run_testr called with args = %rr ) �logger�debug�commandsZrun_argv�sys�argv�list�stdin�stdout�stderr)�self�args� r �/testr_command.py� _run_testrC s �zTestrReal._run_testrc C s. d | _ d | _d| _d | _d | _d | _d| _d S )N� �info)� testr_argsr �omitr �coverage_package_namer � log_level�r r r r �initialize_optionsH s zTestrReal.initialize_optionsc C sp t t| j�� tj�| _tj| jd� t�d� | jd kr@g | _n| j� � | _| j r^d| j | _ t�d| j� d S )N)�levelzfinalize_options calledz --omit=%sz$finalize_options: self.__dict__ = %r)�getattr�loggingr �upper�INFOZbasicConfigr r r �splitr �__dict__r r r r �finalize_optionsQ s � zTestrReal.finalize_optionsc C s� t �d� tj�d�s | �d� | jr.| �� | jsF| jd | j �� }n| jd| j �� }|rjt j�d| ��| j r�td� | �d� | jr�| �� d S )z"Set up testr repo, then run testr.z run calledz.testrepositoryZinit�run� --parallelztestr failed (%d)z Slowest Testsr N)r) r* )r) )r r �os�path�isdirr r �_coverage_beforer r � distutils�errorsZDistutilsErrorr �print�_coverage_after)r Z testr_retr r r r) ` s"