CMake: paramétrage d'une variable d'environnement pour le test ctest (ou obtention d'une sortie de test ratée du test ctest/make test automatiquement))
je veux que ctest me montre la sortie des tests par défaut. C'est-à-dire, je veux courir:
$ make all test
et voir tout résultat d'essais infructueux sans avoir à cat Testing/Temporary/LastTest.log
.
il semble qu'il y ait deux façons de le faire:
(1) paramètre CTEST_OUTPUT_ON_FAILURE
variable environnementale:
$ CTEST_OUTPUT_ON_FAILURE=1 make all test
$ # or CTEST_OUTPUT_ON_FAILURE=1 ctest
(2) spécifiant le drapeau --output-on-failure
pour l'invocation ctest
:
$ ctest --output-on-failure
est-il une façon d'écrire une liste de Mac?le fichier txt est-il tel que le ctests vide la sortie des tests par défaut sur une invocation Normale "make all test" sans recourir à l'exportation de la variable environnementale globalement dans la session ou en recourant à une cible personnalisée comme make check
(comme décrit ici )?
je suis au courant de la commande SET_TESTS_PROPERTIES()
, mais l'essayer comme ceci:
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")
et l'expérimentation montre que la variable d'environnement est définie dans la coquille que le programme de test est exécuté, mais pas dans le shell que ctest est exécutée.
1 réponses
la cible intégrée test
ne peut pas être modifiée, mais vous pouvez ajouter une cible personnalisée check
qui invoque ctest
avec le commutateur --output-on-failure
de la manière suivante:
if (CMAKE_CONFIGURATION_TYPES)
add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND}
--force-new-ctest-process --output-on-failure
--build-config "$<CONFIGURATION>")
else()
add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND}
--force-new-ctest-process --output-on-failure)
endif()
la cible personnalisée doit être configurée différemment pour les constructions mono-type et multi-configurations. Dans ce dernier cas, la configuration de construction active doit être transmise à l'invocation ctest
en utilisant le drapeau --build-config
. Le --force-new-ctest-process
est utilisé par la cible intégrée test
par défaut.