[CMake] CMakeLists.txt: How to print a message if ctest fails?

Matějů Miroslav, Ing. Mateju.Miroslav at azd.cz
Tue Apr 19 04:18:59 EDT 2016


Hi Muhammad,

You need to add this code to a separate CTest script (CTestScript.cmake, for example) and then run it using ctest -S CTestScript.cmake. Since the wiki page I linked yesterday provides only some complex examples, I am sending the key part of my CTest script. As you can see, its operation strongly depends on environment variables (some of them are provided by Windows). You’ll probably need to remove most of my if’s.

set(CTEST_SOURCE_DIRECTORY "$ENV{SCRIPT_FOLDER}")
set(CTEST_BINARY_DIRECTORY "$ENV{BINARY_PROJECT_FOLDER}")

set(CTEST_SITE          $ENV{COMPUTERNAME})
set(CTEST_BUILD_NAME    $ENV{TEST_CASE_NAME})

ctest_start()

ctest_configure(RETURN_VALUE configure_failed)

if($ENV{DO_UPDATE})
  ctest_update()
endif($ENV{DO_UPDATE})

if($ENV{DO_BUILD})
  ctest_build(RETURN_VALUE build_failed)
endif($ENV{DO_BUILD})

if   (($ENV{DO_TEST}) AND NOT (configure_failed OR build_failed))
  ctest_test(RETURN_VALUE test_failed)
endif(($ENV{DO_TEST}) AND NOT (configure_failed OR build_failed))

if($ENV{DO_DASHBOARD})
  ctest_submit()
endif($ENV{DO_DASHBOARD})

if   (configure_failed OR build_failed OR test_failed)
  message(FATAL_ERROR "Test ${CTEST_BUILD_NAME} failed.")  # sets return value to -1
endif(configure_failed OR build_failed OR test_failed)

Best regards,
Miroslav

From: Muhammad Osama [mailto:osama94 at gmail.com]
Sent: Monday, April 18, 2016 8:33 PM
To: Matějů Miroslav, Ing.
Cc: cmake at cmake.org
Subject: Re: [CMake] CMakeLists.txt: How to print a message if ctest fails?

Hi Miroslav,

Thank you for replying! I added this in my root CMakeLists.txt, purposely made the ctest's test fail but didn't get the output message.
Is this script suppose to be added inside CMakeLists.txt? Or am I doing this incorrectly?

Thanks again,

On Mon, Apr 18, 2016 at 6:30 AM, Matějů Miroslav, Ing. <Mateju.Miroslav at azd.cz<mailto:Mateju.Miroslav at azd.cz>> wrote:
Hi Muhammad,
you can use a CTest script, see https://cmake.org/Wiki/CMake_Scripting_Of_CTest for details. I use the following code in my CTest script:

if(configure_failed OR build_failed OR test_failed)
    message(FATAL_ERROR "Test ${CTEST_BUILD_NAME} failed.")
endif()

Best regards,
Miroslav

From: CMake [mailto:cmake-bounces at cmake.org<mailto:cmake-bounces at cmake.org>] On Behalf Of Muhammad Osama
Sent: Friday, April 15, 2016 8:53 PM
To: cmake at cmake.org<mailto:cmake at cmake.org>
Subject: [CMake] CMakeLists.txt: How to print a message if ctest fails?

Is there a way I can setup CMakeLists.txt to print a message if ctest tests fail? For example:

cmake ..
make
ctest // fails
message output: Please contact xyz at mail.com<mailto:xyz at mail.com> to resolve testing problems.
​Note the message output is not for cmake but for ctest.​

--​​
Muhammad


--
Muhammad
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20160419/8ebac85b/attachment-0001.html>


More information about the CMake mailing list