Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions .github/workflows/bvt-codecoverage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
on:
workflow_call:
workflow_dispatch:

jobs:
bvt-codecoverage:
runs-on: ubuntu-24.04
container: gcc:16
steps:
- uses: actions/checkout@v7

- name: Install CMake, Ninja, and gcovr
run: |
apt-get update
apt-get install -y cmake ninja-build gcovr

- name: Check toolchain versions
run: |
g++ --version
gcov --version
cmake --version
ninja --version
gcovr --version

- name: Build and run tests with code coverage instrumentation
run: |
cmake --preset coverage -DCMAKE_CXX_STANDARD=23 -DPROXY_BUILD_MODULES=TRUE
cmake --build --preset coverage -j
ctest --preset coverage -j

- name: Build and run freestanding tests with code coverage instrumentation
Comment thread
mingxwa marked this conversation as resolved.
run: |
cmake --preset coverage-freestanding -DCMAKE_CXX_STANDARD=23 -DPROXY_BUILD_MODULES=TRUE
cmake --build --preset coverage-freestanding -j
ctest --preset coverage-freestanding -j

- name: Generate code coverage report
run: |
mkdir -p build/coverage/report
gcovr --root . \
--filter 'include/proxy/' \
--gcov-executable gcov \
--exclude-unreachable-branches \
--print-summary \
--txt build/coverage/report/coverage.txt \
--xml-pretty --output build/coverage/report/coverage.xml \
--html-details build/coverage/report/coverage.html

- name: Upload code coverage report
Comment thread
mingxwa marked this conversation as resolved.
uses: actions/upload-artifact@v7
with:
name: coverage-report
path: build/coverage/report/
5 changes: 5 additions & 0 deletions .github/workflows/pipeline-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@ jobs:
name: Run BVT for compatibility
if: github.event_name != 'push' || github.repository == 'ngcpp/proxy'

run-bvt-codecoverage:
uses: ./.github/workflows/bvt-codecoverage.yml
name: Run BVT for code coverage
if: github.event_name != 'push' || github.repository == 'ngcpp/proxy'

report:
uses: ./.github/workflows/bvt-report.yml
name: Generate report
Expand Down
42 changes: 42 additions & 0 deletions CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,26 @@
"cacheVariables": {
"PROXY_FREESTANDING": "ON"
}
},
{
"name": "coverage",
"displayName": "Code coverage build",
"inherits": "default",
"binaryDir": "${sourceDir}/build/coverage",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_CXX_FLAGS": "--coverage -O0 -g",
"CMAKE_EXE_LINKER_FLAGS": "--coverage"
Comment thread
tian-lt marked this conversation as resolved.
}
Comment thread
tian-lt marked this conversation as resolved.
},
{
"name": "coverage-freestanding",
"displayName": "Code coverage freestanding build",
"inherits": "coverage",
"binaryDir": "${sourceDir}/build/coverage-freestanding",
"cacheVariables": {
"PROXY_FREESTANDING": "ON"
}
}
],
"buildPresets": [
Expand All @@ -34,6 +54,14 @@
{
"name": "freestanding",
"configurePreset": "freestanding"
},
{
"name": "coverage",
"configurePreset": "coverage"
},
{
"name": "coverage-freestanding",
"configurePreset": "coverage-freestanding"
}
],
"testPresets": [
Expand All @@ -50,6 +78,20 @@
"output": {
"outputOnFailure": true
}
},
{
"name": "coverage",
"configurePreset": "coverage",
"output": {
"outputOnFailure": true
}
},
{
"name": "coverage-freestanding",
"configurePreset": "coverage-freestanding",
"output": {
"outputOnFailure": true
}
}
]
}
Loading