I want ctest to show me the failed tests output by default. That is, I want to run:
$ make all test
and see any output of failed tests without having to cat Testing/Temporary/LastTest.log
.
It appears that there are two ways of doing this:
(1) Setting the CTEST_OUTPUT_ON_FAILURE
environmental variable:
$ CTEST_OUTPUT_ON_FAILURE=1 make all test
$ # or CTEST_OUTPUT_ON_FAILURE=1 ctest
(2) Specifying the --output-on-failure
flag to the ctest
invocation:
$ ctest --output-on-failure
Is there a way to write a CMakeLists.txt file such that ctests dumps failed tests output by default on a normal "make all test" invocation WITHOUT resorting to exporting the environmental variable globally in the session or resorting to a custom target like make check
(as described here)?
I am aware of the SET_TESTS_PROPERTIES()
command, but trying it out like this:
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(testenv CXX)
ENABLE_TESTING()
ADD_EXECUTABLE(hello hello.cpp)
ADD_TEST(testhello hello)
# Following sets the environment variable for the shell in which the test
# progoram 'hello' is run, but not the shell in which ctest is run
SET_TESTS_PROPERTIES(testhello
PROPERTIES ENVIRONMENT "CTEST_OUTPUT_ON_FAILURE=1")
and experimenting shows that the environmental variable is set in the shell that the test program is executed in, but not in the shell that ctest is executed in.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…