From 663ca889e2f0da1508758a7ee37048b8fa139976 Mon Sep 17 00:00:00 2001 From: Kai Szuttor Date: Fri, 17 Jul 2020 11:01:36 +0200 Subject: [PATCH] maintainer: coverage for integration tests. --- .codecov.yml | 5 +++++ .coveragerc | 2 ++ .gitlab-ci.yml | 4 ++-- maintainer/CI/build_cmake.sh | 5 +++-- src/python/pypresso.cmakein | 4 ++++ testsuite/python/CMakeLists.txt | 9 +++++++-- 6 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 .coveragerc diff --git a/.codecov.yml b/.codecov.yml index 06feb9da5a..1d3d913834 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -14,6 +14,11 @@ coverage: status: project: default: false + integration_tests: + paths: + - testsuite/python/ + enabled: yes + threshold: 1% tests: paths: - src/core/unit_tests/ diff --git a/.coveragerc b/.coveragerc new file mode 100644 index 0000000000..65b8b2a968 --- /dev/null +++ b/.coveragerc @@ -0,0 +1,2 @@ +[run] +parallel = True diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5cfe16c18e..1a2735b3a6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: docker.pkg.github.com/espressomd/docker/ubuntu-20.04:700579881dceba20fa27ec476a4b4e0746b72683 +image: docker.pkg.github.com/espressomd/docker/ubuntu-20.04:8a7d258889d87dcc9c96a200784b30b532d45b33 stages: - prepare @@ -221,7 +221,7 @@ cuda10-maxset: cuda9-maxset: <<: *global_job_definition stage: build - image: docker.pkg.github.com/espressomd/docker/ubuntu-18.04:d496478230db4e5c286680e3bdc1621af1fccffc + image: docker.pkg.github.com/espressomd/docker/ubuntu-18.04:8a7d258889d87dcc9c96a200784b30b532d45b33 variables: CC: 'gcc-6' CXX: 'g++-6' diff --git a/maintainer/CI/build_cmake.sh b/maintainer/CI/build_cmake.sh index fa351b7ac8..4fa68cd457 100755 --- a/maintainer/CI/build_cmake.sh +++ b/maintainer/CI/build_cmake.sh @@ -289,11 +289,12 @@ if [ "${with_coverage}" = true ]; then lcov --gcov-tool "${GCOV:-gcov}" -q --directory . --ignore-errors graph --capture --output-file coverage.info # capture coverage info lcov --gcov-tool "${GCOV:-gcov}" -q --remove coverage.info '/usr/*' --output-file coverage.info # filter out system lcov --gcov-tool "${GCOV:-gcov}" -q --remove coverage.info '*/doc/*' --output-file coverage.info # filter out docs + python3 -m coverage combine testsuite/python # Uploading report to Codecov if [ -z "${CODECOV_TOKEN}" ]; then - bash <(curl -s https://codecov.io/bash) -X gcov || echo "Codecov did not collect coverage reports" + bash <(curl -s https://codecov.io/bash) || echo "Codecov did not collect coverage reports" else - bash <(curl -s https://codecov.io/bash) -t "${CODECOV_TOKEN}" -X gcov || echo "Codecov did not collect coverage reports" + bash <(curl -s https://codecov.io/bash) -t "${CODECOV_TOKEN}" || echo "Codecov did not collect coverage reports" fi fi diff --git a/src/python/pypresso.cmakein b/src/python/pypresso.cmakein index d75fef4cd1..ca9d41c21b 100755 --- a/src/python/pypresso.cmakein +++ b/src/python/pypresso.cmakein @@ -59,6 +59,10 @@ case "$1" in shift exec lldb -- "@PYTHON_FRONTEND@" "$@" ;; + --coverage) + shift + exec @PYTHON_EXECUTABLE@ -m coverage run --source=@CMAKE_BINARY_DIR@/testsuite/python --rcfile="@PROJECT_SOURCE_DIR@/.coveragerc" "$@" + ;; --valgrind) shift exec valgrind --leak-check=full "@PYTHON_FRONTEND@" "$@" diff --git a/testsuite/python/CMakeLists.txt b/testsuite/python/CMakeLists.txt index f98094a6ed..44a8f2cda8 100644 --- a/testsuite/python/CMakeLists.txt +++ b/testsuite/python/CMakeLists.txt @@ -22,15 +22,20 @@ function(PYTHON_TEST) set(TEST_NUM_PROC ${TEST_MAX_NUM_PROC}) endif() + if(WITH_COVERAGE) + set(PYPRESSO_OPTIONS --coverage) + endif(WITH_COVERAGE) + if(EXISTS ${MPIEXEC}) add_test( NAME ${TEST_NAME} COMMAND ${MPIEXEC} ${MPIEXEC_OVERSUBSCRIBE} ${MPIEXEC_NUMPROC_FLAG} ${TEST_NUM_PROC} ${MPIEXEC_PREFLAGS} ${CMAKE_BINARY_DIR}/pypresso - ${TEST_FILE} ${MPIEXEC_POSTFLAGS}) + ${PYPRESSO_OPTIONS} ${TEST_FILE} ${MPIEXEC_POSTFLAGS}) else() - add_test(${TEST_NAME} ${CMAKE_BINARY_DIR}/pypresso ${TEST_FILE}) + add_test(${TEST_NAME} ${CMAKE_BINARY_DIR}/pypresso ${PYPRESSO_OPTIONS} + ${TEST_FILE}) endif() set_tests_properties(${TEST_NAME} PROPERTIES PROCESSORS ${TEST_NUM_PROC} DEPENDS "${TEST_DEPENDS}")