Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
02ec585
build: only allow to build as python extension
robertodr Jul 24, 2026
6615e22
chore: c++ unit tests off by default
robertodr Jul 24, 2026
2f43fb5
chore: remove already off flag from cibuildwheel conf
robertodr Jul 24, 2026
d324ea3
chore(devcontainer): fix some flags in postStartCommand script
robertodr Jul 24, 2026
d047093
build(cmake): push python-finding to root CMakeLists.txt
robertodr Jul 26, 2026
f50cf69
build(cmake): :art: overhaul installation
robertodr Jul 26, 2026
365df37
Apply suggestion from @robertodr
robertodr Jul 26, 2026
5d2b9e6
style: :lipstick: workflow cosmetics
robertodr Jul 26, 2026
dd3af6f
chore: remove leftover .orig files
robertodr Jul 29, 2026
0ff39fd
chore: add monoprop_WIDE_TERM_INDEX to target, not globally
robertodr Jul 29, 2026
909e168
chore: post-merge fixes
robertodr Jul 29, 2026
c10f71c
ci: run C++ unit tests
robertodr Jul 29, 2026
6cf1f12
ci: use HTTPS with curl
robertodr Jul 29, 2026
542eef9
ci: avoid implicit re-syncs with uv
robertodr Jul 29, 2026
0496a44
chore: remove double print in CMakeLists.txt
robertodr Jul 29, 2026
1c829ad
build: c++ unit tests ON by default
robertodr Jul 29, 2026
e9550d7
ci: verify find_package(monoprop)
robertodr Jul 29, 2026
02edaaa
style: format a CMakeLists.txt
robertodr Jul 29, 2026
1238039
chore(devcontainer): c++ unit tests are ON by default
robertodr Jul 29, 2026
c926d2c
ci: install msgpack-cxx on macos
robertodr Jul 29, 2026
67001da
ci: refine find_package(monoprop) verification
robertodr Jul 29, 2026
72f2c7f
Merge branch 'main' into chore-dev-single-build-path
ludmilaasb Jul 29, 2026
87f15b1
ci: install msgpack@7.0.0 on macos-15
robertodr Jul 29, 2026
b89ee5c
build(cmake): remove redundant target_include_directories
robertodr Jul 29, 2026
307b438
ci: msgpack-cxx 8.0.0 is fine on macos-15
robertodr Jul 29, 2026
cb0ef99
ci: build path explicitly
robertodr Jul 29, 2026
f04913e
chore(cmake): do not install msgpack with the wheel
robertodr Jul 29, 2026
f884843
ci: obtain path to cmake config file with uv
robertodr Jul 29, 2026
00dfe3c
chore(cmake): cpmaddpackage msgpack without VERSION
robertodr Jul 29, 2026
89fc1b9
chore(vscode): clean up tasks.json
robertodr Jul 29, 2026
2433d85
chore(deps-dev): remove gcovr
robertodr Jul 29, 2026
c59eaf3
ci: split coverage collection to its own job
robertodr Jul 29, 2026
c3fc9e5
ci: surface-level cleanup of sonarqube analysis
robertodr Jul 29, 2026
68b39a3
ci(coverage): set build type as env-var
robertodr Jul 29, 2026
2117607
ci: collapse cpp-checks-other into package-tests
robertodr Jul 29, 2026
36f9510
ci: use the c++ linker
robertodr Jul 29, 2026
8d613a5
ci(sonar): adapt to streamlined cmake set up
robertodr Jul 29, 2026
d753120
ci: collapse cpp-wide job into package-tests
robertodr Jul 29, 2026
e5d6ee4
fix(copilot): remove unnecessary flag for setup steps
robertodr Jul 29, 2026
8796163
ci: change name of package-tests job
robertodr Jul 29, 2026
b55bc45
ci: merge gcovr steps
robertodr Jul 30, 2026
65d7e2d
chore: clean up justfile
robertodr Jul 30, 2026
94564a4
style: remove double quotes
robertodr Jul 30, 2026
7d15930
chore(cmake): clean up RPATH
robertodr Jul 30, 2026
c7168d7
ci: remove unnecessary option to gcovr
robertodr Jul 30, 2026
6f67888
fix(justfile): local coverage computation
robertodr Jul 30, 2026
8a01600
build: reorganize as object library + shared
robertodr Jul 31, 2026
a192173
build: link unit tests to object library
robertodr Jul 31, 2026
72965c2
build: link libraries, compile definitions duplicated to INTERFACE of…
robertodr Jul 31, 2026
4b44697
ci: create a quality assurance workflow
robertodr Jul 30, 2026
90dac5d
ci: create a quality assurance workflow
robertodr Jul 30, 2026
bcac401
ci: continue-on-error for SonarQube scan step
robertodr Jul 31, 2026
e8a4bb8
ci: clean up unused tokens
robertodr Jul 31, 2026
0d6d104
chore: remove useless continue-on-error for sonar
robertodr Jul 31, 2026
c2b9de0
Merge branch 'main' into chore-dev-single-build-path
ludmilaasb Jul 29, 2026
901bd36
ci: install msgpack@7.0.0 on macos-15
robertodr Jul 29, 2026
a466191
build(cmake): remove redundant target_include_directories
robertodr Jul 29, 2026
1966167
ci: msgpack-cxx 8.0.0 is fine on macos-15
robertodr Jul 29, 2026
deb618d
ci: build path explicitly
robertodr Jul 29, 2026
f29c5e8
chore(cmake): do not install msgpack with the wheel
robertodr Jul 29, 2026
ed5dca2
ci: obtain path to cmake config file with uv
robertodr Jul 29, 2026
ea066b6
chore(cmake): cpmaddpackage msgpack without VERSION
robertodr Jul 29, 2026
32b0f1d
chore(vscode): clean up tasks.json
robertodr Jul 29, 2026
3181d71
chore(deps-dev): remove gcovr
robertodr Jul 29, 2026
80a550a
ci: split coverage collection to its own job
robertodr Jul 29, 2026
694b29e
ci: surface-level cleanup of sonarqube analysis
robertodr Jul 29, 2026
7bdc030
ci(coverage): set build type as env-var
robertodr Jul 29, 2026
88a0589
ci: collapse cpp-checks-other into package-tests
robertodr Jul 29, 2026
0f3c99a
ci: use the c++ linker
robertodr Jul 29, 2026
f4c941d
ci(sonar): adapt to streamlined cmake set up
robertodr Jul 29, 2026
8194b0f
ci: collapse cpp-wide job into package-tests
robertodr Jul 29, 2026
9a5e120
fix(copilot): remove unnecessary flag for setup steps
robertodr Jul 29, 2026
8dba55c
ci: change name of package-tests job
robertodr Jul 29, 2026
6fb8bae
ci: merge gcovr steps
robertodr Jul 30, 2026
01b0ce6
chore: clean up justfile
robertodr Jul 30, 2026
c56b436
style: remove double quotes
robertodr Jul 30, 2026
0da7b98
chore(cmake): clean up RPATH
robertodr Jul 30, 2026
b57d808
ci: remove unnecessary option to gcovr
robertodr Jul 30, 2026
bf3e5b4
fix(justfile): local coverage computation
robertodr Jul 30, 2026
53a4858
build: reorganize as object library + shared
robertodr Jul 31, 2026
c215678
build: link unit tests to object library
robertodr Jul 31, 2026
b7b8267
build: link libraries, compile definitions duplicated to INTERFACE of…
robertodr Jul 31, 2026
d582e87
chore: clean-up .orig leftovers
robertodr Aug 2, 2026
063e226
Merge branch 'main' into ci-split-qa-jobs
robertodr Aug 3, 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
139 changes: 139 additions & 0 deletions .github/workflows/qa-analysis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
name: Quality Assurance

