Должен ли я использовать ctest dashboard, если я не использую CDash? - PullRequest
0 голосов
/ 29 января 2019

Я переопределяю конфигурацию cmake моего проекта на основе того, что я узнал из выступлений Дэниела Пфайфера «Эффективный CMake», но я все еще не могу разобраться ctest.

В настоящее время у меня есть следующая настройка для моеготесты:

enable_testing()
find_program(MEMCHECK_COMMAND valgrind)
# executable
add_executable(myTest ${SRC_LIST})
target_link_libraries(myTest ${LIB_LIST})
# test
add_test(NAME myTest_test
    COMMAND ${CMAKE_CURRENT_BINARY_DIR}/myTest)
add_custom_target(myTest_test
    COMMAND ctest -R myTest_test --output-on-failure
    DEPENDS myTest)
# memcheck
add_test(NAME myTest_memcheck
    COMMAND ${MEMCHECK_COMMAND} ${CMAKE_CURRENT_BINARY_DIR}/myTest)
add_custom_target(myTest_memcheck
    COMMAND ctest -R myTest_memcheck --output-on-failure
    DEPENDS ${TEST_NAME})

и я могу запустить make myTest_test и make myTest_memcheck и знать, что ничего не сломал.

Мне больно, что я должен делать это для каждого тестаИсполняемый (и проект большой, поэтому у меня их десятки) и даже извлеченный как функция, он просто кажется неправильным.

Я прочитал ctest docs (https://gitlab.kitware.com/cmake/community/wikis/doc/ctest/Testing-With-CTest), и приборные панели мне кажутся почти идеальными -если бы я мог просто запустить ctest -R myTest -T test, ctest -R myTest -T memcheck и ctest -R myTest -T coverage, я был бы очень счастлив :) (и даже более счастлив, если эти команды будут запускать сборку при необходимости).

Проблема в том, что include(CTest) создает цели, которые мне не нужны (непрерывные / ночные инструментальные панели с шагами Start / Update / Configure / Submit). Он будет использоваться исключительно как экспериментальные сборки и выполняться разработчиками во время кодирования. Для CI у меня есть Jenkins с этимсобственная магияЯ хотел бы в итоге: - Панель инструментов / Сборка - Панель инструментов / Тестирование - Панель инструментов / MemCheck - Панель инструментов / Покрытие

Что мне делать?Должен ли я вручную создать свою собственную панель инструментов (если это возможно) или отказаться от этой идеи и остаться с моими собственными целями?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...