From 8f85dc9f7d027b4ab9841a43ef54fa2feda645ea Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Tue, 11 May 2021 14:30:08 +0200
Subject: [PATCH] [ctest] Added more labels.

  default  - RUNTIME <= 60 s
  large    - RUNTIME >  60 s
  meshtest - Tests added with MeshTest()
  tester   - all tester
---
 CMakePresets.json                 | 10 ++--------
 scripts/cmake/test/AddTest.cmake  | 17 ++++++++++++-----
 scripts/cmake/test/MeshTest.cmake | 24 +++++++++++++++++++++---
 scripts/cmake/test/Test.cmake     |  6 +++---
 4 files changed, 38 insertions(+), 19 deletions(-)

diff --git a/CMakePresets.json b/CMakePresets.json
index 85536bb086d..051de3e0e66 100644
--- a/CMakePresets.json
+++ b/CMakePresets.json
@@ -242,12 +242,9 @@
       "inherits": [
         "_release"
       ],
-      "execution": {
-        "timeout": 900
-      },
       "filter": {
         "exclude": {
-          "name": "LARGE"
+          "label": "large"
         }
       }
     },
@@ -256,12 +253,9 @@
       "inherits": [
         "_release"
       ],
-      "execution": {
-        "timeout": 5400
-      },
       "filter": {
         "include": {
-          "name": "LARGE"
+          "label": "large"
         }
       }
     },
diff --git a/scripts/cmake/test/AddTest.cmake b/scripts/cmake/test/AddTest.cmake
index 6c9f67af01b..1fe4689786c 100644
--- a/scripts/cmake/test/AddTest.cmake
+++ b/scripts/cmake/test/AddTest.cmake
@@ -412,13 +412,18 @@ Use six arguments version of AddTest with absolute and relative tolerances"
         )
     endif()
 
-    current_dir_as_list(ProcessLib DIR_LABELS)
+    current_dir_as_list(ProcessLib labels)
+    if(${AddTest_RUNTIME} LESS_EQUAL ${ogs.ctest.large_runtime})
+        list(APPEND labels default)
+    else()
+        list(APPEND labels large)
+    endif()
 
     set_tests_properties( ${TEST_NAME}
         PROPERTIES
             COST ${AddTest_RUNTIME}
             DISABLED ${AddTest_DISABLED}
-            LABELS "${DIR_LABELS}"
+            LABELS "${labels}"
             TIMEOUT ${timeout}
     )
 
@@ -470,9 +475,11 @@ Use six arguments version of AddTest with absolute and relative tolerances"
             --debug-output
         WORKING_DIRECTORY ${AddTest_SOURCE_PATH}
     )
-    set_tests_properties(
-        ${TESTER_NAME} PROPERTIES DEPENDS ${TEST_NAME} DISABLED
-                                  ${AddTest_DISABLED}
+    set_tests_properties(${TESTER_NAME}
+        PROPERTIES
+            DEPENDS ${TEST_NAME}
+            DISABLED ${AddTest_DISABLED}
+            LABELS "tester;${labels}"
     )
 
 endfunction()
diff --git a/scripts/cmake/test/MeshTest.cmake b/scripts/cmake/test/MeshTest.cmake
index 0fe743d2185..e4548f1f257 100644
--- a/scripts/cmake/test/MeshTest.cmake
+++ b/scripts/cmake/test/MeshTest.cmake
@@ -42,7 +42,10 @@ function(MeshTest)
     if(NOT DEFINED MeshTest_REQUIREMENTS)
         set(MeshTest_REQUIREMENTS TRUE)
     endif()
-    if(NOT DEFINED MeshTest_RUNTIME)
+    set(timeout ${ogs.ctest.large_runtime})
+    if(DEFINED MeshTest_RUNTIME)
+        math(EXPR timeout "${MeshTest_RUNTIME} * 3")
+    else()
         set(MeshTest_RUNTIME 1)
     endif()
     if(NOT DEFINED MeshTest_WORKING_DIRECTORY)
@@ -189,7 +192,18 @@ function(MeshTest)
             -DWORKING_DIRECTORY=${MeshTest_WORKING_DIRECTORY} -P
             ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestWrapper.cmake
     )
-    set_tests_properties(${TEST_NAME} PROPERTIES COST ${MeshTest_RUNTIME})
+    current_dir_as_list(ProcessLib labels)
+    if(${MeshTest_RUNTIME} LESS_EQUAL ${ogs.ctest.large_runtime})
+        list(APPEND labels default)
+    else()
+        list(APPEND labels large)
+    endif()
+    set_tests_properties(${TEST_NAME}
+        PROPERTIES
+            COST ${MeshTest_RUNTIME}
+            LABELS "meshtest;${labels}"
+            TIMEOUT ${timeout}
+    )
 
     if(TARGET ${MeshTest_EXECUTABLE})
         add_dependencies(ctest ${MeshTest_EXECUTABLE})
@@ -214,6 +228,10 @@ function(MeshTest)
             --debug-output
         WORKING_DIRECTORY ${MeshTest_SOURCE_PATH}
     )
-    set_tests_properties(${TESTER_NAME} PROPERTIES DEPENDS ${TEST_NAME})
+    set_tests_properties(${TESTER_NAME}
+        PROPERTIES
+            DEPENDS ${TEST_NAME}
+            LABELS "tester;${labels}"
+    )
 
 endfunction()
diff --git a/scripts/cmake/test/Test.cmake b/scripts/cmake/test/Test.cmake
index e8be884df48..40c6c1404c1 100644
--- a/scripts/cmake/test/Test.cmake
+++ b/scripts/cmake/test/Test.cmake
@@ -62,7 +62,7 @@ add_custom_target(
     ctest
     COMMAND
         ${CMAKE_CTEST_COMMAND} -T Test --force-new-ctest-process
-        --output-on-failure --output-log Tests/ctest.log --exclude-regex LARGE
+        --output-on-failure --output-log Tests/ctest.log -LE large
         ${CONFIG_PARAMETER}
     DEPENDS ${test_dependencies} ctest-cleanup
     USES_TERMINAL
@@ -76,8 +76,8 @@ add_custom_target(
     ctest-large
     COMMAND
         ${CMAKE_CTEST_COMMAND} -T Test --force-new-ctest-process
-        --output-on-failure --output-log Tests/ctest-large.log --tests-regex
-        LARGE ${CONFIG_PARAMETER}
+        --output-on-failure --output-log Tests/ctest-large.log -L large
+        ${CONFIG_PARAMETER}
     DEPENDS ${test_dependencies} ctest-large-cleanup
     USES_TERMINAL
 )
-- 
GitLab