diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2018-03-13 21:12:16 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-13 21:12:16 +0200 |
commit | ae0e469b0692862dae10ceb02799feb3f117ce26 (patch) | |
tree | d7de1e59b84965affc30ff8a7c22b44d8f23ba16 /mesonbuild/environment.py | |
parent | 552916d2d24723ef579ee54b18b8bd7b25328cf8 (diff) | |
parent | dfc0655bcd6f00e2711331ddf582d1fa18223d70 (diff) | |
download | meson-ae0e469b0692862dae10ceb02799feb3f117ce26.zip meson-ae0e469b0692862dae10ceb02799feb3f117ce26.tar.gz meson-ae0e469b0692862dae10ceb02799feb3f117ce26.tar.bz2 |
Merge pull request #3145 from thejk/gcovr
Support gcovr >= 3.1 and add gcovr html report as fallback
Diffstat (limited to 'mesonbuild/environment.py')
-rw-r--r-- | mesonbuild/environment.py | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py index 31ca2a2..ff7c706 100644 --- a/mesonbuild/environment.py +++ b/mesonbuild/environment.py @@ -76,19 +76,32 @@ cflags_mapping = {'c': 'CFLAGS', 'd': 'DFLAGS', 'vala': 'VALAFLAGS'} +def detect_gcovr(version='3.1', log=False): + gcovr_exe = 'gcovr' + try: + p, found = Popen_safe([gcovr_exe, '--version'])[0:2] + except (FileNotFoundError, PermissionError): + # Doesn't exist in PATH or isn't executable + return None, None + found = search_version(found) + if p.returncode == 0: + if log: + mlog.log('Found gcovr-{} at {}'.format(found, shlex.quote(shutil.which(gcovr_exe)))) + return gcovr_exe, mesonlib.version_compare(found, '>=' + version) + return None, None def find_coverage_tools(): - gcovr_exe = 'gcovr' + gcovr_exe, gcovr_new_rootdir = detect_gcovr() + lcov_exe = 'lcov' genhtml_exe = 'genhtml' - if not mesonlib.exe_exists([gcovr_exe, '--version']): - gcovr_exe = None if not mesonlib.exe_exists([lcov_exe, '--version']): lcov_exe = None if not mesonlib.exe_exists([genhtml_exe, '--version']): genhtml_exe = None - return gcovr_exe, lcov_exe, genhtml_exe + + return gcovr_exe, gcovr_new_rootdir, lcov_exe, genhtml_exe def detect_ninja(version='1.5', log=False): for n in ['ninja', 'ninja-build']: |