Додає тест до проекту, що буде виконуватись за допомогою команди ctest.

Сигнатура

add_test(NAME <name> COMMAND <command> [<arg>...]
         [CONFIGURATIONS <config>...]
         [WORKING_DIRECTORY <dir>]
         [COMMAND_EXPAND_LISTS])

Опис

Додає тест з ім'ям <name>. Назва тесту може містити довільні символи, вказана у якості аргументу обгорнутого у лапки або аргументу обгорнутого у дужки за необхідності. Деталі у політиці CMP0110.

Система CMake генерує тести у випадку виклику команди enable_testing(). Модуль CText викликає команду enable_testing() автоматично окрім випадків встановленого значення OFF для змінної BUILD_TESTING.

Тести додані за допомогою використання сигнатури add_test(NAME) підтримують генеруючі вирази у властивостях тесту встановлених за допомогою команд set_property(TEST) або set_tests_properties(). Властивості тестів можуть бути встановленими тільки у директорії у якій створений даний тест.

Параметри

COMMAND - вказує команду інтерпретатора для тесту. Якщо параметр вказує на ціль виконуваного файлу створеного за допомогою команди add_executable(), він буде автоматично замінений на шлях розміщення виконуваного файлу створеного після його побудови.

Команда може являти собою генеруючий вираз.

CONFIGURATIONS - обмежує виконуння тесту тільки для іменованих конфігурацій.

WORKING_DIRECTORY - встановлює властивість WORKING_DIRECTORY (робоча директорія) для тесту у якій буде виконуватись тест. Якщо не вказано, тест буде виконано у директорії шлях до якої вказує змінна CMAKE_CURRENT_BINARY_DIR. Робоча директорія може вказуватись використовуючи генеруючі вирази.

COMMAND_EXPAND_LISTS - Нововведення у версії 3.16.

Списки у аргументі COMMAND будуть розширені, включаючи ці що створені за допомогою використання генеруючих виразів.

Якщо команда тесту завершує своє виконання з кодом виходу 0 - вважається що тест пройшов. Не нульовий код виходу вважається проваленим тестом. Властивість тесту WILL_FAIL інвертує дану логіку. Однак помилки тесту на системному рівні на подобі помилок адресування або помилки купи будуть вважатись провалом навіть якщо змінна WILL_FAIL встановлена у значення true. Вивід команди у стандартний вивід або у вивід помилок захоплюється програмою ctest і вливають на успішність тесту за допомогою використання таких змінних тесту як: PASS_REGULAR_EXPRESSION, FAIL_REGULAR_EXPRESSION або SKIP_REGULAR_EXPRESSION.

Нововведення у версії 3.16: Додано властивість SKIP_REGULAR_EXPRESSION.

Приклад використання

add_test(NAME mytest
         COMMAND testDriver --config $<CONFIG>
                            --exe $<TARGET_FILE:myexe>)

Дана команда створює тест mytest команда якого виконує утиліту testDriver, передаючи ім'я конфігурації і повний шлях до виконуваного файлу створеного ціллю myexe.

Рекомендується використання попереднього вказаної версії команди на відміну від старішої, менш гнучкої форми:

add_test(<name> <command> [<arg>...])

Що дадає тест <name> з наданою командою системного інтерпретатора.

На відміну від попередньої сигнатури з використанням NAME, імена цілей не підтримуються у даній формі команди. Більше того, тести додані за допомогою використання цієї спрощеної сигнатури не підтримують генеруючі вирази у команді системного інтерпретатора чи властивостях тесту.

Приклад використання у "природі"

Приклад використання команди add_test можна переглянути за адресою https://github.com/yuriysydor1991/kytok.org.ua-gtest-w-cmake-intro/blob/1.0.0/CMakeLists.txt#L47 у проекті-демонстрації використання фреймворку тестування GTest, який використовувався у статті за даресою GTest легкий старт разом з CMake і прикладами.

Оригінал документу

Оригінал документу розміщений за адресою: https://cmake.org/cmake/help/latest/command/add_test.html.