Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
8877324
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
4d0452d
Update publish_jsr.yml
Mqxx Jan 30, 2026
e332654
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
972cac5
Update build_binary.yml
Mqxx Jan 30, 2026
89d7095
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
dd79599
Update build_binary.yml
Mqxx Jan 30, 2026
b5833c9
Update build_binary.yml
Mqxx Jan 30, 2026
ffc0045
fix: sudo
Mqxx Jan 30, 2026
4818535
fix: Change CMake for using prebuild
Mqxx Jan 30, 2026
f6fada6
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
4bea539
fix: env
Mqxx Jan 30, 2026
b0fedd1
fix: missing \
Mqxx Jan 30, 2026
11c79fa
fix: revert
Mqxx Jan 30, 2026
83ea45b
fix: upload test artifacts
Mqxx Jan 30, 2026
2f08872
fix: Remove build step
Mqxx Jan 30, 2026
ff7ac9c
fix: error if no files
Mqxx Jan 30, 2026
5801764
Update build_binary.yml
Mqxx Jan 30, 2026
6e00b85
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
7e7569e
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
28da40c
fix: artifacts
Mqxx Jan 30, 2026
cb2c125
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
a79183d
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
4135d28
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
cf037c6
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
86fa530
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
ac2b77b
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
b3fc9a2
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
275a404
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
3c9ebcb
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
11778d7
Update build_binary.yml
Mqxx Jan 30, 2026
66a89df
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
cb46822
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
956ae95
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
09913d5
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
0cc87d0
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
e2f2285
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
8d7a7d8
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
5002721
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
f6c49d3
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
fe86433
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
ef11778
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
60fb1d7
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
1e766e2
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
8d8bc72
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
cb59b80
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
771141c
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
8a50f3b
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
3a7a1c7
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
4a53362
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
e1d443b
Update test_unit_cpp.yml
Mqxx Jan 30, 2026
90c545e
feat: code coverage annotations
Mqxx Feb 11, 2026
709357d
feat: add CMake presets for build configurations and update code cove…
Katze719 Feb 12, 2026
cd6c030
refactor: replace Clang setup step with direct installation and updat…
Katze719 Feb 12, 2026
3be40c7
fix: refactor
Mqxx Feb 12, 2026
b6b4152
fix: unit tests
Mqxx Feb 12, 2026
34f814e
Update test_unit_cpp.yml
Mqxx Feb 12, 2026
9ff85a2
Update test_unit_cpp.yml
Mqxx Feb 12, 2026
4353b18
fix: unit tests
Mqxx Feb 12, 2026
e0f0320
Update code_coverage_cpp.yml
Mqxx Feb 12, 2026
f8d9b74
refactor: update CMake build commands to use presets for consistency
Katze719 Feb 12, 2026
822623b
refactor: modify CMake build commands in workflows to utilize presets…
Katze719 Feb 12, 2026
252fe80
fix: presets
Mqxx Feb 12, 2026
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
28 changes: 20 additions & 8 deletions .github/workflows/build_binary.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,21 +37,22 @@ jobs:
CXX: g++

run: |
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --preset linux-gcc-release

- name: 'Build'
id: 'build'
run: |
cmake --build build --config Release
cmake --build --preset linux-gcc-release --target cpp_bindings_linux

. build/env.sh
echo "PACKAGE_VERSION=$PACKAGE_VERSION" >> $GITHUB_OUTPUT

- name: 'Upload artifacts'
uses: actions/upload-artifact@v4
with:
name: libcpp_bindings_linux_x86_64
path: build/libcpp_bindings_linux.so*
if-no-files-found: error
name: libcpp_bindings_linux
path: build/libcpp_bindings_linux.so

- name: 'Check tag'
id: 'check-tag'
Expand All @@ -71,14 +72,25 @@ jobs:
package_version: ${{ steps.build.outputs.PACKAGE_VERSION }}
is_valid_package_version: ${{ steps.check-tag.outputs.IS_VALID_PACKAGE_VERSION }}

