summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2022-03-07 12:10:31 +0100
committerCarlos Garnacho <carlosg@gnome.org>2022-03-08 11:31:15 +0100
commit0a07d77d376b44c7ea95f97db7f9a0188e80638b (patch)
tree83df0d927fd2e57c2f94e575c8bc5f22363dcd4c /.gitlab-ci.yml
parentffb127248ce65fad6d57072c36862c21221b2142 (diff)
downloadtracker-0a07d77d376b44c7ea95f97db7f9a0188e80638b.tar.gz
ci: Run coverage on all test jobs
And have the coverage job merge all results. So far this is mostly repeated work with maybe some slight timing-related variances in code paths, but this may be useful to get an unified coverage report for different compilation flags in the future. So far, Ubuntu seems to have an old gcovr version that generates a different JSON intermediate file. Since gcovr requires that all JSON versions match, Ubuntu is so far kept out.
Diffstat (limited to '.gitlab-ci.yml')
-rw-r--r--.gitlab-ci.yml28
1 files changed, 18 insertions, 10 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f575877d1..ea1feb96a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -218,7 +218,7 @@ check-code-style:
.build-template: &build
stage: build
script:
- - meson . build -Ddocs=$([ -z "$NO_DOCS" ] && echo "true" || echo "false") -Db_lto=true -Dsystemd_user_services=false -Dtests_tap_protocol=true --prefix /usr
+ - meson . build -Ddocs=$([ -z "$NO_DOCS" ] && echo "true" || echo "false") -Db_coverage=true -Db_lto=true -Dsystemd_user_services=false -Dtests_tap_protocol=true --prefix /usr
- ninja -C build
- |
if [ -z "$NO_DOCS" ]; then ninja -C build docs/reference/libtracker-sparql/Tracker-doc; fi
@@ -287,6 +287,13 @@ build-alpine-latest@x86_64:
unset $(env|grep -o '^CI_[^=]*')
env LANG=C.UTF-8 LC_ALL=C.UTF-8 dbus-run-session meson test --print-errorlogs ${MESON_TEST_EXTRA_ARGS}
after_script:
+ - pushd build
+ - gcovr --root=.. --filter='\.\./src/'
+ --exclude=../utils --exclude=../examples --exclude=../docs/reference
+ --exclude='\.\./build/.*\.[ch]$' --exclude='.*/tests/.*\.[ch]$'
+ --exclude='\.\./src/.*\.vala$'
+ --json --output=../coverage-${CI_JOB_NAME}.json 2>/dev/null
+ - popd
- |
echo "Distribution: "
echo
@@ -304,6 +311,7 @@ build-alpine-latest@x86_64:
when: always
paths:
- build
+ - coverage-*.json
reports:
junit: "build/meson-logs/testlog.junit.xml"
@@ -372,26 +380,26 @@ test-website:
needs:
- build-fedora-container@x86_64
-coverage-analysis:
+coverage:
extends:
- .fdo.distribution-image@fedora
- .tracker.fedora:35@x86_64
stage: analysis
allow_failure: true
script:
- - meson build -Db_coverage=true -Ddocs=false -Dsystemd_user_services=false -Dtests_tap_protocol=true --prefix /usr
- - cd build
- - ninja
- - env LANG=C.UTF-8 LC_ALL=C.UTF-8 dbus-run-session meson test --print-errorlogs ${MESON_TEST_EXTRA_ARGS}
- - mkdir -p coveragereport
- - gcovr --html-details --print-summary --root=.. --exclude=../docs/reference --exclude=../tests --exclude=../utils --exclude=../examples --exclude=.*_gresources\.c --exclude=.*enum-types\.c --output coveragereport/index.html
+ - mkdir coveragereport
+ - gcovr --add-tracefile 'coverage-*.json'
+ --html-details --print-summary --output coveragereport/index.html
coverage: '/^lines: (\d+\.\d+\%)/'
artifacts:
when: always
paths:
- - build/coveragereport
+ - coveragereport
needs:
- - build-fedora-container@x86_64
+ - test-fedora@x86_64
+ - test-fedora-rawhide@x86_64
+ - test-fedora@aarch64
+ - test-alpine@x86_64
coverity:
extends: