summaryrefslogtreecommitdiff
path: root/mesonbuild/scripts/coverage.py
AgeCommit message (Collapse)Author
2024-11-04coverage.py: Guard use of `--html-nested` behind version check.Andrew McNulty
`--html-nested` was added to gcovr in version 6.0 so passing it to versions before this will result in gcovr complaining that it doesn't recognise the argument. Added a version check to ensure that we pass a recognised argument for versions before 6.0 Fixes #13781
2024-07-10Replace exe_exists function with shutil.which()Mads Andreasen
The documentation for subprocess.run at https://docs.python.org/3/library/subprocess.html#popen-constructor has a warning, pointing to using shutil.which() instead of subprocess.run for detecting if exe files exists on the path. shutil.which() is used in many places already.
2024-06-23coverage: Change --html-details to --html-nested (gcovr)Walkusz
--html-nested option is used to create a separate web page for each file and directory. Each of these web pages includes the contents of file with annotations that summarize code coverage. Signed-off-by: Ewelina Walkusz <ewelinax.walkusz@intel.com>
2024-02-24scripts/coverage: Implemented handling for passing the gcovr and llvm-cov ↵dragonmux
binaries to use to the script
2024-02-16coverage: pass .lcovrc config file to genhtmlEsther Dalhuisen
The .lcovrc file can contain several directives for genhtml, mostly pertaining the visualisation of the generated HTML report. Passing the config file to genhtml allows the user to customize their report. Fixes #12863
2023-12-13Use SPDX-License-Identifier consistentlyDylan Baker
This replaces all of the Apache blurbs at the start of each file with an `# SPDX-License-Identifier: Apache-2.0` string. It also fixes existing uses to be consistent in capitalization, and to be placed above any copyright notices. This removes nearly 3000 lines of boilerplate from the project (only python files), which no developer cares to look at. SPDX is in common use, particularly in the Linux kernel, and is the recommended format for Meson's own `project(license: )` field
2023-12-06Fix coverage with lcov 2.0 and uncovered subprojectsDavid Robillard
Version 2.0 of lcov triggers an error when an exclude pattern is unused. This can happen when the project has subprojects, but no code in them ends up covered: lcov: ERROR: 'exclude' pattern '/[...]/subprojects/*' is unused. (use "lcov --ignore-errors unused ..." to bypass this error) So, simply do as it says. Unused patterns doesn't seem problematic (or even interesting) here, so I don't think there's any risk in simply turning this off, which matches what happened with earlier versions of lcov anyway.
2023-10-08Add support for lcov 2.0Nigel Kukard
lcov 2.0 deprecates `--rc lcov_branch_coverage=1` for `--rc branch_coverage=1` and gives an error when an exclude is used on a non existing directory. I added a version check for lcov and removed the subprojects directory from the exclusion list if it does not exist. Fixes #11995
2023-04-25Fix html coverage report generation when using clang on linuxJakob Widauer
2023-02-01treewide: add future annotations importEli Schwartz
2022-08-26Fix purely white space issues reported by flake8Alf Henrik Sauge
2022-05-06coverage: be clever and detect config files for gcovr/lcovEli Schwartz
gcovr will read this file anyway, but if it exists we don't need to assume that the project wishes to exclude subprojects/ -- they can determine that themselves. Fixes #3287 Closes #9761 lcov doesn't read the config file by default, but we can do the smart thing here. Fixes #4628
2021-11-01coverage generator: obey the documentation and only generate supported outputsEli Schwartz
We say: > If version 4.2 or higher of the first is found, targets coverage-text, > coverage-xml, coverage-sonarqube and coverage-html are generated. But this is totally untrue. Make it true, by actually checking (and not generating broken coverage commands when older versions of gcovr are found). Fixes #9505
2021-08-04Escape path in exclude filter passed to gcovrAlois Wohlschlager
Gcovr interprets exclude filters, as passed to the -e option, as regexes. Since we want to exclude a raw path, the argument must be escaped.
2021-07-23Add support for gcovr --sonarqube reportWeston Schmidt
Sonarcloud.io only can read the sonarqube based report that gcovr can produce. This change enables support for this output in meson and ninja. Signed-off-by: Weston Schmidt <Weston_Schmidt@alumni.purdue.edu>
2021-06-29fix: Always explicitly set encoding for text files (fixes #8263)Daniel Mensinger
2021-03-04mass rewrite of string formatting to use f-strings everywhereEli Schwartz
performed by running "pyupgrade --py36-plus" and committing the results
2020-09-08typing: fully annotate scriptsDaniel Mensinger
2020-06-17coverage: llvm-cov supportCary Converse
2019-04-24Add gcovr 4.2 supportRichard Kjerstadius
The out-of-source build syntax for gcovr 4.2 is different compared to previous versions and therefore an update was needed. In researching the most appropriate solution it was found that any gcovr version older than 3.3 always resulted in 0% coverage. Because of this, rather than adding an additional layer of logic, some already existing logic was modified to ensure correct syntax for the new version, while versions older than 3.3 are flagged as not supported. Closes mesonbuild#5089.
2018-12-16coverage: Also remove source_root prefixesWilliam A. Kennington III
The code our projects care about verifying coverage for mostly lives in the source_root with the exception of the generated source files in build_root. This change cleans up the output so we don't have prefixed paths on our source files anymore.
2018-12-02coverage: Print summary after gcovr html generationMohammed Sadiq
summary from stdout is often used by Automated builds to show build details The --print-summary option was added to gcovr in v3.2, since html output was added only in 3.1, limitting support to 3.2 won’t be a big deal. --print-summary is not enabled for text/xml report generation as it will result in meson not supporting any gcovr version less than 3.2.
2018-10-09coverage: fix lcov branch coverage generationMohammed Sadiq
lcov branch coverage are disabled by default. So branch coverage has to be enabled for every stage to make them work. Fixes https://github.com/mesonbuild/meson/issues/4319
2018-03-19Generate coveragereport directory for gcovr html targetJoel Klinghed
2018-03-19Exclude subprojects when doing coverageJoel Klinghed
Restore subproject exclusion for the html coverage report that existed in the ninja backend legacy target. Also exclude subprojects for the gcovr generated reports.
2018-03-19Use standalone coverage script for legacy targetsJoel Klinghed
ninja coverage -> generate all possible reports (text, xml, html) depending on gcovr and/or lcov/genhtml availability. ninja coverage-html -> generate only html report ninja coverage-xml -> generate only xml report ninja coverage-text -> generate only text report Make all targets phony, the old legacy rules where just annoying as you would have to remove the old report before being able to generate a new one. ninja coverage succeeds if it can generate at least one report. ninja coverage-* only succeeds if it can generate the requested report
2018-03-12fixup! Allow gcovr >= 3.1 to be used to generate html coverage reportJoel Klinghed
Rename gcovr_3_1 to gcovr_new_rootdir
2018-03-12fixup! Fix coverage-xml and coverage-text targets for gcovr >= 3.1Joel Klinghed
Rename gcovr_3_1 to gcovr_new_rootdir
2018-02-27Allow gcovr >= 3.1 to be used to generate html coverage reportJoel Klinghed
Modern gcovr includes html generation support so if lcov and genhtml are not available fallback to gcovr. Kept lcov and genhtml as default so to not surprise existing users of coverage-html with the different output of gcovr. gcovr added html support in 3.0 but as there already is a test for 3.1 because of the changes to -r/--rootdir I opted to only allow html generation for >= 3.1 to keep things simple.
2018-02-27Fix coverage-xml and coverage-text targets for gcovr >= 3.1Joel Klinghed
In gcovr 3.1 the -r/--rootdir argument changed meaning causing reports generated with gcovr 3.1 to not find the source files and look for *.gcda in the whole source tree rather than the build dir. So, detect gcovr version and if 3.1 give build_root to -r instead of source_root.
2018-02-08Remove all files outside the source directory from the coverage reportHenk van der Laan
Cuurently, a set of directories is filtered out from the output based on the location of system includes on most common linux distro's. This commit does away with the blacklist and implements a whitelist approach: only the files inside the source root are shown.
2018-01-30Echo coverage report uris after generation. Fixes #2805.Félix Piédallu
2017-12-17Exclude llvm/clang lib headers from test coveragesnsmac
Excludes the /usr/lib/llvm-*/include/ directory from coverage. This directory is used on Ubuntu for the libclang-dev packages
2017-08-11Exclude system sources from test coverageStefan Sonski
Exclude /usr/src/ from code coverage, this is included for e.g. gtest/gmock.
2017-05-13Strip system directories and show coverage for files not executed at all. ↵Jussi Pakkanen
Closes #1721.
2017-05-13Moved coverage commands to a standalone script.Jussi Pakkanen