From 3f1ce3aff3fc71b97dc8899c999efe691b1ae939 Mon Sep 17 00:00:00 2001
From: Pere Mato <pere.mato@cern.ch>
Date: Fri, 28 Jul 2017 12:23:30 +0200
Subject: [PATCH] Fix for ROOT-8829 - Any unexpected error output on 'assert'
 tests will make the test fail

---
 cmake/modules/RootTestDriver.cmake | 31 ++++++++++++++++++++++--------
 1 file changed, 23 insertions(+), 8 deletions(-)

diff --git a/cmake/modules/RootTestDriver.cmake b/cmake/modules/RootTestDriver.cmake
index 62115f7c959..89285e525c8 100644
--- a/cmake/modules/RootTestDriver.cmake
+++ b/cmake/modules/RootTestDriver.cmake
@@ -126,14 +126,18 @@ if(CMD)
     endif()
 
     # log stderr
-    if(CHECKERR AND NOT ERRREF)
-      set(_chkerr ERROR_VARIABLE _outvar)
-    elseif(ERRREF)
-      set(_chkerr ERROR_VARIABLE _errvar)
+    if(ERRREF)
+      set(_chkerr ERROR_VARIABLE _errvar)     # Check err reference
     else()
-      set(_chkerr ERROR_VARIABLE _errvar2)
+      if(CHECKERR AND CHECKOUT)
+        set(_chkerr ERROR_VARIABLE _outvar)   # Both err and out together
+      elseif(CHECKERR)
+        set(_chkerr ERROR_VARIABLE _errvar0)  # Only check (no reference) the err and and ignore out
+      else()
+        set(_chkerr ERROR_VARIABLE _errvar2)  # Only check out eventually
+      endif()
     endif()
-
+ 
     execute_process(COMMAND ${_cmd} ${_input} ${_chkout} ${_chkerr} WORKING_DIRECTORY ${CWD} RESULT_VARIABLE _rc)
 
     string(REGEX REPLACE "([.]*)[;][-][e][;]([^;]+)([.]*)" "\\1;-e '\\2\\3'" res "${_cmd}")
@@ -144,9 +148,9 @@ if(CMD)
     message("-- BEGIN TEST OUTPUT --")
     message("${_outvar}${_outvar2}")
     message("-- END TEST OUTPUT --")
-    if(_errvar OR _errvar2)
+    if(_errvar0 OR _errvar OR _errvar2)
       message("-- BEGIN TEST ERROR --")
-      message("${_errvar}${_errvar2}")
+      message("${_errvar0}${_errvar}${_errvar2}")
       message("-- END TEST ERROR --")
     endif()
 
@@ -155,6 +159,17 @@ if(CMD)
       file(WRITE ${ERR} "${_errvar}")
     endif()
 
+    if(_errvar0)
+      # Filter messages in stderr that are expected
+      string(STRIP ${_errvar0} _errvar0)
+      string(REPLACE "\n" ";" _lines "${_errvar0}")
+      list(FILTER _lines EXCLUDE REGEX "^Info in <.+::ACLiC>: creating shared library.+")
+      string(REPLACE ";" "\n" _errvar0 "${_lines}")
+      if(_errvar0)
+        message(FATAL_ERROR "Unexpected error output")
+      endif()
+    endif()
+
     if(DEFINED RC AND (NOT "${_rc}" STREQUAL "${RC}"))
       message(FATAL_ERROR "error code: ${_rc}")
     elseif(NOT DEFINED RC AND _rc)
-- 
GitLab