# Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 DISTUTILS_USE_PEP517=setuptools PYTHON_COMPAT=( python3_{10..12} ) inherit toolchain-funcs distutils-r1 DESCRIPTION="A Python script for summarizing gcov data" HOMEPAGE="https://github.com/gcovr/gcovr" SRC_URI="https://github.com/gcovr/gcovr/archive/${PV}.tar.gz -> ${P}.gh.tar.gz" LICENSE="BSD" SLOT="0" KEYWORDS="~amd64 ~x86" RDEPEND=" dev-python/jinja[${PYTHON_USEDEP}] dev-python/lxml[${PYTHON_USEDEP}] dev-python/colorlog[${PYTHON_USEDEP}] dev-python/pygments[${PYTHON_USEDEP}] dev-python/tomli[${PYTHON_USEDEP}] " BDEPEND=" test? ( dev-python/pytest-timeout[${PYTHON_USEDEP}] dev-python/yaxmldiff[${PYTHON_USEDEP}] ) " distutils_enable_tests pytest python_test() { local -x PATH="${TEST_DIR}/scripts:${PATH}" \ PYTHONPATH="${TEST_DIR}/lib" # these tests assume gcc-8, and fail with newer gcc versions local -a test_build_deselect=( "add_coverages-coveralls" "add_coverages-html" "add_coverages-html" "bad++char-coveralls" "bad++char-html" "calls-html" "cmake_oos-coveralls" "cmake_oos-html" "cmake_oos_ninja-coveralls" "cmake_oos_ninja-html" "coexisting_object_directories-from_build_dir-cobertura" "coexisting_object_directories-from_build_dir-html" "coexisting_object_directories-from_build_dir-without_object_dir-cobertura" "coexisting_object_directories-from_build_dir-without_object_dir-html" "coexisting_object_directories-from_build_dir-without_object_dir-sonarqube" "coexisting_object_directories-from_build_dir-without_object_dir-txt" "coexisting_object_directories-from_build_dir-without_search_dir-cobertura" "coexisting_object_directories-from_build_dir-without_search_dir-html" "coexisting_object_directories-from_build_dir-without_search_dir-sonarqube" "coexisting_object_directories-from_build_dir-without_search_dir-txt" "coexisting_object_directories-from_root_dir-cobertura" "coexisting_object_directories-from_root_dir-html" "coexisting_object_directories-from_root_dir-without_object_dir-cobertura" "coexisting_object_directories-from_root_dir-without_object_dir-html" "coexisting_object_directories-from_root_dir-without_object_dir-sonarqube" "coexisting_object_directories-from_root_dir-without_object_dir-txt" "coexisting_object_directories-from_root_dir-without_search_dir-cobertura" "coexisting_object_directories-from_root_dir-without_search_dir-html" "coexisting_object_directories-from_root_dir-without_search_dir-sonarqube" "coexisting_object_directories-from_root_dir-without_search_dir-txt" "config-output-html" "config-toml-html" "config-toml-txt" "decisions-html" "decisions-json" "decisions-neg-delta-html" "different-function-lines-separate-coveralls" "different-function-lines-separate-html" "different-function-lines-use-0-coveralls" "different-function-lines-use-0-html" "different-function-lines-use-max-coveralls" "different-function-lines-use-max-html" "different-function-lines-use-min-coveralls" "different-function-lines-use-min-html" "dot-coveralls" "dot-html" "excl-branch-coveralls" "excl-branch-html" "excl-line-branch-coveralls" "excl-line-branch-html" "excl-line-coveralls" "excl-line-custom-coveralls" "excl-line-custom-html" "excl-line-html" "exclude-directories-relative-coveralls" "exclude-directories-relative-html" "exclude-lines-by-pattern-coveralls" "exclude-lines-by-pattern-html" "exclude-relative-coveralls" "exclude-relative-from-unfiltered-tracefile-html" "exclude-relative-html" "exclude-throw-branches-cobertura" "exclude-throw-branches-coveralls" "exclude-throw-branches-html" "exclude-throw-branches-jacoco" "exclude-throw-branches-json" "exclude-throw-branches-lcov" "exclude-throw-branches-sonarqube" "exclude-throw-branches-txt" "filter-absolute-coveralls" "filter-absolute-from-unfiltered-tracefile-html" "filter-absolute-html" "filter-relative-coveralls" "filter-relative-from-unfiltered-tracefile-html" "filter-relative-html" "filter-relative-lib-coveralls" "filter-relative-lib-from-unfiltered-tracefile-html" "filter-relative-lib-html" "html-css-html" "html-default-html" "html-encoding-cp1252-html" "html-encoding-iso-8859-15-html" "html-high-100-html" "html-high-75-html" "html-line-branch-html" "html-medium-100-high-100-html" "html-medium-50-html" "html-nested-filter-html" "html-nested-nonsort-html" "html-nested-sort-casefold-html" "html-nested-sort-percentage-html" "html-nested-sort-uncovered-html" "html-source-encoding-cp1252-html" "html-source-encoding-utf8-html" "html-tab-size-2-html" "html-template-dir-html" "html-themes-github-html" "html-themes-html" "html-title-html" "linked-coveralls" "linked-html" "nested-coveralls" "nested-html" "nested2-coveralls" "nested2-coveralls" "nested2-html" "nested2-html" "nested2-use-existing-coveralls" "nested2-use-existing-html" "nested3-coveralls" "no-markers-html" "nobranch-coveralls" "nobranch-html" "noncode-coveralls" "noncode-html" "oos-coveralls" "oos-html" "oos2-coveralls" "oos2-html" "rounding-html" "shadow-coveralls" "shadow-html" "shared_lib-coveralls" "shared_lib-html" "simple1-coveralls" "simple1-dir-coveralls" "simple1-dir-html" "simple1-html" "simple1-stdout-coveralls" "simple1-stdout-html" "sort-percentage-html" "sort-uncovered-html" "source_from_pipe-cobertura" "source_from_pipe-coveralls" "source_from_pipe-html" "source_from_pipe-lcov" "subfolder-includes-html" "threaded-coveralls" "threaded-html" "update-data-coveralls" "update-data-html" "use-existing-coveralls" "use-existing-html" "wspace-coveralls" "wspace-html" ) local cc cc_ver cc="$(tc-get-compiler-type)" case "${cc}" in gcc) cc_ver="$(gcc-major-version)" # a bunch of tests are broken on gcc-14 # https://bugs.gentoo.org/930680 if [[ $(gcc-major-version) -ge 14 ]]; then test_build_deselect+=( "calls-json" "decisions-neg-delta-json" "different-function-lines-separate-lcov" "different-function-lines-use-0-lcov" "different-function-lines-use-max-lcov" "different-function-lines-use-min-lcov" "dot-lcov" "excl-branch-lcov" "excl-line-json" "excl-line-lcov" "excl-line-branch-lcov" "excl-line-custom-lcov" "exclude-directories-relative-lcov" "exclude-lines-by-pattern-lcov" "exclude-relative-lcov" "exclude-relative-from-unfiltered-tracefile-lcov" "filter-absolute-lcov" "filter-absolute-from-unfiltered-tracefile-lcov" "filter-relative-lcov" "filter-relative-from-unfiltered-tracefile-lcov" "filter-relative-lib-lcov" "filter-relative-lib-from-unfiltered-tracefile-lcov" "linked-lcov" "nested-lcov" "nested2-lcov" "nested3-lcov" "no-markers-json" "no-markers-lcov" "noncode-json" "noncode-lcov" "oos-lcov" "oos2-lcov" "shadow-json" "simple1-txt" "simple1-json" "simple1-dir-json" "simple1-stdout-json" "simple1-stdout-lcov" "threaded-lcov" "update-data-lcov" "wspace-lcov" ) fi ;; clang) cc_ver="$(clang-major-version)";; # placeholder since tests need CC_REFERENCE to be string-number *) cc_ver=1;; esac readarray -t EPYTEST_DESELECT < <(printf 'gcovr/tests/test_gcovr.py::test_build[%s]\n' "${test_build_deselect[@]}") EPYTEST_DESELECT+=( # tests that don't work in the ebuild environment gcovr/tests/test_args.py::test_html_template_dir gcovr/tests/test_args.py::test_multiple_output_formats_to_stdout gcovr/tests/test_args.py::test_multiple_output_formats_to_stdout_1 ) local -x CC_REFERENCE="${cc}-${cc_ver}" epytest gcovr }