]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: merge coverage reports from previous test runs 21117/head
authorFrantisek Sumsal <frantisek@sumsal.cz>
Mon, 25 Oct 2021 09:35:47 +0000 (11:35 +0200)
committerFrantisek Sumsal <frantisek@sumsal.cz>
Mon, 25 Oct 2021 09:35:47 +0000 (11:35 +0200)
Relevant mainly for tests which utilize both QEMU and nspawn.

test/test-functions

index cd9d01f34542c487aa3099cb2729d8a18b27c3da..79a7f5a71c5a1289418fbd3d5b97d1e86b99291b 100644 (file)
@@ -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
 }