gnucash future: Run coverage tests on ubuntu-26.04.
John Ralls
jralls at code.gnucash.org
Fri Jun 19 19:11:23 EDT 2026
Updated via https://github.com/Gnucash/gnucash/commit/122cb6dc (commit)
from https://github.com/Gnucash/gnucash/commit/24481321 (commit)
commit 122cb6dcca4d27077767373f527c37dd215e17a7
Author: John Ralls <jralls at ceridwen.us>
Date: Wed Jun 17 13:29:36 2026 -0700
Run coverage tests on ubuntu-26.04.
ubuntu-latest isn't latest enough. Recent lcov v2 errors
out if there are no GCDA files in the target directory.
Call it with a shell script that checks first.
diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml
index 36ae190901..2dcd37bc63 100644
--- a/.github/workflows/coverage.yml
+++ b/.github/workflows/coverage.yml
@@ -3,7 +3,7 @@ on: push
permissions: {}
jobs:
coverage:
- runs-on: ubuntu-latest
+ runs-on: ubuntu-26.04
name: C++ Code coverage analysis
continue-on-error: true
env:
@@ -60,7 +60,7 @@ jobs:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
- runs-on: ubuntu-latest
+ runs-on: ubuntu-26.04
steps:
- name: Publish
id: deployment
diff --git a/common/cmake_modules/GncCoverage.cmake b/common/cmake_modules/GncCoverage.cmake
index 64843d1f71..0c06ccc8a0 100644
--- a/common/cmake_modules/GncCoverage.cmake
+++ b/common/cmake_modules/GncCoverage.cmake
@@ -65,15 +65,15 @@ else()
file(GENERATE OUTPUT ${CMAKE_BINARY_DIR}/collect.sh
CONTENT
"#!/bin/bash
-if [ -e $2 ]
- then rm $2
-fi
-j=\"\"
-for i in $1/*.info
-do j=\"$j -a $i\"
-done
-lcov $j -o $2
-"
+ if [ -e $2 ]
+ then rm $2
+ fi
+ j=\"\"
+ for i in $1/*.info
+ do j=\"$j -a $i\"
+ done
+ lcov $j -o $2
+ "
FILE_PERMISSIONS OWNER_EXECUTE OWNER_READ OWNER_WRITE WORLD_EXECUTE)
add_custom_target(lcov-collect
@@ -102,10 +102,27 @@ function (add_coverage_target tgt)
add_dependencies(lcov-initialize lcov-initialize-${tgt})
add_dependencies(lcov-initialize-${tgt} ${tgt})
+ string(REPLACE ";" " " geninfo_flags geninfo_string)
+ string(REPLACE ";" " " generate_flags generate_string)
+
+ set(capture_script "${CMAKE_CURRENT_BINARY_DIR}/capture-${tgt}.sh")
+
+ file(GENERATE OUTPUT "${capture_script}"
+ CONTENT
+ "#!/bin/bash
+ count=$(find \"${target_dir}\" -name '*.gcda' 2>/dev/null | wc -l)
+ if [ \"$count\" -gt 0 ]; then
+ lcov ${geninfo_string} ${generate_string} -c --directory \"${target_dir}\" -o \"${coverage_dir}/${tgt}_result.info\"
+ else #Nothing for lcov to do, make a dummy result.info
+ touch \"${coverage_dir}/${tgt}_result.info\"
+ fi
+ "
+ FILE_PERMISSIONS OWNER_EXECUTE OWNER_READ OWNER_WRITE WORLD_EXECUTE)
+
add_custom_target(lcov-collect-${tgt}
- COMMAND lcov ${geninfo_flags} ${generate_flags} -c --directory ${target_dir} -o "${coverage_dir}/${tgt}_result.info"
- VERBATIM
- COMMAND_EXPAND_LISTS)
+ COMMAND ${CMAKE_COMMAND} -E env "${capture_script}"
+ DEPENDS "${capture_script}"
+ VERBATIM)
add_dependencies(lcov-collect lcov-collect-${tgt})
set_target_properties(${tgt} PROPERTIES ADDITIONAL_CLEAN_FILES "${coverage_dir}/${tgt}_base.info;${coverage_dir}/${tgt}_result.info")
endFunction()
Summary of changes:
.github/workflows/coverage.yml | 4 ++--
common/cmake_modules/GncCoverage.cmake | 41 ++++++++++++++++++++++++----------
2 files changed, 31 insertions(+), 14 deletions(-)
More information about the gnucash-changes
mailing list