trigger-publish:
name: 'Trigger Publish'
test-unit-cpp:
name: 'Run: Test Unit C++'
needs: ['build-binary']
uses: ./.github/workflows/publish_jsr.yml
uses: './.github/workflows/test_unit_cpp.yml'
with:
artifact-name: cpp_bindings_linux_tests

permissions:
contents: read
checks: write

publish-jsr:
name: 'Run: Publish JSR'
needs: ['build-binary', 'test-unit-cpp']
uses: './.github/workflows/publish_jsr.yml'
with:
publish: ${{ needs.build-binary.outputs.is_valid_package_version == 'true' }}
version: ${{ needs.build-binary.outputs.package_version }}
artifact-name: libcpp_bindings_linux_x86_64
artifact-name: libcpp_bindings_linux

permissions:
contents: read
Expand Down
88 changes: 88 additions & 0 deletions .github/workflows/code_coverage_cpp.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
name: 'Code Coverage C++'
description: |
This workflow checks and displays code coverage.

on:
push:
branches: [ 'main' ]
tags: [ '*' ]

pull_request:
branches: [ '*' ]

jobs:
code-coverage-cpp:
name: 'Code Coverage C++'
runs-on: ubuntu-latest
env:
SERIAL_TEST_PORT_IN: /tmp/ttyCI_IN
SERIAL_TEST_PORT_OUT: /tmp/ttyCI_OUT

permissions:
contents: read
checks: write

steps:
- name: 'Checkout repository'
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: 'Install Clang and compiler-rt (profile)'
run: |
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/llvm-apt.gpg
echo "deb [signed-by=/usr/share/keyrings/llvm-apt.gpg] https://apt.llvm.org/$(lsb_release -cs)/ llvm-toolchain-$(lsb_release -cs)-21 main" | sudo tee /etc/apt/sources.list.d/llvm-21.list
sudo apt-get update
sudo apt-get install -y clang-21 libclang-rt-21-dev llvm-21

- name: 'Setup CMake'
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: '3.31.x'

- name: 'Configure CMake (coverage preset)'
run: |
cmake --preset coverage \
-DCMAKE_C_COMPILER=clang-21 \
-DCMAKE_CXX_COMPILER=clang++-21

- name: 'Build'
run: cmake --build --preset coverage

- name: 'Install test dependencies'
run: sudo apt-get install -y socat

- name: 'Start virtual serial echo (socat)'
run: |
socat -d -d pty,raw,echo=0,link=$SERIAL_TEST_PORT_IN,mode=666 pty,raw,echo=0,link=$SERIAL_TEST_PORT_OUT,mode=666 &
sleep 2
stdbuf -i0 -o0 cat < $SERIAL_TEST_PORT_OUT > $SERIAL_TEST_PORT_OUT &
sleep 1

- name: 'Run tests with coverage'
working-directory: build
env:
LD_LIBRARY_PATH: '${{ github.workspace }}/build'
SERIAL_TEST_PORT: '${{ env.SERIAL_TEST_PORT_IN }}'
LLVM_PROFILE_FILE: 'default.profraw'
run: ./cpp_bindings_linux_tests --gtest_color=yes

- name: 'Merge profile and export lcov'
working-directory: build
run: |
llvm-profdata-21 merge -o default.profdata default.profraw
llvm-cov-21 export -instr-profile=default.profdata \
./cpp_bindings_linux_tests \
-object=./libcpp_bindings_linux.so \
-format=lcov \
-ignore-filename-regex='.*/GTest.*' \
-ignore-filename-regex='.*/googletest.*' \
-ignore-filename-regex='.*/cpp_core.*' \
> lcov.info

- name: 'Code Coverage Annotation'
uses: ggilder/codecoverage@v1
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COVERAGE_FILE_PATH: './build/lcov.info'
COVERAGE_FORMAT: 'lcov'
52 changes: 0 additions & 52 deletions .github/workflows/cpp_tests.yml

This file was deleted.

2 changes: 1 addition & 1 deletion .github/workflows/publish_jsr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ permissions:

jobs:
publish-jsr:
name: 'Publish JSR'
runs-on: ubuntu-latest

