summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrantisek Sumsal <frantisek@sumsal.cz>2021-10-25 11:35:47 +0200
committerFrantisek Sumsal <frantisek@sumsal.cz>2021-10-25 11:35:47 +0200
commit35382a9da3e6a4da2cd266bac6dd0ad9b9865747 (patch)
tree7c5ca2baa1d9f80bf3c99a5d176819d261b1cc66
parente70103e2d4543efedc340f352fe77c4cadf23b52 (diff)
downloadsystemd-35382a9da3e6a4da2cd266bac6dd0ad9b9865747.tar.gz
test: merge coverage reports from previous test runs
Relevant mainly for tests which utilize both QEMU and nspawn.
-rw-r--r--test/test-functions15
1 files changed, 13 insertions, 2 deletions
diff --git a/test/test-functions b/test/test-functions
index cd9d01f345..79a7f5a71c 100644
--- a/test/test-functions
+++ b/test/test-functions
@@ -1316,8 +1316,19 @@ check_coverage_reports() {
# Create a coverage report that will later be uploaded. Remove info about
# system libraries/headers, as we don't really care about them.
- lcov --directory "${root}/${BUILD_DIR:?}" --capture --output-file "${dest}"
- lcov --remove "${dest}" -o "${dest}" '/usr/include/*' '/usr/lib/*'
+ if [[ -f "$dest" ]]; then
+ # If the destination report file already exists, don't overwrite it, but
+ # dump the new report in a temporary file and then merge it with the already
+ # present one - this usually happens when running both "parts" of a test
+ # in one run (the qemu and the nspawn part).
+ lcov --directory "${root}/${BUILD_DIR:?}" --capture --output-file "${dest}.new"
+ lcov --remove "${dest}.new" -o "${dest}.new" '/usr/include/*' '/usr/lib/*'
+ lcov --add-tracefile "${dest}" --add-tracefile "${dest}.new" -o "${dest}"
+ rm -f "${dest}.new"
+ else
+ lcov --directory "${root}/${BUILD_DIR:?}" --capture --output-file "${dest}"
+ lcov --remove "${dest}" -o "${dest}" '/usr/include/*' '/usr/lib/*'
+ fi
return 0
}