Chcę, aby ctest domyślnie pokazywał mi wyniki testów zakończonych niepowodzeniem. Oznacza to, że chcę, aby uruchomić:CMake: ustawienie zmiennej środowiskowej dla ctest (lub w inny sposób otrzymanie błędnego wyniku testu z testu ctest/make automatycznie)
$ make all test
i ma wyniku nieudanych testów bez konieczności cat Testing/Temporary/LastTest.log
.
Wydaje się, że istnieją dwa sposoby, aby to zrobić:
(1) Ustawianie CTEST_OUTPUT_ON_FAILURE
zmienną środowiskową:
$ CTEST_OUTPUT_ON_FAILURE=1 make all test
$ # or CTEST_OUTPUT_ON_FAILURE=1 ctest
(2) Określanie flagę --output-on-failure
do ctest
inwokacji:
$ ctest --output-on-failure
Czy istnieje sposób na zapisanie pliku CMakeLists.txt takiego, że ctests zrzuca wyniki testów zakończone niepowodzeniem przez defaul t na normalnym wywołaniu "make all test" BEZ odwoływania się do eksportowania zmiennej środowiskowej globalnie w sesji lub odwoływania się do niestandardowego celu, takiego jak make check
(jak opisano here)?
Jestem świadomy komendy SET_TESTS_PROPERTIES()
, ale próbuje ją tak:
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")
i eksperymentowania pokazuje, że zmienna środowiskowa jest ustawiona w powłoce, że program testowy jest wykonywany w, ale nie w powłoki, które ctest jest wykonywany w
Dzięki. Przydatny przepis! – Jeet
Dziękuję kupie, dokładnie to, czego szukałem! Masz pomysł, dlaczego nie można zmodyfikować celu 'test'? – lfxgroove
Cel 'test' jest jednym z globalnych domyślnych celów CMake, którego nie można modyfikować. Konfiguracja komendy 'test' na dysku twardym w źródle CMake. – sakra