mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-13 07:56:17 +01:00
ci: Add lcov configuration to ignore g_return_*if_fail()/g_assert*()
While we can’t add markers to the macro implementations to cause lcov to ignore them automatically, we can change our lcov configuration to ignore all calls to them. See https://github.com/linux-test-project/lcov/issues/44. This causes all the un-takeable branches and un-reachable assertions to be ignored by our code coverage, which bumps our statistics: • Lines: 74.9% → 74.8% • Functions: 82.3% → 82.3% • Branches: 53.3% → 64.2% The rationale is that nobody should be testing programmer error handling, as g_return_*if_fail() are used to guard against — so it’s not reasonable to count missed branches like that in code coverage statistics. Signed-off-by: Philip Withnall <withnall@endlessm.com>
This commit is contained in:
parent
96c653265f
commit
8efe28c570
@ -24,9 +24,9 @@ fedora-x86_64:
|
|||||||
- meson ${MESON_COMMON_OPTIONS} --werror -Dsystemtap=true -Ddtrace=true -Dfam=true _build
|
- meson ${MESON_COMMON_OPTIONS} --werror -Dsystemtap=true -Ddtrace=true -Dfam=true _build
|
||||||
- ninja -C _build
|
- ninja -C _build
|
||||||
- mkdir -p _coverage
|
- mkdir -p _coverage
|
||||||
- lcov --rc lcov_branch_coverage=1 --directory _build --capture --initial --output-file "_coverage/${CI_JOB_NAME}-baseline.lcov"
|
- lcov --config-file .gitlab-ci/lcovrc --directory _build --capture --initial --output-file "_coverage/${CI_JOB_NAME}-baseline.lcov"
|
||||||
- meson test -C _build --timeout-multiplier ${MESON_TEST_TIMEOUT_MULTIPLIER}
|
- meson test -C _build --timeout-multiplier ${MESON_TEST_TIMEOUT_MULTIPLIER}
|
||||||
- lcov --rc lcov_branch_coverage=1 --directory _build --capture --output-file "_coverage/${CI_JOB_NAME}.lcov"
|
- lcov --config-file .gitlab-ci/lcovrc --directory _build --capture --output-file "_coverage/${CI_JOB_NAME}.lcov"
|
||||||
artifacts:
|
artifacts:
|
||||||
name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
|
name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
|
||||||
when: always
|
when: always
|
||||||
|
@ -7,14 +7,14 @@ python3 ./.gitlab-ci/fixup-cov-paths.py _coverage/*.lcov
|
|||||||
|
|
||||||
for path in _coverage/*.lcov; do
|
for path in _coverage/*.lcov; do
|
||||||
# Remove coverage from generated code in the build directory
|
# Remove coverage from generated code in the build directory
|
||||||
lcov --rc lcov_branch_coverage=1 -r "${path}" '*/_build/*' -o "$(pwd)/${path}"
|
lcov --config-file .gitlab-ci/lcovrc -r "${path}" '*/_build/*' -o "$(pwd)/${path}"
|
||||||
# Remove any coverage from system files
|
# Remove any coverage from system files
|
||||||
lcov --rc lcov_branch_coverage=1 -e "${path}" "$(pwd)/*" -o "$(pwd)/${path}"
|
lcov --config-file .gitlab-ci/lcovrc -e "${path}" "$(pwd)/*" -o "$(pwd)/${path}"
|
||||||
done
|
done
|
||||||
|
|
||||||
genhtml \
|
genhtml \
|
||||||
--ignore-errors=source \
|
--ignore-errors=source \
|
||||||
--rc lcov_branch_coverage=1 \
|
--config-file .gitlab-ci/lcovrc \
|
||||||
_coverage/*.lcov \
|
_coverage/*.lcov \
|
||||||
-o _coverage/coverage
|
-o _coverage/coverage
|
||||||
|
|
||||||
|
13
.gitlab-ci/lcovrc
Normal file
13
.gitlab-ci/lcovrc
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# lcov and genhtml configuration
|
||||||
|
# See http://ltp.sourceforge.net/coverage/lcov/lcovrc.5.php
|
||||||
|
|
||||||
|
# Always enable branch coverage
|
||||||
|
lcov_branch_coverage = 1
|
||||||
|
|
||||||
|
# Exclude precondition assertions, as we can never reasonably get full branch
|
||||||
|
# coverage of them, as they should never normally fail.
|
||||||
|
# See https://github.com/linux-test-project/lcov/issues/44
|
||||||
|
lcov_excl_br_line = LCOV_EXCL_BR_LINE|g_return_if_fail|g_return_val_if_fail|g_assert|g_assert_
|
||||||
|
|
||||||
|
# Similarly for unreachable assertions.
|
||||||
|
lcov_excl_line = LCOV_EXCL_LINE|g_return_if_reached|g_return_val_if_reached|g_assert_not_reached
|
@ -44,7 +44,7 @@ ninja
|
|||||||
|
|
||||||
"${LCOV}" \
|
"${LCOV}" \
|
||||||
--quiet \
|
--quiet \
|
||||||
--rc lcov_branch_coverage=1 \
|
--config-file .gitlab-ci/lcovrc \
|
||||||
--directory "${DIR}/_build" \
|
--directory "${DIR}/_build" \
|
||||||
--capture \
|
--capture \
|
||||||
--initial \
|
--initial \
|
||||||
@ -55,7 +55,7 @@ meson test --timeout-multiplier ${MESON_TEST_TIMEOUT_MULTIPLIER} || true
|
|||||||
|
|
||||||
"${LCOV}" \
|
"${LCOV}" \
|
||||||
--quiet \
|
--quiet \
|
||||||
--rc lcov_branch_coverage=1 \
|
--config-file .gitlab-ci/lcovrc \
|
||||||
--directory "${DIR}/_build" \
|
--directory "${DIR}/_build" \
|
||||||
--capture \
|
--capture \
|
||||||
--output-file "${DIR}/_coverage/${CI_JOB_NAME}.lcov"
|
--output-file "${DIR}/_coverage/${CI_JOB_NAME}.lcov"
|
||||||
|
Loading…
Reference in New Issue
Block a user