From ced74a5667551c2bfd8700b8dd7747f2b5bef480 Mon Sep 17 00:00:00 2001 From: Sergey Bronnikov Date: Tue, 15 Jul 2025 13:12:57 +0300 Subject: [PATCH 1/3] cmake: fix code coverage with ENABLE_LAPI_TESTS Running tests is failed when CMake options `ENABLE_LAPI_TESTS` and `ENABLE_COV` are enabled. The patch enables C/C++ flags related to code coverage for luzer, this prevents an error on loading luzer_impl.so due to undefined symbol `llvm_gcda_summary_info`. --- cmake/BuildLuzer.cmake | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/cmake/BuildLuzer.cmake b/cmake/BuildLuzer.cmake index a55e7ce..292227b 100644 --- a/cmake/BuildLuzer.cmake +++ b/cmake/BuildLuzer.cmake @@ -17,6 +17,14 @@ list(APPEND LUZER_CMAKE_FLAGS "-DLUA_INCLUDE_DIR=${LUA_INCLUDE_DIR}" "-DLUA_LIBRARIES=${LUA_LIBRARIES_LOCATION}" ) +# Prevents an error on loading `luzer_impl.so` due to undefined +# symbol `llvm_gcda_summary_info`. +if(ENABLE_COV) + list(APPEND LUZER_CMAKE_FLAGS + -DCMAKE_C_FLAGS=-fprofile-instr-generate + -DCMAKE_CXX_FLAGS=-fprofile-instr-generate + ) +endif() if(USE_LUAJIT) list(APPEND LUZER_CMAKE_FLAGS "-DLUAJIT_FRIENDLY_MODE=ON" From 7d1001e0e7b31ba208cfc555584f9c3c16e0ff50 Mon Sep 17 00:00:00 2001 From: Sergey Bronnikov Date: Tue, 15 Jul 2025 13:10:17 +0300 Subject: [PATCH 2/3] cmake: fix code coverage module - Add `LUA_SOURCE_DIR` to BuildLuaJIT.cmake, becuase it is used in CodeCoverage.cmake. - Fix deprecated gcovr options: `--branches` [1] and `--sort-percentage` [2]. 1. https://gcovr.com/en/stable/manpage.html#cmdoption-gcovr-b 2. https://gcovr.com/en/stable/manpage.html#cmdoption-gcovr-p --- cmake/BuildLuaJIT.cmake | 1 + cmake/CodeCoverage.cmake | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/cmake/BuildLuaJIT.cmake b/cmake/BuildLuaJIT.cmake index 021b3d5..28630f2 100644 --- a/cmake/BuildLuaJIT.cmake +++ b/cmake/BuildLuaJIT.cmake @@ -130,6 +130,7 @@ macro(build_luajit LJ_VERSION) set(LUA_LIBRARIES bundled-liblua) set(LUA_INCLUDE_DIR ${LJ_SOURCE_DIR}/src/) set(LUA_VERSION_STRING "LuaJIT ${LJ_VERSION}") + set(LUA_SOURCE_DIR ${LJ_SOURCE_DIR}) unset(LJ_SOURCE_DIR) unset(LJ_BINARY_DIR) diff --git a/cmake/CodeCoverage.cmake b/cmake/CodeCoverage.cmake index 0ec887f..9d004cf 100644 --- a/cmake/CodeCoverage.cmake +++ b/cmake/CodeCoverage.cmake @@ -18,7 +18,7 @@ endif() # See https://gcovr.com/en/stable/manpage.html. set(GCOVR_OPTIONS - --branches + --txt-metric branch --cobertura ${COVERAGE_XML_REPORT} --decisions --gcov-executable "llvm-cov gcov" @@ -29,7 +29,7 @@ set(GCOVR_OPTIONS --output ${COVERAGE_HTML_REPORT} --print-summary --root ${LUA_SOURCE_DIR} - --sort-percentage + --sort-key uncovered-percent ) if(USE_LUA) From b07e36e23a4da631c8e06570e3392d6e51117176 Mon Sep 17 00:00:00 2001 From: Sergey Bronnikov Date: Tue, 22 Jul 2025 18:26:32 +0300 Subject: [PATCH 3/3] ci: enable code coverage option Build tests with enabled `ENABLE_COV` CMake option. Follows up commit "cmake: fix code coverage with ENABLE_LAPI_TESTS". --- .github/workflows/test.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index e2629e3..4561025 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -69,6 +69,7 @@ jobs: cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ \ -DUSE_LUA=ON -DENABLE_BUILD_PROTOBUF=OFF \ -DENABLE_INTERNAL_TESTS=ON -DENABLE_LAPI_TESTS=ON \ + -DENABLE_COV=ON \ -G Ninja -S . -B build if: ${{ matrix.LUA == 'lua' }} @@ -77,6 +78,7 @@ jobs: cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ \ -DUSE_LUAJIT=ON -DENABLE_BUILD_PROTOBUF=OFF \ -DENABLE_INTERNAL_TESTS=ON -DENABLE_LAPI_TESTS=ON \ + -DENABLE_COV=ON \ -G Ninja -S . -B build if: ${{ matrix.LUA == 'luajit' }}