aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/scripts/coverage.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/scripts/coverage.py')
-rw-r--r--mesonbuild/scripts/coverage.py29
1 files changed, 13 insertions, 16 deletions
diff --git a/mesonbuild/scripts/coverage.py b/mesonbuild/scripts/coverage.py
index 0e203f9..4bd41fe 100644
--- a/mesonbuild/scripts/coverage.py
+++ b/mesonbuild/scripts/coverage.py
@@ -22,35 +22,33 @@ def coverage(outputs, source_root, subproject_root, build_root, log_dir):
(gcovr_exe, gcovr_new_rootdir, lcov_exe, genhtml_exe) = environment.find_coverage_tools()
- # gcovr >= 3.1 interprets rootdir differently
+ # gcovr >= 4.2 requires a different syntax for out of source builds
if gcovr_new_rootdir:
- gcovr_rootdir = build_root
+ gcovr_base_cmd = [gcovr_exe, '-r', source_root, build_root]
else:
- gcovr_rootdir = source_root
+ gcovr_base_cmd = [gcovr_exe, '-r', build_root]
if not outputs or 'xml' in outputs:
if gcovr_exe:
- subprocess.check_call([gcovr_exe,
- '-x',
- '-r', gcovr_rootdir,
+ subprocess.check_call(gcovr_base_cmd +
+ ['-x',
'-e', subproject_root,
'-o', os.path.join(log_dir, 'coverage.xml'),
])
outfiles.append(('Xml', pathlib.Path(log_dir, 'coverage.xml')))
elif outputs:
- print('gcovr needed to generate Xml coverage report')
+ print('gcovr >= 3.3 needed to generate Xml coverage report')
exitcode = 1
if not outputs or 'text' in outputs:
if gcovr_exe:
- subprocess.check_call([gcovr_exe,
- '-r', gcovr_rootdir,
- '-e', subproject_root,
+ subprocess.check_call(gcovr_base_cmd +
+ ['-e', subproject_root,
'-o', os.path.join(log_dir, 'coverage.txt'),
])
outfiles.append(('Text', pathlib.Path(log_dir, 'coverage.txt')))
elif outputs:
- print('gcovr needed to generate text coverage report')
+ print('gcovr >= 3.3 needed to generate text coverage report')
exitcode = 1
if not outputs or 'html' in outputs:
@@ -101,21 +99,20 @@ def coverage(outputs, source_root, subproject_root, build_root, log_dir):
'--branch-coverage',
covinfo])
outfiles.append(('Html', pathlib.Path(htmloutdir, 'index.html')))
- elif gcovr_exe and gcovr_new_rootdir:
+ elif gcovr_exe:
htmloutdir = os.path.join(log_dir, 'coveragereport')
if not os.path.isdir(htmloutdir):
os.mkdir(htmloutdir)
- subprocess.check_call([gcovr_exe,
- '--html',
+ subprocess.check_call(gcovr_base_cmd +
+ ['--html',
'--html-details',
'--print-summary',
- '-r', build_root,
'-e', subproject_root,
'-o', os.path.join(htmloutdir, 'index.html'),
])
outfiles.append(('Html', pathlib.Path(htmloutdir, 'index.html')))
elif outputs:
- print('lcov/genhtml or gcovr >= 3.2 needed to generate Html coverage report')
+ print('lcov/genhtml or gcovr >= 3.3 needed to generate Html coverage report')
exitcode = 1
if not outputs and not outfiles: