aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2019-04-24 23:18:18 +0300
committerGitHub <noreply@github.com>2019-04-24 23:18:18 +0300
commit25931abb262d2e19d43c8b557df02f1e29857440 (patch)
tree37864769adec5c944ed2cbf61bd9c575044cb317 /mesonbuild
parent8018ef6ac6dead04f9a9f37bed3b47237b90ebad (diff)
parentccaa61ec52b97e1cbd8cd0f8986f005ae648a3ba (diff)
downloadmeson-25931abb262d2e19d43c8b557df02f1e29857440.zip
meson-25931abb262d2e19d43c8b557df02f1e29857440.tar.gz
meson-25931abb262d2e19d43c8b557df02f1e29857440.tar.bz2
Merge pull request #5319 from kjerstadius/gcovr-4.2
Gcovr 4.2
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/environment.py6
-rw-r--r--mesonbuild/scripts/coverage.py29
2 files changed, 16 insertions, 19 deletions
diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py
index c296573..3d5d3ab 100644
--- a/mesonbuild/environment.py
+++ b/mesonbuild/environment.py
@@ -83,7 +83,7 @@ from .compilers import (
build_filename = 'meson.build'
-def detect_gcovr(version='3.1', log=False):
+def detect_gcovr(min_version='3.3', new_rootdir_version='4.2', log=False):
gcovr_exe = 'gcovr'
try:
p, found = Popen_safe([gcovr_exe, '--version'])[0:2]
@@ -91,10 +91,10 @@ def detect_gcovr(version='3.1', log=False):
# Doesn't exist in PATH or isn't executable
return None, None
found = search_version(found)
- if p.returncode == 0:
+ if p.returncode == 0 and mesonlib.version_compare(found, '>=' + min_version):
if log:
mlog.log('Found gcovr-{} at {}'.format(found, shlex.quote(shutil.which(gcovr_exe))))
- return gcovr_exe, mesonlib.version_compare(found, '>=' + version)
+ return gcovr_exe, mesonlib.version_compare(found, '>=' + new_rootdir_version)
return None, None
def find_coverage_tools():
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: