U
    ÇZjë  ã                   @   s    d Z ddlmZ ddlZddlZddlZddlZddlZe e	¡Z
G dd„ dejƒZG dd„ dejƒZzddlmZ d	ZeZW n ek
rš   d
ZeZY nX dS )aÙ  setuptools/distutils command to run testr via setup.py

PBR will hook in the Testr class to provide "setup.py test" when
.testr.conf is present in the repository (see pbr/hooks/commands.py).

If we are activated but testrepository is not installed, we provide a
sensible error.

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.

é    )ÚcmdNc                   @   s\   e Zd ZdZdddddddgZd	d
dgZdd„ Zdd„ Zdd„ Zdd„ Z	dd„ Z
dd„ ZdS )Ú	TestrRealz&DEPRECATED: Run unit tests using testr)ÚcoverageNzGReplace PYTHON with coverage and merge coverage from each testr worker.)ztestr-args=ÚtzRun 'testr' with these args)zomit=Úoz(Files to omit from coverage calculations)zcoverage-package-name=NzLUse this name to select packages for coverage (one or more, comma-separated))ÚslowestNz-Show slowest test times after tests complete.)zno-parallelNzRun testr serially)z
log-level=ÚlzLog level (default: info)r   r   Úno_parallelc                 G   s2   t  d|¡ t tjd gt|ƒ tjtjtj	¡S )Nz _run_testr called with args = %rr   )
ÚloggerÚdebugÚcommandsZrun_argvÚsysÚargvÚlistÚstdinÚstdoutÚstderr)ÚselfÚargs© r   úT/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/pbr/testr_command.pyÚ
_run_testrH   s      ÿzTestrReal._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_optionsM   s    zTestrReal.initialize_optionsc                 C   sp   t t| j ¡ tjƒ| _tj| jd� t d¡ | jd kr@g | _n| j 	¡ | _| j
r^d| j
 | _
t d| j¡ d S )N)Úlevelzfinalize_options calledz	--omit=%sz$finalize_options: self.__dict__ = %r)ÚgetattrÚloggingr   ÚupperÚINFOÚbasicConfigr
   r   r   Úsplitr   Ú__dict__r   r   r   r   Úfinalize_optionsV   s    ý

zTestrReal.finalize_optionsc                 C   s    t  d¡ t dt¡ tj d¡s,|  d¡ | j	r:|  
¡  | jsR| jd| jžŽ }n| jd| jžŽ }|rvtj d| ¡‚| jrŽtdƒ |  d	¡ | j	rœ|  ¡  d
S )z"Set up testr repo, then run testr.z
run calledzctestr integration in pbr is deprecated. Please use the 'testr' setup command or call testr directlyz.testrepositoryÚinitÚrunú
--parallelztestr failed (%d)zSlowest Testsr   N)r*   r+   )r*   )r
   r   ÚwarningsÚwarnÚDeprecationWarningÚosÚpathÚisdirr   r   Ú_coverage_beforer	   r   Ú	distutilsÚerrorsÚDistutilsErrorr   ÚprintÚ_coverage_after)r   Z	testr_retr   r   r   r*   e   s(    
þ
ÿ
zTestrReal.runc                 C   sb   t  d¡ | j ¡ }| d¡r*|dd … }| jr6| j}d| }d| tjd< t  dtjd ¡ d S )Nz_coverage_before calledzpython-é   z--source %s --parallel-modezcoverage run %sÚPYTHONzos.environ['PYTHON'] = %r)r
   r   ÚdistributionÚget_nameÚ
startswithr   r/   Úenviron)r   ÚpackageÚoptionsr   r   r   r2      s    


zTestrReal._coverage_beforec                 C   s8   t  d¡ t d¡ t d| j ¡ t d| j ¡ d S )Nz_coverage_after calledzcoverage combinezcoverage html -d ./cover %sz'coverage xml -o ./cover/coverage.xml %s)r
   r   r/   Úsystemr   r   r   r   r   r7   Œ   s    

zTestrReal._coverage_afterN)Ú__name__Ú
__module__Ú__qualname__ÚdescriptionÚuser_optionsÚboolean_optionsr   r   r(   r*   r2   r7   r   r   r   r   r   5   s    ö
	r   c                   @   s,   e Zd ZdZg Zdd„ Zdd„ Zdd„ ZdS )	Ú	TestrFakezRun unit tests using testrc                 C   s   d S ©Nr   r   r   r   r   r   —   s    zTestrFake.initialize_optionsc                 C   s   d S rH   r   r   r   r   r   r(   š   s    zTestrFake.finalize_optionsc                 C   s   t dƒ d S )Nz7Install testrepository to run 'testr' command properly.)r6   r   r   r   r   r*   �   s    zTestrFake.runN)rA   rB   rC   rD   rE   r   r(   r*   r   r   r   r   rG   “   s
   rG   )r   TF)Ú__doc__r3   r   Údistutils.errorsr"   r/   r   r,   Ú	getLoggerrA   r
   ÚCommandr   rG   Ztestrepositoryr   Z
have_testrZTestrÚImportErrorr   r   r   r   Ú<module>   s    
^