Я хочу, чтобы ctest показывал мне результат неудачных тестов по умолчанию. То есть, я хочу запустить:CMake: настройка переменной окружения для ctest (или в противном случае получение теста с ошибкой теста ctest/make автоматически)
$ make all test
и видит выход неудачных испытаний без cat Testing/Temporary/LastTest.log
.
Оказывается, что есть два способа сделать это:
(1) Установка CTEST_OUTPUT_ON_FAILURE
переменную окружения:
$ CTEST_OUTPUT_ON_FAILURE=1 make all test
$ # or CTEST_OUTPUT_ON_FAILURE=1 ctest
(2) Указание --output-on-failure
флага к ctest
вызова:
$ ctest --output-on-failure
Есть ли способ написать файл CMakeLists.txt, так что ctests dumps сбойные тесты выводятся defaul t на обычном вызове «сделать все тесты» БЕЗ использования экспорта глобальной переменной во время сеанса или использования настраиваемой цели, например make check
(как описано here)?
Я знаю команду SET_TESTS_PROPERTIES()
, но пытается это так:
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")
и экспериментирование показывает, что переменная окружающей среды устанавливается в раковине, что тестовая программа выполняется в, но не в оболочка, которая CTest выполняется в
Спасибо. Полезный рецепт! – Jeet
Спасибо, куча, именно то, что я искал! Любая идея, почему невозможно изменить цель 'test'? – lfxgroove
Цель 'test' - одна из целей глобального по умолчанию CMake, которые нельзя изменить. Настройка команды 'test' в жестко закодированной в источнике CMake. – sakra