testing cmake environment-variables output ctest

testing - CMake: configuración de una variable de entorno para ctest(o de otro modo obtener resultados de prueba fallidos de ctest/make test automáticamente)



environment-variables output (1)

El objetivo de test integrado no se puede modificar, pero puede agregar un objetivo de check personalizado que invoca a ctest con el --output-on-failure de la siguiente manera:

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()

El objetivo personalizado debe configurarse de forma diferente para el tipo de compilación individual y las compilaciones de varias configuraciones. En el último caso, la configuración de compilación activa debe pasarse a la invocación de ctest utilizando el --build-config . El --force-new-ctest-process es utilizado por el objetivo de test incorporado por defecto.

Quiero que ctest me muestre el resultado de las pruebas fallidas por defecto. Es decir, quiero correr:

$ make all test

y ver cualquier salida de pruebas fallidas sin tener que pasar por cat Testing/Temporary/LastTest.log .

Parece que hay dos formas de hacer esto:

(1) Configurando la variable de entorno CTEST_OUTPUT_ON_FAILURE :

$ CTEST_OUTPUT_ON_FAILURE=1 make all test $ # or CTEST_OUTPUT_ON_FAILURE=1 ctest

(2) Especificando el --output-on-failure en la invocación de ctest :

$ ctest --output-on-failure

¿Hay alguna manera de escribir un archivo CMakeLists.txt de modo que ctests dumps fallen test output por defecto en una invocación normal de "make all test" SIN recurrir a exportar la variable ambiental globalmente en la sesión o recurrir a un objetivo personalizado como make check ( como se describe here )?

SET_TESTS_PROPERTIES() comando SET_TESTS_PROPERTIES() , pero lo intento así:

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")

y la experimentación muestra que la variable del entorno se establece en el shell en el que se ejecuta el programa de prueba, pero no en el shell en el que se ejecuta ctest.