From 43b890f96eeb1472c4cef07cd072fdeba36c4e10 Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Tue, 13 Mar 2018 09:16:04 +0100
Subject: [PATCH] [CTest] Split test tester into multiple command runs.

---
 scripts/cmake/test/AddTest.cmake       |  3 ---
 scripts/cmake/test/AddTestTester.cmake | 24 ++++++++++++------------
 2 files changed, 12 insertions(+), 15 deletions(-)

diff --git a/scripts/cmake/test/AddTest.cmake b/scripts/cmake/test/AddTest.cmake
index 9282ff8f2e4..c9791b1ec79 100644
--- a/scripts/cmake/test/AddTest.cmake
+++ b/scripts/cmake/test/AddTest.cmake
@@ -189,9 +189,6 @@ Use six arguments version of AddTest with absolute and relative tolerances")
         else ()
             message(FATAL_ERROR "For vtkdiff tester the number of diff data arguments must be a multiple of six.")
         endif()
-
-
-        string(REPLACE ";" " && " TESTER_COMMAND "${TESTER_COMMAND}")
     elseif(tester STREQUAL "memcheck")
         set(TESTER_COMMAND "! ${GREP_TOOL_PATH} definitely ${AddTest_SOURCE_PATH}/${AddTest_NAME}_memcheck.log")
     endif()
diff --git a/scripts/cmake/test/AddTestTester.cmake b/scripts/cmake/test/AddTestTester.cmake
index 534d298c040..900c302dfc5 100644
--- a/scripts/cmake/test/AddTestTester.cmake
+++ b/scripts/cmake/test/AddTestTester.cmake
@@ -11,20 +11,20 @@ endif()
 message(STATUS "running command checking test results: cd ${case_path} && ${TESTER_COMMAND}")
 
 if(WIN32)
-    execute_process(
-        COMMAND cmd /C ${TESTER_COMMAND}
-        WORKING_DIRECTORY ${case_path}
-        RESULT_VARIABLE EXIT_CODE
-        OUTPUT_VARIABLE OUTPUT
-  )
+    set(TERMINAL_CMD cmd /C)
 else()
-    execute_process(
-        COMMAND bash -c ${TESTER_COMMAND}
-        WORKING_DIRECTORY ${case_path}
-        RESULT_VARIABLE EXIT_CODE
-        OUTPUT_VARIABLE OUTPUT
-    )
+    set(TERMINAL_CMD bash -c)
 endif()
+foreach(CMD ${TESTER_COMMAND})
+    set(COMBINED_COMMAND ${COMBINED_COMMAND} COMMAND ${TERMINAL_CMD} ${CMD})
+endforeach()
+
+execute_process(
+    ${COMBINED_COMMAND}
+    WORKING_DIRECTORY ${case_path}
+    RESULT_VARIABLE EXIT_CODE
+    OUTPUT_VARIABLE OUTPUT
+)
 
 if(NOT EXIT_CODE STREQUAL "0")
     message(FATAL_ERROR "Error exit code: ${EXIT_CODE}")
-- 
GitLab