From d4dcb2e31775f92383296b842f0afd8e2d4840fb Mon Sep 17 00:00:00 2001 From: Michael Platings Date: Fri, 19 Jan 2024 08:30:06 +0000 Subject: [PATCH] Test coverage visualization https://gitlab.arm.com/help/ci/testing/test_coverage_visualization.md --- .gitlab-ci.yml | 10 +++++----- docker/Dockerfile | 5 ++++- scripts/ci.sh | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 6 deletions(-) create mode 100755 scripts/ci.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index dcd2df4d1..ca1a257fb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,11 +8,11 @@ build: tags: - arm64 script: - - CHECK_ONLY=ON VERBOSE=ON scripts/format.sh - - reuse lint - - cmake -S . -B build -G Ninja - - GTEST_OUTPUT=xml:$CI_PROJECT_DIR/test-results/ ninja -C build check-intrinsiccv + - scripts/ci.sh artifacts: when: always reports: - junit: test-results/*.xml + junit: build/test-results/*.xml + coverage_report: + coverage_format: cobertura + path: build/cobertura-coverage.xml diff --git a/docker/Dockerfile b/docker/Dockerfile index 0a972cb12..d373acb9c 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -31,8 +31,11 @@ RUN wget -q https://apt.llvm.org/llvm-snapshot.gpg.key -O /etc/apt/trusted.gpg.d clang-${LLVM_VERSION} \ clang-format-${LLVM_VERSION} \ clang-tidy-${LLVM_VERSION} \ - clang-tools-${LLVM_VERSION} + clang-tools-${LLVM_VERSION} \ + libclang-rt-${LLVM_VERSION}-dev \ + llvm-${LLVM_VERSION} +RUN pipx install gcovr==6.0 RUN pipx install reuse==3.0.0 ENV PATH=${PATH}:/usr/lib/llvm-${LLVM_VERSION}/bin:/root/.local/bin diff --git a/scripts/ci.sh b/scripts/ci.sh new file mode 100755 index 000000000..1fbb28faa --- /dev/null +++ b/scripts/ci.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash +# +# SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +# +# SPDX-License-Identifier: Apache-2.0 + +set -exu + +# Ensure we're at the root of the repo. +cd "$(dirname "${BASH_SOURCE[0]}")/.." + +# Ensure we're doing a clean build +rm -rf build + +# Check format of C++ files +CHECK_ONLY=ON VERBOSE=ON scripts/format.sh + +# Check license headers +reuse lint + +# Build and run tests +cmake -S . -B build -G Ninja \ + -DCMAKE_CXX_FLAGS="--coverage -g -O0" + +GTEST_OUTPUT=xml:$(pwd)/build/test-results/ \ + ninja -C build check-intrinsiccv + +# Generate test coverage report +gcovr \ + -j \ + --gcov-executable "llvm-cov gcov" \ + --exclude-noncode-lines \ + --cobertura build/cobertura-coverage.xml \ + --print-summary \ + --exclude build \ + build -- GitLab