on:
workflow_dispatch:
push:
branches:
- main
# PRs trigger for the "opened", "reopened", "synchronize" events (default) and
# "ready_for_review"
pull_request:
types:
- opened
- reopened
- synchronize # when new commits are pushed to the PR
- ready_for_review # when the PR is un-drafted

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
FORCE_COLOR: 3
COLUMNS: 120
CPM_USE_LOCAL_PACKAGES: "TRUE"

jobs:
code-coverage:
# in combination with the PR types selection, this top-level if statement
# skips running the workflow for Draft PRs
if: ${{ github.event_name == 'push' || !github.event.pull_request.draft || contains(github.event.pull_request.labels.*.name, 'test-in-draft') }}

name: Check code coverage
runs-on: ubuntu-26.04
env:
SKBUILD_CMAKE_BUILD_TYPE: "Coverage"

steps:
- uses: actions/checkout@v7.0.1
with:
fetch-depth: 0

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y libopenmpi-dev openmpi-bin libboost-dev libboost-test-dev libmsgpack-cxx-dev

- name: Install the latest version of uv
uses: astral-sh/setup-uv@v9.0.0
with:
enable-cache: true
python-version: "3.11"

- name: Install package
run: |
uv sync --no-progress --group test --all-extras -v

- name: Run Python tests
run: |
uv run pytest \
--cov=src/monoprop \
--cov-report=xml:python-coverage.xml

- name: Collect coverage (C++ through Python bindings)
run: |
uvx gcovr \
--gcov-executable gcov \
--gcov-ignore-parse-errors \
--exclude-throw-branches \
--exclude-unreachable-branches \
--filter '^(src|include)/' \
--exclude '^tests/' \
--merge-lines \
"build/editable/Coverage" \
--cobertura cpp-coverage-through-python-bindings.xml

- name: Run C++ unit tests
run: |
ctest --test-dir build/editable/Coverage --output-on-failure

