#!/bin/bash set -ex # Fixup Windows paths python3 ./.gitlab-ci/fixup-cov-paths.py _coverage/*.lcov for path in _coverage/*.lcov; do # Remove coverage from generated code in the build directory lcov --config-file .lcovrc -r "${path}" '*/_build/*' -o "$(pwd)/${path}" # Remove any coverage from system files lcov --config-file .lcovrc -e "${path}" "$(pwd)/*" -o "$(pwd)/${path}" # Remove coverage from the fuzz tests, since they are run on a separate CI system lcov --config-file .lcovrc -r "${path}" "*/fuzzing/*" -o "$(pwd)/${path}" # Remove coverage from copylibs and subprojects for lib in xdgmime libcharset gnulib; do lcov --config-file .lcovrc -r "${path}" "*/${lib}/*" -o "$(pwd)/${path}" done # Convert to cobertura format for gitlab integration cobertura_base="${path/.lcov}-cobertura" cobertura_xml="${cobertura_base}.xml" lcov_cobertura "${path}" --output "${cobertura_xml}" mkdir -p "${cobertura_base}" cobertura-split-by-package.py "${cobertura_xml}" "${cobertura_base}" rm -f "${cobertura_xml}" done genhtml \ --ignore-errors=source \ --config-file .lcovrc \ _coverage/*.lcov \ -o _coverage/coverage cd _coverage rm -f ./*.lcov cat >index.html < EOL # Print a handy link to the coverage report echo "Coverage report at: https://${CI_PROJECT_NAMESPACE}.pages.gitlab.gnome.org/-/${CI_PROJECT_NAME}/-/jobs/${CI_BUILD_ID}/artifacts/_coverage/coverage/index.html"