Skip to content

Run pytest in ubuntu latest #182

Run pytest in ubuntu latest

Run pytest in ubuntu latest #182

Workflow file for this run

name: Code Coverage
on:
workflow_call:
push:
branches:
- main
pull_request:
env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Debug
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Pull and Run Docker with GCC 11.4.0 and LCOV
run: |
docker pull ubuntu:22.04
docker run --rm -v $(pwd):/workspace -w /workspace ubuntu:22.04 bash -c "
apt-get update &&
apt-get install -y gcc-11 g++-11 lcov wget cmake zip &&
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100 &&
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 100 &&
update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-11 100 &&
gcc --version &&
gcov --version &&
lcov --version &&
# Clean old coverage files
rm -rf cmake-build-unit-tests/*.gcda cmake-build-unit-tests/*.gcno &&
# Configure and build the tests
rm -rf cmake-build-unit-tests &&
cmake -B cmake-build-unit-tests -S executables/unitTest -DBUILD_UNIT_TESTS=ON -DCMAKE_BUILD_TYPE=${BUILD_TYPE} &&
cmake --build cmake-build-unit-tests -j4 &&
ctest --test-dir cmake-build-unit-tests -j4 &&
# Capture code coverage
lcov --no-external --capture --directory . \
--output-file cmake-build-unit-tests/coverage_unfiltered.info &&
# Filter out 3rd party and mock files
lcov --remove cmake-build-unit-tests/coverage_unfiltered.info \
'*libs/3rdparty/googletest/*' \
'*/mock/*' \
'*/gmock/*' \
'*/gtest/*' \
'*/test/*' \
--output-file cmake-build-unit-tests/coverage.info &&
# Generate HTML coverage report
genhtml cmake-build-unit-tests/coverage.info \
--output-directory cmake-build-unit-tests/coverage &&
mv cmake-build-unit-tests/coverage code_coverage &&
zip -r code_coverage.zip code_coverage &&
#Badges
LinePercentage=\$(lcov --summary cmake-build-unit-tests/coverage.info | grep 'lines' | awk '{print \$2}') &&
echo \"Line Percentage: \$LinePercentage\" # Debug print &&
wget \"https://img.shields.io/badge/coverage-\${LinePercentage}25-brightgreen.svg\" -O line_coverage_badge.svg &&
FunctionPercentage=\$(lcov --summary cmake-build-unit-tests/coverage.info | grep 'functions' | awk '{print \$2}') &&
echo \"Function Percentage: \$FunctionPercentage\" # Debug print &&
wget \"https://img.shields.io/badge/coverage-\${FunctionPercentage}25-brightgreen.svg\" -O function_coverage_badge.svg &&
mkdir coverage_badges &&
mv line_coverage_badge.svg coverage_badges/ &&
mv function_coverage_badge.svg coverage_badges/ &&
zip -r coverage_badges.zip coverage_badges
"
- name: Upload code coverage artifact
uses: actions/upload-artifact@v4
with:
name: code_coverage
path: code_coverage.zip
- name: Upload Coverage Badge
uses: actions/upload-artifact@v4
with:
name: coverage_badges
path: coverage_badges.zip