§
    ƒnóc9'  ã                  óÎ   — d dl mZ d dlmZmZ d dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZdd„Zdd„Zedk    r( ej         eej        dd…         ¦  «        ¦  «         dS dS )é    )Úannotations)ÚenvironmentÚmesonlibNÚoutputsúT.List[str]Úsource_rootÚstrÚsubproject_rootÚ
build_rootÚlog_dirÚuse_llvm_covÚboolÚreturnÚintc                ó  — g }d}t          j        ¦   «         \  }}	}
}}t          j                             |d¦  «        }t          j                             |¦  «        rd|g}ng }dt          j        |¦  «        g}|r[t          j	        |	d¦  «        rF|d||g}t          j                             t          j                             |d¦  «        ¦  «        rg }n|d|g}|rd|d	z   g}ng }| rd
| v r“|r~t          j	        |	d¦  «        rit          j        ||z   ddt          j                             |d¦  «        gz   |z   ¦  «         |                     dt          j        |d¦  «        f¦  «         n| rt          d¦  «         d}| rd| v r“|r~t          j	        |	d¦  «        rit          j        ||z   ddt          j                             |d¦  «        gz   |z   ¦  «         |                     dt          j        |d¦  «        f¦  «         n| rt          d¦  «         d}| rd| v r’|r}t          j	        |	d¦  «        rht          j        ||z   dt          j                             |d¦  «        gz   |z   ¦  «         |                     dt          j        |d¦  «        f¦  «         n| rt          d¦  «         d}| rd| v �r�|
�r™|�r–t          j                             |d¦  «        }t          j                             |d¦  «        }|dz   }|dz   }|d z   }|�rt          j        ¦   «         rdt          j                             |d!¦  «        }t#          |d"d#¬$¦  «        5 }|                     d%|› d&�¦  «         d d d ¦  «         n# 1 swxY w Y   nœt          j                             |d'¦  «        }t#          |d"d#¬$¦  «        5 }|                     d(|› d)�¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        |t          j        |¦  «        j        t(          j        z  ¦  «         d*|g}ng }t          j        |
d+|d,d-d.|g|z   |z   ¦  «         t          j        |
d+|d,d.|d/d0d1g	|z   |z   ¦  «         t          j        |
d2|d2|d0d1d|g	|z   ¦  «         t          j        |
d3|t          j                             |d4¦  «        d0d1d.|g|z   ¦  «         t          j        |
d5|t          j                             |d4¦  «        d0d1d.|g|z   ¦  «         t          j        |d6|d6|d7|d8d9d:d;d<|g¦  «         |                     d=t          j        |d>¦  «        f¦  «         nå|rÐt          j	        |	d¦  «        r»t          j                             |d¦  «        }t          j                             |¦  «        st          j        |¦  «         t          j        ||z   d?d@dAdt          j                             |d>¦  «        gz   ¦  «         |                     d=t          j        |d>¦  «        f¦  «         n| rt          dB¦  «         d}| s|st          dC¦  «         d}|r<t          dD¦  «         |D ]*\  }}t          |dEz   |                     ¦   «         ¦  «         Œ+|S )FNr   z.lcovrcz--config-filez-ez>=4.2z-rz	gcovr.cfgz--gcov-executablez gcovÚxmlz>=3.3z-xz-ozcoverage.xmlÚXmlz3gcovr >= 3.3 needed to generate Xml coverage reporté   Ú	sonarqubeú--sonarqubezsonarqube.xmlÚ	Sonarqubez3gcovr >= 4.2 needed to generate Xml coverage reportÚtextzcoverage.txtÚTextz4gcovr >= 3.3 needed to generate text coverage reportÚhtmlÚcoveragereportzcoverage.infoz.initialz.runz.rawzllvm-cov.batÚwzutf-8)Úencodingz@"z	" gcov %*zllvm-cov.shz#!/usr/bin/env sh
exec "z	" gcov $@z--gcov-toolz--directoryz	--capturez	--initialz--output-filez--no-checksumz--rczlcov_branch_coverage=1z-az	--extractÚ*z--removez--prefixz--output-directoryz--titlezCode coveragez--legendz--show-detailsz--branch-coverageÚHtmlz
index.htmlú--htmlz--html-detailsz--print-summaryzDlcov/genhtml or gcovr >= 3.3 needed to generate Html coverage reportz;Need gcovr or lcov/genhtml to generate any coverage reportsÚ z  coverage report can be found at)r   Úfind_coverage_toolsÚosÚpathÚjoinÚexistsÚreÚescaper   Úversion_compareÚ
subprocessÚ
check_callÚappendÚpathlibÚPathÚprintÚ
is_windowsÚopenÚwriteÚchmodÚstatÚst_modeÚS_IEXECÚisdirÚmkdirÚas_uri)r   r   r
   r   r   r   ÚoutfilesÚexitcodeÚ	gcovr_exeÚgcovr_versionÚlcov_exeÚgenhtml_exeÚllvm_cov_exeÚlcovrcÚlcov_configÚgcovr_configÚgcovr_base_cmdÚgcov_exe_argsÚ