- name: Collect coverage (C++ unit tests)
run: |
uvx gcovr \
--gcov-executable gcov \
--gcov-ignore-parse-errors \
--exclude-throw-branches \
--exclude-unreachable-branches \
--filter '^(src|include)/' \
--exclude '^tests/' \
--merge-lines \
"build/editable/Coverage" \
--cobertura cpp-coverage.xml

- name: Upload C++ coverage to Codecov
uses: codecov/codecov-action@v7.0.0
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: python-coverage.xml, cpp-coverage-through-python-bindings.xml, cpp-coverage.xml
flags: cpp
disable_search: true
fail_ci_if_error: true


sonarqube-analysis:
# in combination with the PR types selection, this top-level if statement
# skips running the workflow for Draft PRs
if: ${{ github.event_name == 'push' || !github.event.pull_request.draft || contains(github.event.pull_request.labels.*.name, 'test-in-draft') }}

name: SonarQube analysis
runs-on: ubuntu-26.04
env:
SKBUILD_CMAKE_DEFINE: "monoprop_ENABLE_MPI=ON"

steps:
- uses: actions/checkout@v7.0.1
with:
fetch-depth: 0

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y ninja-build libopenmpi-dev openmpi-bin libboost-dev libboost-test-dev libmsgpack-cxx-dev

- name: Install the latest version of uv
uses: astral-sh/setup-uv@v9.0.0
with:
enable-cache: true
python-version: "3.11"

- name: Install package
run: |
uv sync --no-progress --all-extras -v

- name: SonarQube Scan
uses: SonarSource/sonarqube-scan-action@v8.2.1
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
with:
args: >
-Dsonar.cfamily.compile-commands=build/editable/Release/compile_commands.json
116 changes: 0 additions & 116 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -176,119 +176,3 @@ jobs:
report_type: test_results
disable_search: true
fail_ci_if_error: true

code-coverage:
# in combination with the PR types selection, this top-level if statement
# skips running the workflow for Draft PRs
if: ${{ github.event_name == 'push' || !github.event.pull_request.draft || contains(github.event.pull_request.labels.*.name, 'test-in-draft') }}

name: Check code coverage
runs-on: ubuntu-26.04
env:
SKBUILD_CMAKE_BUILD_TYPE: "Coverage"

steps:
- uses: actions/checkout@v7.0.1
with:
fetch-depth: 0

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y libopenmpi-dev openmpi-bin libboost-dev libboost-test-dev libmsgpack-cxx-dev

- name: Install the latest version of uv
uses: astral-sh/setup-uv@v9.0.0
with:
enable-cache: true
python-version: "3.11"

- name: Install package
run: |
uv sync --no-progress --group test --all-extras -v

- name: Run Python tests
run: |
uv run pytest \
-r aR \
--cov=src/monoprop \
--cov-report=xml:python-coverage.xml \
--durations=50 \
--durations-min=5.0

- name: Collect coverage (C++ through Python bindings)
run: |
uvx gcovr \
--gcov-executable gcov \
--gcov-ignore-parse-errors \
--exclude-throw-branches \
--exclude-unreachable-branches \
--filter '^(src|include)/' \
--exclude '^tests/' \
--merge-lines \
"build/editable/Coverage" \
--cobertura cpp-coverage-through-python-bindings.xml

- name: Run C++ unit tests
run: |
ctest --test-dir build/editable/Coverage --output-on-failure

- name: Collect coverage (C++ unit tests)
run: |
uvx gcovr \
--gcov-executable gcov \
--gcov-ignore-parse-errors \
--exclude-throw-branches \
--exclude-unreachable-branches \
--filter '^(src|include)/' \
--exclude '^tests/' \
--merge-lines \
"build/editable/Coverage" \
--cobertura cpp-coverage.xml

- name: Upload C++ coverage to Codecov
uses: codecov/codecov-action@v7.0.0
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: python-coverage.xml, cpp-coverage-through-python-bindings.xml, cpp-coverage.xml
flags: cpp
disable_search: true
fail_ci_if_error: true

sonarqube-analysis:
# in combination with the PR types selection, this top-level if statement
# skips running the workflow for Draft PRs
if: ${{ github.event_name == 'push' || !github.event.pull_request.draft || contains(github.event.pull_request.labels.*.name, 'test-in-draft') }}

name: SonarQube analysis
runs-on: ubuntu-26.04
env:
SKBUILD_CMAKE_DEFINE: "monoprop_ENABLE_MPI=ON"

steps:
- uses: actions/checkout@v7.0.1
with:
fetch-depth: 0

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y ninja-build libopenmpi-dev openmpi-bin libboost-dev libboost-test-dev libmsgpack-cxx-dev

- name: Install the latest version of uv
uses: astral-sh/setup-uv@v9.0.0
with:
enable-cache: true
python-version: "3.11"

- name: Install package
run: |
uv sync --no-progress --all-extras -v

- name: SonarQube Scan
uses: SonarSource/sonarqube-scan-action@v8.2.1
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
with:
args: >
-Dsonar.cfamily.compile-commands=build/editable/Release/compile_commands.json
Loading