
    e)                        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              yy)
    )annotations)environmentmesonlibNc                   g }d}t        j                         \  }}	}
}}}t        j                  j	                  |d      }t        j                  j                  |      rd|g}ng }|
rt        j                  |d      rddg}nddg}dt        j                  |      g}|r\t        j                  |	d	      rF|d
||g}t        j                  j                  t        j                  j	                  |d            rg }n|d
|g}|rd|dz   g}ng }| rd| v r|r}t        j                  |	d      rgt        j                  ||z   ddt        j                  j	                  |d      gz   |z          |j                  dt        j                  |d      f       n| rt        d       d}| rd| v r|r}t        j                  |	d	      rgt        j                  ||z   ddt        j                  j	                  |d      gz   |z          |j                  dt        j                  |d      f       n| rt        d       d}| rd| v r|r|t        j                  |	d      rft        j                  ||z   dt        j                  j	                  |d      gz   |z          |j                  dt        j                  |d      f       n| rt        d       d}| rd| v r|
r|rt        j                  j	                  |d       }t        j                  j	                  |d!      }|d"z   }|d#z   }|d$z   }g }t        j                  j                  |      r/|j                  t        j                  j	                  |d%             |rt        j                          rMt        j                  j	                  |d&      }t#        |d'd()      5 }|j%                  d*| d+       d d d        nt        j                  j	                  |d,      }t#        |d'd()      5 }|j%                  d-| d.       d d d        t        j&                  |t        j(                  |      j*                  t(        j,                  z         d/|g}ng }t        j                  |
d0|d1d2d3|g|z   |z          t        j                  |
d0|d1d3|d4g||z   |z          t        j                  |
d5|d5|g|d||z          t        j                  |
d6|t        j                  j	                  |d%      g|d3||z          t        j                  |
d7|g||d8d9d3||z          t        j                  |d:|d:|d;|d<d=d>d?d@|g       |j                  dAt        j                  |dB      f       n|rt        j                  |	d      rt        j                  j	                  |d       }t        j                  j/                  |      st        j0                  |       t        j                  ||z   dCdDdEdt        j                  j	                  |dB      gz   |z          |j                  dAt        j                  |dB      f       n| rt        dF       d}| s|st        dG       d}|r2t        dH       |D ]"  \  }}t        |dIz   |j3                                $ |S # 1 sw Y   VxY w# 1 sw Y   xY w)JNr   z.lcovrcz--config-filez>=2.0z--rczbranch_coverage=1zlcov_branch_coverage=1z-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.raw*z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-az	--extractz--removez--ignore-errorsunusedz--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existsr   version_comparereescape
subprocess
check_callappendpathlibPathprint
is_windowsopenwritechmodstatst_modeS_IEXECisdirmkdiras_uri) outputssource_rootsubproject_root
build_rootlog_diruse_llvm_covoutfilesexitcode	gcovr_exegcovr_versionlcov_exelcov_versiongenhtml_exellvm_cov_exelcovrclcov_configlcov_exe_rc_branch_coveragegcovr_configgcovr_base_cmdgcov_exe_args
htmloutdircovinfoinitial_tracefilerun_tracefileraw_tracefilelcov_subpoject_excludellvm_cov_shim_pathllvm_cov_batllvm_cov_shgcov_tool_argsfiletyper   s                                    =/usr/lib/python3/dist-packages/mesonbuild/scripts/coverage.pycoveragerP      s   HHT_TsTsTuQYx{L WW\\+y1F	ww~~f&/H,,\7C'-/B&C#'-/G&H#"))O45L X--mWE#T;
C77>>"'',,{K@AL#T:6,lW.DEew&11-I!!.<"?#'#'g~)N#%#% (5#5 6 OOUGLL.$IJKGHHkW,11-I!!.<"?#0#'g)O#%#% (5#5 6 OO[',,w*PQRGHHf'11-I!!.<"?#'g~)N"O#P"/#0 1 OOVW\\'>%JKLHIHf'g/?@Jggll7O<G '* 4#f,M#f,M%'"ww~~o.&--bggll?C.PQ&&()+g~)N&0#H IL$**R~Y+GHI I *,g})M&0#H _K#)),El^S\*]^_HH/9K1L1T1TW[WcWc1cd"/1C!D!#!!8#0*#.#.#2#4#6 #.#. #1#1 2 !!8#0*#.#2M#2	#A
 %@#A #.#. #1#1 2 !!8#'):#'#8 %@#8 $(	#8 *7	#8 ;F	#F G !!8#.#%77<<S#A#= %@#= $3	#= 5<	#= @K	#K L !!8#-w#=$:#= %@#= $5	#= 7?	#=
 $3#=
 5<#=
 @K#K L !!;#-z#-{#7#,o#-#3#6#*#, - OOVW\\*l%KLM833M7Kg/?@J77==,$!!.<"?#+#3#4#'j,)O#%#%
 (5#5 6 OOVW\\*l%KLMXYH8KLb	 ( 	PXt(??O	P O_I I_ _s   8Z3[ 3Z= [
c                   t         j                  j                  d      st        d       yt	        j
                  d      }|j                  dddd	d
       |j                  ddddd       |j                  ddddd       |j                  ddddd       |j                  ddd       |j                  d       |j                  d       |j                  d       |j                  d       |j                  |       }t        |j                  |j                  |j                  |j                  |j                  |j                        S )Nzbuild.ninjaz5Coverage currently only works with the Ninja backend.r	   zGenerate coverage reports)descriptionz--textr0   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)rU   rW   r1   r2   r3   r4   )r   r   isfiler%   argparseArgumentParseradd_argument
parse_argsrP   r0   r1   r2   r3   r4   r5   )argsparseroptionss      rO   runra      sN   77>>-(EF$$1LMF
y$+A  C
i#*?  A
In)0O  Q
y$+A  C
(+  -
&
)*
%
	"%GGOOW%8%8++W-?-?OOW%9%9; ;    __main__r	   )r0   T.List[str]r1   strr2   re   r3   re   r4   re   r5   boolreturnint)r^   rd   rg   rh   )
__future__r   
mesonbuildr   r   rZ   r   sysr   r    r#   r*   typingTrP   ra   __name__exitargv rb   rO   <module>rr      sT    # , 7 7 7 7 cJ;0 zCHHS!" rb   