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