htmloutdirÚcovinfoÚinitial_tracefileÚrun_tracefileÚraw_tracefileÚllvm_cov_shim_pathÚllvm_cov_batÚllvm_cov_shÚgcov_tool_argsÚfiletyper$   s                                ú=/usr/lib/python3/dist-packages/mesonbuild/scripts/coverage.pyÚcoveragerQ      sl  € Ø€HØ€HåFQÔFeÑFgÔFgÑC€Y�˜x¨°lõ ŒW�\Š\˜+ yÑ1Ô1€FÝ	„w‡~‚~�fÑÔð Ø&¨Ð/ˆˆàˆà�"œ) OÑ4Ô4Ð5€Lð ð 7•XÔ-¨m¸WÑEÔEð 7Ø# T¨;¸
ÐCˆåŒ7�>Š>�"œ'Ÿ,š, {°KÑ@Ô@ÑAÔAð 	ØˆLøà# T¨:Ð6ˆàð Ø,¨l¸WÑ.DÐEˆˆàˆàð 	�e˜wÐ&Ð&Øð 	�Ô1°-ÀÑIÔIð 	ÝÔ! .°<Ñ"?Ø#'Ø#'­¬¯ª°g¸~Ñ)NÔ)Nð#%ñ#%ð (5ñ#5ñ 6ô 6ð 6ð �OŠO˜U¥G¤L°¸.Ñ$IÔ$IÐJÑKÔKÐKÐKØð 	ÝÐGÑHÔHÐHØˆHàð 	�k WÐ,Ð,Øð 	�Ô1°-ÀÑIÔIð 	ÝÔ! .°<Ñ"?Ø#0Ø#'­¬¯ª°g¸Ñ)OÔ)Oð#%ñ#%ð (5ñ#5ñ 6ô 6ð 6ð �OŠO˜[­'¬,°wÀÑ*PÔ*PÐQÑRÔRÐRÐRØð 	ÝÐGÑHÔHÐHØˆHàð �f Ð'Ð'Øð 	�Ô1°-ÀÑIÔIð 	ÝÔ! .°<Ñ"?Ø#'­¬¯ª°g¸~Ñ)NÔ)NÐ"Oñ#Pà"/ñ#0ñ 1ô 1ð 1ð �OŠO˜V¥W¤\°'¸>Ñ%JÔ%JÐKÑLÔLÐLÐLØð 	ÝÐHÑIÔIÐIØˆHàð N�f Ð'Ñ'Øñ M	˜ñ M	ÝœŸš gÐ/?Ñ@Ô@ˆJÝ”g—l’l 7¨OÑ<Ô<ˆGØ '¨*Ñ 4ÐØ# fÑ,ˆMØ# fÑ,ˆMØñ $åÔ&Ñ(Ô(ð eÝ)+¬¯ª°g¸~Ñ)NÔ)NÐ&ÝÐ0°#ÀÐHÑHÔHð IÈLØ$×*Ò*Ð+G°Ð+GÐ+GÐ+GÑHÔHÐHðIð Ið Iñ Iô Ið Ið Ið Ið Ið Ið Iøøøð Ið Ið Ið Iøõ *,¬¯ª°g¸}Ñ)MÔ)MÐ&ÝÐ0°#ÀÐHÑHÔHð _ÈKØ#×)Ò)Ð*]ÀlÐ*]Ð*]Ð*]Ñ^Ô^Ð^ð_ð _ð _ñ _ô _ð _ð _ð _ð _ð _ð _øøøð _ð _ð _ð _å”HÐ/µ´Ð9KÑ1LÔ1LÔ1TÕW[ÔWcÑ1cÑdÔdÐdØ"/Ð1CÐ!D��à!#�ÝÔ! 8Ø#0°*Ø#.Ø#.Ø#2Ø#4ð#6ð #.ñ#.ð #1ñ#1ñ 2ô 2ð 2õ Ô! 8Ø#0°*Ø#.Ø#2°MØ#2Ø#)Ð+Cð#Eð #.ñ#.ð #1ñ#1ñ 2ô 2ð 2õ Ô! 8Ø#'Ð):Ø#'¨Ø#)Ð+CØ#'¨ð	#8ð ;Fñ	#Fñ Gô Gð Gõ Ô! 8Ø#.°Ý#%¤7§<¢<°¸SÑ#AÔ#AØ#)Ð+CØ#2°Gð	#=ð @Kñ	#Kñ Lô Lð Lõ Ô! 8Ø#-¨wÝ#%¤7§<¢<°ÀÑ#EÔ#EØ#)Ð+CØ#2°Gð	#=ð @Kñ	#Kñ Lô Lð Lõ
 Ô! ;Ø#-¨zØ#-¨{Ø#7¸Ø#,¨oØ#-Ø#3Ø#6Ø#*ð#,ñ -ô -ð -ð �OŠO˜V¥W¤\°*¸lÑ%KÔ%KÐLÑMÔMÐMÐMØð 	�8Ô3°MÀ7ÑKÔKð 	ÝœŸš gÐ/?Ñ@Ô@ˆJÝ”7—=’= Ñ,Ô,ð %Ý”˜Ñ$Ô$Ð$ÝÔ! .°<Ñ"?Ø#+Ø#3Ø#4Ø#'­¬¯ª°jÀ,Ñ)OÔ)Oð#%ñ#%ñ &ô &ð &ð �OŠO˜V¥W¤\°*¸lÑ%KÔ%KÐLÑMÔMÐMÐMØð 	ÝÐXÑYÔYÐYØˆHàð ˜8ð ÝÐKÑLÔLÐLØˆàð PÝˆb‰	Œ	ˆ	Ø (ð 	Pð 	PÑˆX�tÝ�(Ð?Ñ?ÀÇÂÁÄÑOÔOÐOÐOà€Os$   ÍM<Í<N ÎN Î:O Ï O$Ï'O$Úargsc                óÂ  — t           j                             d¦  «        st          d¦  «         dS t	          j        d¬¦  «        }|                     dddd	d
