@@ -8,30 +8,35 @@ set(ENV{CTEST_OUTPUT_ON_FAILURE} "ON")
88# CDash: https://cmake.org/cmake/help/book/mastering-cmake/chapter/CDash.html
99# ctest -D Continuous
1010# performs the start, update, configure, build, test, coverage, and submit commands.
11- set (DoCovMemChk "-D ContinuousStart -D ContinuousUpdate -D ContinuousConfigure -D ContinuousBuild -D ContinuousTest" )
12- # MemoryCheck
13- # Perform memory checks using Purify or valgrind.
14- if ("$ENV{RUNNER_OS} " STREQUAL "Linux" )
15- set (DoCovMemChk " ${DoCovMemChk} -D ContinuousMemCheck" )
11+ set (CTEST_STEPS Start Update Configure Build Test )
12+
13+ # Conditionally add MemCheck for Linux
14+ if ("$ENV{RUNNER_OS} " STREQUAL "Linux" )
15+ list ( APPEND CTEST_STEPS MemCheck )
1616endif ()
17- # Coverage
18- # Collect source code coverage information using gcov or Bullseye.
19- if ("$ENV{CC} " STREQUAL "gcc" )
20- set (DoCovMemChk " ${DoCovMemChk} -D ContinuousCoverage" )
17+
18+ # Conditionally add Coverage for gcc
19+ if ("$ENV{CC} " STREQUAL "gcc" )
20+ list ( APPEND CTEST_STEPS Coverage )
2121endif ()
22- set (DoCovMemChk "${DoCovMemChk} -D ContinuousSubmit" )
2322
24- execute_process (
25- COMMAND ctest -j ${N} -C $ENV{BUILD_TYPE} ${DoCovMemChk}
26- WORKING_DIRECTORY build
27- RESULT_VARIABLE result
28- OUTPUT_VARIABLE output
29- ERROR_VARIABLE output
30- ECHO_OUTPUT_VARIABLE ECHO_ERROR_VARIABLE
31- )
32- if (NOT result EQUAL 0)
33- string (REGEX MATCH "[0-9]+% tests.*[0-9.]+ sec.*$" test_results "${output} " )
34- string (REPLACE "\n " "%0A" test_results "${test_results} " )
35- message ("::error::${test_results} " )
36- message (FATAL_ERROR "Running tests failed!" )
37- endif ()
23+ # Always add Submit step
24+ list (APPEND CTEST_STEPS Submit)
25+
26+ # Execute each CTest step individually
27+ foreach (step IN LISTS CTEST_STEPS)
28+ execute_process (
29+ COMMAND ctest -j ${N} -C $ENV{BUILD_TYPE} -D Continuous${step}
30+ WORKING_DIRECTORY build
31+ RESULT_VARIABLE result
32+ OUTPUT_VARIABLE output
33+ ERROR_VARIABLE output
34+ ECHO_OUTPUT_VARIABLE ECHO_ERROR_VARIABLE
35+ )
36+ if (NOT result EQUAL 0)
37+ string (REGEX MATCH "[0-9]+% tests.*[0-9.]+ sec.*$" test_results "${output} " )
38+ string (REPLACE "\n " "%0A" test_results "${test_results} " )
39+ message ("::error::${test_results} " )
40+ message (FATAL_ERROR "Running ctest -D Continuous${step} failed!" )
41+ endif ()
42+ endforeach ()
0 commit comments