From: Luca Boccassi Date: Wed, 22 Sep 2021 14:41:22 +0000 (+0100) Subject: CI: add code coverage reports via lcov and coveralls.io X-Git-Tag: v250-rc1~611^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1f1d48f96e0a298fbf1059c53debdab6f08791f3;p=thirdparty%2Fsystemd.git CI: add code coverage reports via lcov and coveralls.io --- diff --git a/.github/workflows/unit_tests.sh b/.github/workflows/unit_tests.sh index f661d45c99b..edc69301a4d 100755 --- a/.github/workflows/unit_tests.sh +++ b/.github/workflows/unit_tests.sh @@ -8,6 +8,7 @@ ADDITIONAL_DEPS=( fdisk iproute2 jekyll + lcov libfdisk-dev libfido2-dev libp11-kit-dev @@ -45,10 +46,18 @@ for phase in "${PHASES[@]}"; do export CC=clang export CXX=clang++ fi - meson --werror -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true -Dman=true build + if [[ "$phase" = "RUN_GCC" ]]; then + MESON_ARGS+=(-Db_coverage=true) + # See FIXME below + (set +x; while :; do echo -ne "\n[WATCHDOG] $(date)\n"; sleep 30; done) & + fi + meson --werror -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true -Dman=true "${MESON_ARGS[@]}" build ninja -C build -v # Some of the unsafe tests irreparably break the host's network connectivity, so run them in a namespace unshare -n bash -c 'ip link set dev lo up; meson test -C build --print-errorlogs' + if [[ "$phase" = "RUN_GCC" ]]; then + ninja -C build coverage + fi ;; RUN_ASAN_UBSAN|RUN_GCC_ASAN_UBSAN|RUN_CLANG_ASAN_UBSAN) MESON_ARGS=(--optimization=1) diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index ca1e6e0c30f..ade9323cbb0 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -16,8 +16,14 @@ jobs: run_phase: [GCC, GCC_ASAN_UBSAN, CLANG, CLANG_ASAN_UBSAN] steps: - name: Repository checkout - uses: actions/checkout@v1 + uses: actions/checkout@v2 - name: Install build dependencies run: sudo -E .github/workflows/unit_tests.sh SETUP - name: Build & test (${{ matrix.run_phase }}) run: sudo -E .github/workflows/unit_tests.sh RUN_${{ matrix.run_phase }} + - name: Coveralls + if: matrix.run_phase == 'GCC' && github.repository == 'systemd/systemd' + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + path-to-lcov: ./build/meson-logs/coverage.info diff --git a/README.md b/README.md index 6734e92a24b..180b34de228 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ System and Service Manager [![CentOS CI - Arch](https://jenkins-systemd.apps.ocp.ci.centos.org/buildStatus/icon?subject=CentOS%20CI%20-%20Arch&job=upstream-vagrant-archlinux)](https://jenkins-systemd.apps.ocp.ci.centos.org/job/upstream-vagrant-archlinux/)
[![CentOS CI - Arch (sanitizers)](https://jenkins-systemd.apps.ocp.ci.centos.org/buildStatus/icon?subject=CentOS%20CI%20-%20Arch%20(sanitizers)&job=upstream-vagrant-archlinux-sanitizers)](https://jenkins-systemd.apps.ocp.ci.centos.org/job/upstream-vagrant-archlinux-sanitizers/)
[![Fossies codespell report](https://fossies.org/linux/test/systemd-main.tar.gz/codespell.svg)](https://fossies.org/linux/test/systemd-main.tar.gz/codespell.html)
+[![Coverage Status](https://coveralls.io/repos/github/systemd/systemd/badge.svg?branch=main)](https://coveralls.io/github/systemd/systemd?branch=main)
[![Packaging status](https://repology.org/badge/tiny-repos/systemd.svg)](https://repology.org/project/systemd/versions) ## Details