From 2b19d0980e2448c5ffd6d16a4bd636f748463f31 Mon Sep 17 00:00:00 2001 From: "yonghao.fyh" Date: Mon, 2 Nov 2026 15:29:28 +0800 Subject: [PATCH 1/3] fix(coverage): filter non-project sources from coverage report --- test/generate_coverage.sh | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/test/generate_coverage.sh b/test/generate_coverage.sh index c3bfba676..ac7344835 100755 --- a/test/generate_coverage.sh +++ b/test/generate_coverage.sh @@ -20,10 +20,25 @@ set -e cd $(dirname "$0")/../ mkdir -p build && cd build -cmake ../ -DCMAKE_BUILD_TYPE=Debug -DPAIMON_BUILD_TESTS=ON -DPAIMON_USE_ASAN=ON -DPAIMON_GENERATE_COVERAGE=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON +cmake ../ -DCMAKE_BUILD_TYPE=Debug -DPAIMON_BUILD_TESTS=ON -DPAIMON_USE_ASAN=ON -DPAIMON_GENERATE_COVERAGE=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ + -DPAIMON_ENABLE_AVRO=ON -DPAIMON_ENABLE_ORC=ON \ + -DPAIMON_ENABLE_MOSAIC=ON -DPAIMON_ENABLE_LANCE=ON -DPAIMON_ENABLE_VORTEX=ON make -j make test lcov --capture --directory src/paimon --directory test --output-file coverage.info +# Keep only project implementation code in the report: drop system headers, +# third-party dependencies from the build tree and third_party/, and test +# sources (*_test.cpp, test helpers, mocks). +lcov --remove coverage.info \ + '/usr/*' \ + '*/build*/*' \ + '*/third_party/*' \ + '*_test.cpp' \ + '*/test/*' \ + '*/testing/*' \ + '*mock*' \ + --output-file coverage_filtered.info +mv coverage_filtered.info coverage.info genhtml coverage.info --output-directory coverage ip=$(hostname -I | awk '{print $1}') From dbb2278b28a97b16364278d1233ed8b1fe171be7 Mon Sep 17 00:00:00 2001 From: "yonghao.fyh" Date: Tue, 3 Nov 2026 10:31:56 +0800 Subject: [PATCH 2/3] fix(coverage): preserve sources under build-like checkout paths --- test/generate_coverage.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/generate_coverage.sh b/test/generate_coverage.sh index ac7344835..1413e1f43 100755 --- a/test/generate_coverage.sh +++ b/test/generate_coverage.sh @@ -29,14 +29,17 @@ lcov --capture --directory src/paimon --directory test --output-file coverage.in # Keep only project implementation code in the report: drop system headers, # third-party dependencies from the build tree and third_party/, and test # sources (*_test.cpp, test helpers, mocks). +# PWD is the build directory; do not match checkout ancestors such as /builds/. +# Exclusion patterns can overlap or be absent, so unused patterns are nonfatal. lcov --remove coverage.info \ '/usr/*' \ - '*/build*/*' \ + "$PWD/*" \ '*/third_party/*' \ '*_test.cpp' \ '*/test/*' \ '*/testing/*' \ '*mock*' \ + --ignore-errors unused \ --output-file coverage_filtered.info mv coverage_filtered.info coverage.info genhtml coverage.info --output-directory coverage From 8208bd8cbbd24fffbf67a0da58581644e77e4c81 Mon Sep 17 00:00:00 2001 From: "yonghao.fyh" Date: Tue, 3 Nov 2026 10:58:45 +0800 Subject: [PATCH 3/3] fix(coverage): anchor exclusions to repository paths --- test/generate_coverage.sh | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/test/generate_coverage.sh b/test/generate_coverage.sh index 1413e1f43..9f5298c35 100755 --- a/test/generate_coverage.sh +++ b/test/generate_coverage.sh @@ -18,7 +18,8 @@ set -e -cd $(dirname "$0")/../ +cd "$(dirname "$0")/../" +repo_root=$PWD mkdir -p build && cd build cmake ../ -DCMAKE_BUILD_TYPE=Debug -DPAIMON_BUILD_TESTS=ON -DPAIMON_USE_ASAN=ON -DPAIMON_GENERATE_COVERAGE=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ -DPAIMON_ENABLE_AVRO=ON -DPAIMON_ENABLE_ORC=ON \ @@ -29,16 +30,17 @@ lcov --capture --directory src/paimon --directory test --output-file coverage.in # Keep only project implementation code in the report: drop system headers, # third-party dependencies from the build tree and third_party/, and test # sources (*_test.cpp, test helpers, mocks). -# PWD is the build directory; do not match checkout ancestors such as /builds/. +# Anchor exclusions to repository paths so checkout ancestors cannot match. +# PWD is the build directory; mocks outside testing/ are listed explicitly. # Exclusion patterns can overlap or be absent, so unused patterns are nonfatal. lcov --remove coverage.info \ '/usr/*' \ "$PWD/*" \ - '*/third_party/*' \ - '*_test.cpp' \ - '*/test/*' \ - '*/testing/*' \ - '*mock*' \ + "$repo_root/third_party/*" \ + "$repo_root/*_test.cpp" \ + "$repo_root/test/*" \ + "$repo_root/src/paimon/testing/*" \ + "$repo_root/src/paimon/rest/mock_rest_server.*" \ --ignore-errors unused \ --output-file coverage_filtered.info mv coverage_filtered.info coverage.info