¬¦  «         |                     ddddd¬¦  «         |                     ddddd¬¦  «         |                     ddddd¬¦  «         |                     ddd¬¦  «         |                     d¦  «         |                     d¦  «         |                     d¦  «         |                     d¦  «         |                     | ¦  «        }t          |j	        |j
        |j        |j        |j        |j        ¦  «        S )Nzbuild.ninjaz5Coverage currently only works with the Ninja backend.r   zGenerate coverage reports)Údescriptionz--textr   Úappend_constr   zgenerate Text report)ÚdestÚactionÚconstÚhelpz--xmlr   zgenerate Xml reportr   r   zgenerate Sonarqube Xml reportr    r   zgenerate Html reportz--use_llvm_covÚ
store_truezuse llvm-cov)rW   rY   r   r
   r   r   )r#   r$   Úisfiler/   ÚargparseÚArgumentParserÚadd_argumentÚ
parse_argsrQ   r   r   r
   r   r   r   )rR   ÚparserÚoptionss      rP   Úrunrb   ±   s©  € ÝŒ7�>Š>˜-Ñ(Ô(ð ÝÐEÑFÔFÐFØˆqÝÔ$Ð1LÐMÑMÔM€FØ
×Ò˜ y¸Ø$Ð+Að ñ Cô Cð Cà
×Ò˜ i¸Ø#Ð*?ð ñ Aô Að Aà
×Ò˜¨I¸nØ)Ð0Oð ñ Qô Qð Qà
×Ò˜ y¸Ø$Ð+Að ñ Cô Cð Cà
×ÒÐ(°Ø+ð ñ -ô -ð -à
×Ò˜Ñ&Ô&Ð&Ø
×ÒÐ)Ñ*Ô*Ð*Ø
×Ò˜Ñ%Ô%Ð%Ø
×Ò˜	Ñ"Ô"Ð"Ø×Ò Ñ%Ô%€GÝ�G”O WÔ%8ØÔ+¨WÔ-?Ø”O WÔ%9ñ;ô ;ð ;ó    Ú__main__r   )r   r   r   r	   r
   r	   r   r	   r   r	   r   r   r   r   )rR   r   r   r   )Ú
__future__r   Ú
mesonbuildr   r   r\   r'   Úsysr#   r*   r-   r4   ÚtypingÚTrQ   rb   Ú__name__ÚexitÚargv© rc   rP   ú<module>rn      sÿ   ðð #Ð "Ð "Ð "Ð "Ð "à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø Ð Ð Ð ðZð Zð Zð Zðx;ð ;ð ;ð ;ð0 ˆzÒÐØ€C„HˆSˆS�”˜!˜"˜"”ÑÔÑÔÐÐÐð Ðrc   