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/backend/ninjabackend.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/backend/ninjabackend.py')
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 0c774c1..df1f427 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -628,19 +628,24 @@ int dummy; self.generate_coverage_legacy_rules(outfile) def generate_coverage_legacy_rules(self, outfile): - (gcovr_exe, lcov_exe, genhtml_exe) = environment.find_coverage_tools() + (gcovr_exe, gcovr_new_rootdir, lcov_exe, genhtml_exe) = environment.find_coverage_tools() added_rule = False if gcovr_exe: + # gcovr >= 3.1 interprets rootdir differently + if gcovr_new_rootdir: + rootdir = self.environment.get_build_dir() + else: + rootdir = self.environment.get_source_dir(), added_rule = True elem = NinjaBuildElement(self.all_outputs, 'meson-coverage-xml', 'CUSTOM_COMMAND', '') - elem.add_item('COMMAND', [gcovr_exe, '-x', '-r', self.environment.get_source_dir(), + elem.add_item('COMMAND', [gcovr_exe, '-x', '-r', rootdir, '-o', os.path.join(self.environment.get_log_dir(), 'coverage.xml')]) elem.add_item('DESC', 'Generating XML coverage report.') elem.write(outfile) # Alias that runs the target defined above self.create_target_alias('meson-coverage-xml', outfile) elem = NinjaBuildElement(self.all_outputs, 'meson-coverage-text', 'CUSTOM_COMMAND', '') - elem.add_item('COMMAND', [gcovr_exe, '-r', self.environment.get_source_dir(), + elem.add_item('COMMAND', [gcovr_exe, '-r', rootdir, '-o', os.path.join(self.environment.get_log_dir(), 'coverage.txt')]) elem.add_item('DESC', 'Generating text coverage report.') elem.write(outfile) @@ -682,6 +687,19 @@ int dummy; elem.add_item('COMMAND', command) elem.add_item('DESC', 'Generating HTML coverage report.') elem.write(outfile) + elif gcovr_exe and gcovr_new_rootdir: + added_rule = True + htmloutdir = os.path.join(self.environment.get_log_dir(), 'coveragereport') + phony_elem = NinjaBuildElement(self.all_outputs, 'meson-coverage-html', 'phony', os.path.join(htmloutdir, 'index.html')) + phony_elem.write(outfile) + # Alias that runs the target defined above + self.create_target_alias('meson-coverage-html', outfile) + elem = NinjaBuildElement(self.all_outputs, os.path.join(htmloutdir, 'index.html'), 'CUSTOM_COMMAND', '') + command = [gcovr_exe, '--html', '--html-details', '-r', self.environment.get_build_dir(), + '-o', os.path.join(htmloutdir, 'index.html')] + elem.add_item('COMMAND', command) + elem.add_item('DESC', 'Generating HTML coverage report.') + elem.write(outfile) if not added_rule: mlog.warning('coverage requested but neither gcovr nor lcov/genhtml found.') |