§
    °³Ùgë  ã                   óà   — 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j        e	¦  «        Z
 G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z	 ddlmZ d	ZeZdS # e$ r d
ZeZY dS w xY w)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                   óF   — e Zd ZdZg d¢Zg d¢Zd„ Zd„ Zd„ Zd„ Z	d„ Z
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                 óä   — t                                d|¦  «         t          j        t          j        d         gt          |¦  «        z   t          j        t          j        t          j	        ¦  «        S )Nz _run_testr called with args = %rr   )
ÚloggerÚdebugÚcommandsÚrun_argvÚsysÚargvÚlistÚstdinÚstdoutÚstderr)ÚselfÚargss     úG/granary/edev/quantum/lib/python3.11/site-packages/pbr/testr_command.pyÚ
_run_testrzTestrReal._run_testrH   sQ   € Ý�ŠÐ7¸Ñ>Ô>Ð>ÝÔ ¥#¤(¨1¤+ µ°d±´Ñ!;Ý!$¤­C¬J½¼
ñDô Dð 	Dó    c                 óh   — d | _         d | _        d| _        d | _        d | _        d | _        d| _        d S )NÚ Úinfo)Ú
testr_argsr   Úomitr	   Úcoverage_package_namer   Ú	log_level©r   s    r   Úinitialize_optionszTestrReal.initialize_optionsM   s9   € ØˆŒØˆŒØˆŒ	ØˆŒØ%)ˆÔ"ØˆÔØˆŒˆˆr   c                 ó¬  — t          t          | j                             ¦   «         t          j        ¦  «        | _        t          j        | j        ¬¦  «         t                               d¦  «         | j        €g | _        n| j         	                    ¦   «         | _        | j
        rd| j
        z  | _
        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#   s    r   Úfinalize_optionszTestrReal.finalize_optionsV   s²   € Ý ÝØŒN× Ò Ñ"Ô"ÝŒLñô ˆŒõ 	Ô $¤.Ð1Ñ1Ô1Ð1Ý�ŠÐ.Ñ/Ô/Ð/ØŒ?Ð"Ø ˆDŒOˆOà"œo×3Ò3Ñ5Ô5ˆDŒOØŒ9ð 	0Ø# d¤iÑ/ˆDŒIÝ�ŠÐ;¸T¼]ÑKÔKÐKÐKÐKr   c                 óB  — t                                d¦  «         t          j        dt          ¦  «         t
          j                             d¦  «        s|                      d¦  «         | j	        r|  
                    ¦   «          | j        s | j        ddg| j        ¢R Ž }n | j        dg| j        ¢R Ž }|r"t          j                             d|z  ¦  «        ‚| j        r$t#          d¦  «         |                      d	¦  «         | j	        r|                      ¦   «          d
S 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Úrunz
--parallelztestr failed (%d)zSlowest Testsr	   N)r   r   ÚwarningsÚwarnÚDeprecationWarningÚosÚpathÚisdirr   r   Ú_coverage_beforer   r   Ú	distutilsÚerrorsÚDistutilsErrorr	   ÚprintÚ_coverage_after)r   Ú	testr_rets     r   r1   zTestrReal.rune   s?  € å�Š�\Ñ"Ô"Ð"åŒð Kå(ñ	*ô 	*ð 	*õ Œw�}Š}Ð.Ñ/Ô/ð 	$Ø�OŠO˜FÑ#Ô#Ð#àŒ=ð 	$Ø×!Ò!Ñ#Ô#Ð#ØÔð 	AØ'˜œ¨¨|ÐN¸d¼oÐNÐNÐNˆIˆIà'˜œ¨Ð@°´Ð@Ð@Ð@ˆIØð 	1ÝÔ"×1Ò1Ø# iÑ/ñ1ô 1ð 1àŒ<ð 	'Ý�/Ñ"Ô"Ð"Ø�OŠO˜IÑ&Ô&Ð&ØŒ=ð 	#Ø× Ò Ñ"Ô"Ð"Ð"Ð"ð	#ð 	#r   c                 óJ  — t                                d¦  «         | j                             ¦   «         }|                     d¦  «        r
|dd …         }| j        r| j        }d|z  }d|z  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!   r5   Úenviron)r   ÚpackageÚoptionss      r   r8   zTestrReal._coverage_before   sž   € Ý�ŠÐ.Ñ/Ô/Ð/ØÔ#×,Ò,Ñ.Ô.ˆØ×Ò˜iÑ(Ô(ð 	"Ø˜a˜b˜b”kˆGð Ô%ð 	1ØÔ0ˆGØ/°'Ñ9ˆØ 1°GÑ ;�Œ
�8ÑÝ�ŠÐ0µ"´*¸XÔ2FÑGÔGÐGÐGÐGr   c                 óÒ   — t                                d¦  «         t          j        d¦  «         t          j        d| j        z  ¦  «         t          j        d| j        z  ¦  «         d S )Nz_coverage_after calledzcoverage combinezcoverage html -d ./cover %sz'coverage xml -o ./cover/coverage.xml %s)r   r   r5   Úsystemr    r#   s    r   r=   zTestrReal._coverage_afterŒ   s\   € Ý�ŠÐ-Ñ.Ô.Ð.Ý
Œ	Ð$Ñ%Ô%Ð%Ý
Œ	Ð/°$´)Ñ;Ñ<Ô<Ð<Ý
Œ	Ð;¸d¼iÑGÑHÔHÐHÐHÐHr   N)Ú__name__Ú
__module__Ú__qualname__ÚdescriptionÚuser_optionsÚboolean_optionsr   r$   r.   r1   r8   r=   © r   r   r   r   5   sŸ   € € € € € à:€Kðð ð €Lð =Ð<Ð<€OðDð Dð Dð
 ð  ð  ðLð Lð Lð#ð #ð #ð4Hð Hð HðIð Ið Ið Ið Ir   r   c                   ó(   — e Zd ZdZg Zd„ Zd„ Zd„ ZdS )Ú	TestrFakezRun unit tests using testrc                 ó   — d S ©NrP   r#   s    r   r$   zTestrFake.initialize_options—   ó   € Øˆr   c                 ó   — d S rT   rP   r#   s    r   r.   zTestrFake.finalize_optionsš   rU   r   c                 ó$   — t          d¦  «         d S )Nz7Install testrepository to run 'testr' command properly.)r<   r#   s    r   r1   zTestrFake.run�   s   € ÝÐGÑHÔHÐHÐHÐHr   N)rJ   rK   rL   rM   rN   r$   r.   r1   rP   r   r   rR   rR   “   sP   € € € € € Ø.€KØ€Lðð ð ðð ð ðIð Ið Ið Ið Ir   rR   )r   TF)Ú__doc__r9   r   Údistutils.errorsr(   r5   r   r2   Ú	getLoggerrJ   r   ÚCommandr   rR   Útestrepositoryr   Ú
have_testrÚTestrÚImportErrorrP   r   r   ú<module>r`      s&  ðð:ð ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø €€€à	ˆÔ	˜8Ñ	$Ô	$€ð[Ið [Ið [Ið [Ið [I�”ñ [Iô [Ið [Ið|Ið Ið Ið Ið I�”ñ Iô Ið IðØ'Ð'Ð'Ð'Ð'Ð'Ø€JØ€E€E€EøØð ð ð Ø€JØ€E€E€E€Eðøøøs   Á
A  Á 	A-Á,A-