steps:
- name: 'Checkout repository'
uses: actions/checkout@v4
Expand Down
96 changes: 96 additions & 0 deletions .github/workflows/test_unit_cpp.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
name: 'Test Unit C++'
description: |
This workflow builds the library and runs the unit tests.

on:
workflow_call:
inputs:
artifact-name:
description: 'Name of the artifact'
required: true
type: string

jobs:
test-unit-cpp:
name: 'Test Unit C++'
runs-on: ubuntu-latest
env:
SERIAL_TEST_PORT_IN: /tmp/ttyCI_IN
SERIAL_TEST_PORT_OUT: /tmp/ttyCI_OUT
TEST_REPORT_NAME: 'test_report.xml'

steps:
- name: 'Checkout repository'
uses: actions/checkout@v4

- name: 'Download artifact'
uses: actions/download-artifact@v4
with:
name: ${{ github.event.inputs.artifact-name }}
path: 'artifacts'

- name: 'Setup GCC'
uses: egor-tensin/setup-gcc@v2
with:
version: '14'
platform: 'x64'

- name: 'Setup CMake'
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: '3.31.x'

- name: 'Configure CMake'
run: |
cmake --preset linux-gcc-release

- name: 'Build'
id: 'build'
run: |
cmake --build --preset linux-gcc-release --target cpp_bindings_linux_tests

- name: 'Install test dependencies'
run: |
sudo apt-get install -y socat

- name: Start virtual serial echo (socat)
run: |
socat -d -d pty,raw,echo=0,link=$SERIAL_TEST_PORT_IN,mode=666 pty,raw,echo=0,link=$SERIAL_TEST_PORT_OUT,mode=666 &
sleep 2
stdbuf -i0 -o0 cat < $SERIAL_TEST_PORT_OUT > $SERIAL_TEST_PORT_OUT &
sleep 1

- name: 'Run tests'
working-directory: 'build'
env:
LD_LIBRARY_PATH: '${{ github.workspace }}/artifacts'
SERIAL_TEST_PORT: '${{ env.SERIAL_TEST_PORT_IN }}'

run: |
chmod +x ./cpp_bindings_linux_tests

./cpp_bindings_linux_tests \
--gtest_color=yes \
--gtest_output=xml:$TEST_REPORT_NAME

- name: 'Upload test report'
if: always()
uses: actions/upload-artifact@v4
with:
name: 'test_reports'
path: 'build/${{ env.TEST_REPORT_NAME }}'

- name: 'Publish test report'
if: always()
uses: mikepenz/action-junit-report@v5
with:
report_paths: 'build/${{ env.TEST_REPORT_NAME }}'
detailed_summary: true
group_suite: true
include_passed: true
annotate_notice: true
transformers: '[{"searchValue": "${{ github.workspace }}", "replaceValue": ""}]'
check_title_template: '{{FILE_NAME}} | {{TEST_NAME}}'



46 changes: 46 additions & 0 deletions CMakePresets.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
{
"version": 3,
"configurePresets": [
{
"name": "default",
"hidden": true,
"generator": "Ninja",
"binaryDir": "${sourceDir}/build",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
}
},
{
"name": "linux-gcc-release",
"displayName": "Linux GCC Release",
"inherits": "default",
"cacheVariables": {
"CMAKE_C_COMPILER": "gcc",
"CMAKE_CXX_COMPILER": "g++"
}
},
{
"name": "coverage",
"displayName": "Clang Code Coverage",
"inherits": "default",
"cacheVariables": {
"CMAKE_C_COMPILER": "clang",
"CMAKE_CXX_COMPILER": "clang++",
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_CXX_FLAGS": "-fprofile-instr-generate -fcoverage-mapping",
"CMAKE_EXE_LINKER_FLAGS": "-fprofile-instr-generate -fcoverage-mapping",
"CMAKE_SHARED_LINKER_FLAGS": "-fprofile-instr-generate -fcoverage-mapping"
}
}
],
"buildPresets": [
{
"name": "linux-gcc-release",
"configurePreset": "linux-gcc-release"
},
{
"name": "coverage",
"configurePreset": "coverage"
}
]
}
Loading