CMake и CTest: автоматически запускать тестовые зависимости

В моем CMakeLists.txt у меня есть что-то вроде этого:

 set_property(TEST testX APPEND PROPERTY DEPENDS testY)
set_property(TEST testX APPEND PROPERTY DEPENDS testZ)

И я хочу как-нибудь запустить testX и все его зависимости автоматически.
Что-то вроде:

ctest <options> testX

и в результате CTest будет работать textY, testZ а также testX,
Есть какой-либо способ сделать это?

Или, если сейчас это невозможно, есть ли способ извлечь информацию о зависимостях из каталога сборки CMake по сценарию?

3

Решение

Насколько я знаю, нет встроенного способа сделать это.

Лучший способ достичь вашей цели — использовать LABELS имущество на тестах. Вы можете получить список зависимостей, используя get_property или же get_test_property и применить тот же ярлык к testX и каждый из его зависимых тестов:

get_test_property(testX DEPENDS DependenciesOfTestX)
set_tests_properties(testX ${DependenciesOfTestX} PROPERTIES LABELS LabelX)

Затем вы можете указать CTest запускать тесты только с этой меткой:

ctest -L LabelX
3

Другие решения

Поддержка тестовых светильников была добавлена ​​в CMake 3.7, и они делают именно то, что вы хотите. Ваш конкретный сценарий будет реализован так:

set_property(TEST testX PROPERTIES FIXTURES_REQUIRED Foo)
set_property(TEST testY PROPERTIES FIXTURES_SETUP Foo)
set_property(TEST testZ PROPERTIES FIXTURES_SETUP Foo)

Вы можете спросить ctest просто бегать testX и он автоматически добавит testY а также testZ к набору тестов, которые необходимо выполнить:

ctest -R testX

Это также гарантирует, что testX будет работать только после testY а также testZ были пройдены. Если любой из testY или же testZ выходит из строя, testX будут пропущены Новые опции -FS, -FC а также -FA были также добавлены к ctest в CMake 3.9, которые позволяют автоматически добавлять тесты настройки / очистки прибора на ctest командная строка. Например, чтобы временно пропустить добавление testY к тестовому набору, но все равно автоматически добавляется testZможно сделать это:

ctest -R testX -FS testY

Свойства приборов описаны в CMake документы и в следующей статье мы расскажем об особенностях светильников:

https://crascit.com/2016/10/18/test-fixtures-with-cmake-ctest/

1