From 27603b0eb1fd603cfae2e8faf338cbd008e6713f Mon Sep 17 00:00:00 2001 From: Lars Bilke <lars.bilke@ufz.de> Date: Fri, 11 Dec 2020 10:03:13 +0100 Subject: [PATCH] [CMake] Better ctest dependency handling. Allows for e.g. utils only tests with: ``` -DOGS_BUILD_UTILS=ON -DOGS_BUILD_CLI=OFF ``` EXECUTABLE argument is now required on AddTest(). --- Applications/Utils/Tests.cmake | 3 +++ Tests/CMakeLists.txt | 9 +++++++++ scripts/cmake/ProcessesSetup.cmake | 3 +++ scripts/cmake/test/AddTest.cmake | 13 ++++++++----- scripts/cmake/test/Test.cmake | 6 ------ 5 files changed, 23 insertions(+), 11 deletions(-) diff --git a/Applications/Utils/Tests.cmake b/Applications/Utils/Tests.cmake index ef19eaa01af..9834ef9e50f 100644 --- a/Applications/Utils/Tests.cmake +++ b/Applications/Utils/Tests.cmake @@ -321,6 +321,9 @@ if(PARSL AND NOT OGS_USE_MPI) set_tests_properties(parsl_ExtractBoundary PROPERTIES DEPENDS snakemake_ExtractBoundary) endif() endif() +if(SNAKEMAKE OR PARSL) + add_dependencies(ctest ExtractBoundary) +endif() AddTest( NAME partmesh_with_field_data diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 781ba82d01a..839c744031d 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -3,6 +3,15 @@ if(OGS_USE_XDMF) add_subdirectory(xdmfdiff) endif() +### ctest dependencies +foreach(tool vtkdiff xdmfdiff) + if(TARGET ${tool}) + list(APPEND test_dependencies ${tool}) + endif() +endforeach() +add_dependencies(ctest ${test_dependencies}) +add_dependencies(ctest-large ${test_dependencies}) + ### testrunner ### include(${PROJECT_SOURCE_DIR}/scripts/cmake/OGSEnabledElements.cmake) diff --git a/scripts/cmake/ProcessesSetup.cmake b/scripts/cmake/ProcessesSetup.cmake index 13891791ed8..2396068b695 100644 --- a/scripts/cmake/ProcessesSetup.cmake +++ b/scripts/cmake/ProcessesSetup.cmake @@ -33,6 +33,9 @@ set(OGS_BUILD_PROCESSES CACHE STRING "Semicolon-separated list of processes to build") if(NOT OGS_BUILD_CLI) set(OGS_BUILD_PROCESSES OFF "" CACHE INTERNAL "") + message(STATUS "ATTENTION: OGS_BUILD_CLI=OFF -> OGS_BUILD_PROCESSES is set to OFF too.\n" + " If cli is switched on again, remember to switch processes back to on \n" + " too with -DOGS_BUILD_PROCESSES=\"\"!") endif() if(NOT "${OGS_BUILD_PROCESSES}" STREQUAL "") if(${OGS_BUILD_PROCESSES}) diff --git a/scripts/cmake/test/AddTest.cmake b/scripts/cmake/test/AddTest.cmake index ddca63d31ba..98dc13fffbf 100644 --- a/scripts/cmake/test/AddTest.cmake +++ b/scripts/cmake/test/AddTest.cmake @@ -60,7 +60,7 @@ function (AddTest) # set defaults if(NOT DEFINED AddTest_EXECUTABLE) - set(AddTest_EXECUTABLE ogs) + message(FATAL_ERROR "Test ${AddTest_NAME}: No EXECUTABLE set!") endif() if (NOT DEFINED AddTest_REQUIREMENTS) set(AddTest_REQUIREMENTS TRUE) @@ -82,6 +82,11 @@ function (AddTest) endif() # --- Implement wrappers --- + # check if exe is part of build + if(NOT TARGET ${AddTest_EXECUTABLE}) + set(DISABLED_TESTS_LOG "${DISABLED_TESTS_LOG}\nTest exe ${AddTest_EXECUTABLE} not built! Disabling test ${AddTest_NAME}." CACHE INTERNAL "") + return() + endif() # check requirements, disable if not met if(${AddTest_REQUIREMENTS}) message(DEBUG "Enabling test ${AddTest_NAME}.") @@ -285,10 +290,8 @@ Use six arguments version of AddTest with absolute and relative tolerances") LABELS "${DIR_LABELS}" ) - if(NOT "${AddTest_EXECUTABLE}" STREQUAL "ogs" AND TARGET ${AddTest_EXECUTABLE}) - add_dependencies(ctest ${AddTest_EXECUTABLE}) - add_dependencies(ctest-large ${AddTest_EXECUTABLE}) - endif() + add_dependencies(ctest ${AddTest_EXECUTABLE}) + add_dependencies(ctest-large ${AddTest_EXECUTABLE}) if(AddTest_PYTHON_PACKAGES) if(POETRY) diff --git a/scripts/cmake/test/Test.cmake b/scripts/cmake/test/Test.cmake index caba1e810e5..41e6d3a317d 100644 --- a/scripts/cmake/test/Test.cmake +++ b/scripts/cmake/test/Test.cmake @@ -36,11 +36,8 @@ if(CMAKE_CONFIGURATION_TYPES) endif() add_custom_target(ctest-cleanup ${CMAKE_COMMAND} -E remove -f Tests/ctest.log) -set(test_dependencies ogs vtkdiff) if(OGS_BUILD_UTILS) list(APPEND test_dependencies - partmesh - MapGeometryToMeshSurface generateStructuredMesh ) endif() @@ -92,7 +89,4 @@ set_directory_properties(PROPERTIES set_target_properties(ctest ctest-large ctest-cleanup ctest-large-cleanup PROPERTIES FOLDER Testing) -add_dependencies(ctest ogs) -add_dependencies(ctest-large ogs) - configure_file(${PROJECT_SOURCE_DIR}/scripts/test/buildinfo.in.yaml ${PROJECT_BINARY_DIR}/buildinfo.yaml) -- GitLab