ctest(1)
- Синтаксис
- Описание
- Запуск тестов
- Просмотр справки
- Сопоставление меток
- Резюме меток и подпроектов
- Режим сборки и тестирования
- Показать как JSON-модель объекта
- Интеграция с сервером задач
- См. также
Синтаксис
Run Tests
ctest [<options>] [--test-dir <path-to-build>]
Build and Test Mode
ctest --build-and-test <path-to-source> <path-to-build>
--build-generator <generator> [<options>...]
[--build-options <opts>...]
[--test-command <command> [<args>...]]
Dashboard Client
ctest -D <dashboard> [-- <dashboard-options>...]
ctest -M <model> -T <action> [-- <dashboard-options>...]
ctest -S <script> [-- <dashboard-options>...]
ctest -SP <script> [-- <dashboard-options>...]
View Help
ctest --help[-<topic>] Описание
Исполняемый файл ctest — это программа-драйвер тестов CMake. Деревья сборки, сгенерированные CMake для проектов, использующих команды enable_testing() и add_test(), имеют поддержку тестирования. Эта программа запустит тесты и сообщит результаты.
Запуск тестов
-
--preset <preset>, --preset=<preset> -
Используйте набор тестов для указания опций тестов. Директория двоичных файлов проекта определяется по ключу
configurePreset. Текущая рабочая директория должна содержать файлы предопределений CMake. Подробности см. вpreset.
-
--list-presets -
Отображает доступные наборы тестов. Текущая рабочая директория должна содержать файлы предопределений CMake.
-
-C <cfg>, --build-config <cfg> -
Выбор конфигурации для тестирования.
Некоторые сгенерированные CMake деревья сборки могут иметь несколько конфигураций сборки в одном дереве. Эта опция позволяет указать, какая из них должна быть протестирована. Примерами конфигураций являются
DebugиRelease.
-
--progress -
Включить краткий вывод о ходе выполнения тестов.
Когда вывод ctest направляется непосредственно в терминал, ход выполнения набора тестов отображается путем обновления одной и той же строки, а не вывода сообщений начала и конца для каждого теста в новой строке. Это может значительно уменьшить объемность вывода тестов. Сообщения о завершении теста все равно выводятся в отдельной строке для завершившихся с ошибками тестов, и итоговый сводный отчет по тестам также будет записан.
Эта опция также может быть включена путем установки переменной окружения
CTEST_PROGRESS_OUTPUT.
-
-V, --verbose -
Включить подробный вывод результатов тестов.
Вывод тестов обычно подавляется, и отображается только сводная информация. Эта опция покажет весь вывод тестов.
-
-VV, --extra-verbose -
Включить более подробный вывод результатов тестов.
Вывод тестов обычно подавляется, и отображается только сводная информация. Эта опция покажет еще больше вывода тестов.
-
--debug -
Отображение более подробной внутренней информации CTest.
Эта функция приведет к большому количеству вывода, который в основном полезен для отладки проблем панели управления.
-
--output-on-failure -
Выводить все, что выводит программа теста, если тест завершается ошибкой. Эту опцию также можно включить, установив переменную окружения
CTEST_OUTPUT_ON_FAILURE.
-
--stop-on-failure -
Останавливать выполнение тестов при возникновении первой ошибки.
-
-F -
Включить восстановление.
Эта опция позволяет CTest продолжить выполнение набора тестов, который был ранее прерван. Если прерывания не произошло, опция
-Fне окажет никакого влияния.
-
-j [<level>], --parallel [<level>] -
Запускать тесты параллельно, необязательно ограничивая параллелизм заданным уровнем.
Добавлен в версии 3.29: Ключ
<level>может быть опущен, или0, в этом случае:- В Интеграции с сервером задач параллелизм ограничен доступными маркерами задач.
- В противном случае, если значение опущено, параллелизм ограничен числом процессоров или 2, что больше.
- В противном случае, если значение равно
0, параллелизм не ограничен.
Эта опция может быть указана вместо переменной окружения
CTEST_PARALLEL_LEVEL.Эта опция может использоваться с тестовым свойством
PROCESSORS. См. Резюме меток и подпроектов.
-
--resource-spec-file <file> -
Запустить CTest с распределением ресурсов, используя файл спецификации ресурсов, указанный в
<file>.Когда ctest выполняется как клиент панели управления, это устанавливает опцию
ResourceSpecFileшага CTest Тестирования.
-
--test-load <level> -
При выполнении тестов параллельно (например, с помощью
-j), стараться не запускать тесты, когда они могут привести к тому, что нагрузка на ЦП превысит заданный порог.Когда ctest выполняется как клиент панели управления, это устанавливает опцию
TestLoadшага CTest Тестирования.
-
-Q, --quiet -
Сделать CTest тише.
Эта опция подавит весь вывод. Лог-файл вывода все равно будет сгенерирован, если указана
--output-log. Опции, такие как--verbose,--extra-verboseи--debug, игнорируются, если указана--quiet.
-
-O <file>, --output-log <file> -
Вывод в лог-файл.
Эта опция указывает CTest записать весь свой вывод в файл
<file>.
-
--output-junit <file> -
Добавлен в версии 3.21.
Запись результатов тестов в формате JUnit.
Этот параметр сообщает CTest о записи результатов тестов в
<file>в формате JUnit XML. Если<file>уже существует, он будет перезаписан. Если используется параметр-Sдля запуска скрипта панели мониторинга, используйте ключевое словоOUTPUT_JUNITс командойctest_test()вместо этого.
-
-N, --show-only[=<format>] -
Отключить фактическое выполнение тестов.
Этот параметр сообщает CTest о перечислении тестов, которые будут запущены, но фактически не будут выполняться. Полезно в сочетании с параметрами
-Rи-E.Добавлен в версии 3.14: Параметр
--show-onlyпринимает значение<format>.<format>может принимать следующие значения.-
human -
Вывод в удобном для человека формате. Не гарантируется стабильность. Это значение по умолчанию.
-
json-v1 -
Выгрузить информацию о тесте в формате JSON. См. Показать как модель объекта JSON.
-
-
-L <regex>, --label-regex <regex> -
Выполнять тесты с метками, соответствующими регулярному выражению, как описано в string(REGEX).
Этот параметр сообщает CTest о выполнении только тех тестов, метки которых соответствуют заданному регулярному выражению. При указании нескольких параметров
-L, тест будет выполняться только в том случае, если каждое регулярное выражение соответствует хотя бы одной из меток теста (т.е. несколько меток-Lобразуют отношениеAND). См. Сопоставление меток.
-
-R <regex>, --tests-regex <regex> -
Выполнять тесты, соответствующие регулярному выражению.
Этот параметр сообщает CTest о выполнении только тех тестов, имена которых соответствуют заданному регулярному выражению.
-
-E <regex>, --exclude-regex <regex> -
Исключить тесты, соответствующие регулярному выражению.
Этот параметр сообщает CTest о НЕ выполнении тестов, имена которых соответствуют заданному регулярному выражению.
-
-LE <regex>, --label-exclude <regex> -
Исключить тесты с метками, соответствующими регулярному выражению.
Этот параметр сообщает CTest о НЕ выполнении тестов, метки которых соответствуют заданному регулярному выражению. При указании нескольких параметров
-LE, тест будет исключен только в том случае, если каждое регулярное выражение соответствует хотя бы одной из меток теста (т.е. несколько меток-LEобразуют отношениеAND). См. Сопоставление меток.
-
--tests-from-file <filename> -
Добавлен в версии 3.29.
Выполнить тесты, перечисленные в заданном файле.
Этот параметр сообщает CTest о выполнении тестов, перечисленных в заданном файле. Файл должен содержать одно точное имя теста на строку. Строки, не точно соответствующие именам тестов, игнорируются. Этот параметр можно комбинировать с другими параметрами, такими как
-R,-E,-Lили-LE.
-
--exclude-from-file <filename> -
Добавлен в версии 3.29.
Исключить тесты, перечисленные в заданном файле.
Этот параметр сообщает CTest о НЕ выполнении тестов, перечисленных в заданном файле. Файл должен содержать одно точное имя теста на строку. Строки, не точно соответствующие именам тестов, игнорируются. Этот параметр можно комбинировать с другими параметрами, такими как
-R,-E,-Lили-LE.
-
-FA <regex>, --fixture-exclude-any <regex> -
Исключить фикстуры, соответствующие
<regex>, из автоматического добавления любых тестов в набор тестов.Если тест в наборе выполняемых тестов требует определенной фикстуры, настройки и очистительные тесты этой фикстуры обычно добавляются в набор тестов автоматически. Этот параметр предотвращает добавление настраивающих или очистительных тестов для фикстур, соответствующих
<regex>. Обратите внимание, что все другие функции фикстуры сохраняются, включая зависимости тестов и пропуск тестов, имеющих тесты настройки фикстуры, которые завершаются ошибкой.
-
-FS <regex>, --fixture-exclude-setup <regex> -
То же, что
-FA, за исключением исключения только соответствующих настраивающих тестов.
-
-FC <regex>, --fixture-exclude-cleanup <regex> -
То же, что
-FA, за исключением исключения только соответствующих очистительных тестов.
-
-I [Start,End,Stride,test#,test#|Test file], --tests-information -
Выполнить определенное количество тестов по номеру.
Этот параметр заставляет CTest выполнять тесты, начиная с номера
Start, заканчивая номеромEnd, и увеличивая наStride. Любые дополнительные числа послеStrideрассматриваются как отдельные номера тестов.Start,End, илиStrideмогут быть пустыми. Дополнительно можно указать файл, содержащий тот же синтаксис, что и в командной строке.
-
-U, --union -
Когда оба
-Rи-Iуказаны, по умолчанию выполняются пересечения тестов. При указании-Uвыполняется объединение тестов вместо этого.
-
--rerun-failed -
Выполнить только тесты, которые завершились ошибкой ранее.
Этот параметр сообщает CTest выполнить только тесты, которые завершились ошибкой во время предыдущего выполнения. При указании этого параметра CTest игнорирует все другие параметры, предназначенные для изменения списка запускаемых тестов (
-L,-R,-E,-LE,-Iи т.д.). В случае, если CTest выполняется и ни один тест не завершается ошибкой, последующие вызовы CTest с параметром--rerun-failedбудут выполнять набор тестов, которые в последний раз завершились ошибкой (если таковые имеются).
-
--repeat <mode>:<n> -
Повторять тесты многократно, основываясь на заданном
<mode>до<n>раз. Режимы:-
until-fail -
Требуется, чтобы каждый тест выполнялся
<n>раз без ошибок, чтобы пройти. Это полезно для поиска спорадических ошибок в тестовых случаях. -
until-pass -
Разрешает каждому тесту выполняться до
<n>раз, чтобы пройти. Повторяет тесты, если они завершаются ошибкой по любой причине. Это полезно для переносимости спорадических ошибок в тестовых случаях. -
after-timeout -
Разрешает каждому тесту выполняться до
<n>раз, чтобы пройти. Повторяет тесты только в случае таймаута. Это полезно для переносимости спорадических таймаутов в тестовых случаях на загруженных машинах.
-
-
--repeat-until-fail <n> -
Эквивалентно
--repeat until-fail:<n>.
-
--max-width <width> -
Установить максимальную ширину имени теста для вывода.
Установить максимальную ширину каждого имени теста для отображения в выводе. Это позволяет пользователю расширить вывод, чтобы избежать обрезки имени теста, что может быть очень раздражающим.
-
--interactive-debug-mode [0|1] -
Установить интерактивный режим на
0или1.Этот параметр заставляет CTest запускать тесты либо в интерактивном, либо в неинтерактивном режиме. В режиме панели мониторинга (
Experimental,Nightly,Continuous), значение по умолчанию — неинтерактивный режим. В неинтерактивном режиме переменная средыDASHBOARD_TEST_FROM_CTESTустанавливается.Перед CMake 3.11 интерактивный режим в Windows позволял отображать системные всплывающие окна отладки. Теперь, из-за использования CTest
libuvдля запуска процессов тестирования, все системные всплывающие окна отладки всегда блокируются.
-
--no-label-summary -
Отключить сводную информацию по времени для меток.
Этот параметр сообщает CTest не выводить сводную информацию для каждой метки, связанной с запущенными тестами. Если на тестах нет меток, ничего дополнительного не выводится.
-
--no-subproject-summary -
Отключить сводную информацию по времени для подпроектов.
Этот параметр сообщает CTest не выводить сводную информацию для каждого подпроекта, связанного с запущенными тестами. Если на тестах нет подпроектов, ничего дополнительного не выводится.
-
--test-dir <dir> -
Добавлен в версии 3.20.
Укажите каталог, в котором следует искать тесты, обычно каталог построения проекта CMake. Если не указано, используется текущий каталог.
-
--test-output-size-passed <size> -
Добавлен в версии 3.4.
Ограничить вывод для пройденных тестов до
<size>байтов.
-
--test-output-size-failed <size> -
Добавлен в версии 3.4.
Ограничить вывод для проваленных тестов до
<size>байтов.
-
--test-output-truncation <mode> -
Добавлен в версии 3.24.
Обрезать вывод тестов при достижении максимального размера вывода (по умолчанию),
tailилиmiddle.
-
--overwrite -
Переопределить параметр конфигурации CTest.
По умолчанию CTest использует параметры конфигурации из файла конфигурации. Данный параметр переопределит параметр конфигурации.
-
--force-new-ctest-process -
Запускать дочерние экземпляры CTest как новые процессы.
По умолчанию CTest будет запускать дочерние экземпляры CTest в рамках одного процесса. Если это поведение нежелательно, этот аргумент принудительно запустит дочерние процессы CTest в новых процессах.
-
--schedule-random -
Использовать случайный порядок для планирования тестов.
Этот параметр запустит тесты в случайном порядке. Он обычно используется для выявления неявных зависимостей в наборе тестов.
-
--submit-index -
Запись опция для старой функции сервера панели инструментов Dart2. Не использовать.
-
--timeout <seconds> -
Установить временной предел для теста по умолчанию.
Этот параметр устанавливает таймаут для всех тестов, которые еще не имеют таймаута, установленного через свойство
TIMEOUT.
-
--stop-time <time> -
Установить время, по которому все тесты должны прекратить работу.
Установите точное время, к которому все тесты должны выйти из времени. Пример:
7:00:00 -0400. Принимается любой формат времени, понимаемый анализатором даты curl. Предполагается местное время, если не указано часовой пояс.
-
--print-labels -
Вывести все доступные метки тестов.
Этот параметр не запустит тесты, а просто выведет список всех меток, связанных с набором тестов.
-
--no-tests=<action> -
Рассматривать отсутствие тестов либо как ошибку (когда
<action>установлено вerror) либо игнорировать это (когда<action>установлено вignore).Если тесты не найдены, по умолчанию CTest всегда регистрирует сообщение об ошибке, но возвращает код ошибки только в режиме сценария. Этот параметр унифицирует поведение CTest, возвращая код ошибки, если тесты не найдены, или игнорируя это.
Добавлен в версии 3.26.
Этот параметр также можно установить, задав переменную среды
CTEST_NO_TESTS_ACTION.
Просмотр справки
Чтобы вывести подробности версии или выбранные страницы из документации CMake, используйте один из следующих параметров:
-
-version [<file>], --version [<file>], /V [<file>] -
Показать заголовок программы/версии и выйти. Вывод выводится в указанный
<file>файл, если задан.
-
-h, -H, --help, -help, -usage, /? -
Вывести информацию об использовании и выйти.
Информация об использовании описывает базовый интерфейс командной строки и его параметры.
-
--help <keyword> [<file>] -
Вывести справку по одному ключевому слову CMake.
<keyword>может быть свойством, переменной, командой, политикой, генератором или модулем.Соответствующая запись справки для
<keyword>выводится в удобочитаемом текстовом формате. Вывод выводится в указанный<file>файл, если задан.Изменено в версии 3.28: До CMake 3.28 этот параметр поддерживал только имена команд.
-
--help-full [<file>] -
Вывести все руководства по справке и выйти.
Все руководства выведены в удобочитаемом текстовом формате. Вывод выводится в указанный
<file>файл, если задан.
-
--help-manual <man> [<file>] -
Вывести одно руководство по справке и выйти.
Указанное руководство выведено в удобочитаемом текстовом формате. Вывод выводится в указанный
<file>файл, если задан.
-
--help-manual-list [<file>] -
Вывести список доступных руководств по справке и выйти.
Список содержит все руководства, по которым можно получить справку, используя параметр
--help-manualс именем руководства. Вывод выводится в указанный<file>файл, если задан.
-
--help-command <cmd> [<file>] -
Вывести справку по одной команде и выйти.
Запись справки
cmake-commands(7)для<cmd>выводится в удобочитаемом текстовом формате. Вывод выводится в указанный<file>файл, если задан.
-
--help-command-list [<file>] -
Вывести список команд со справкой и выйти.
Список содержит все команды, по которым можно получить справку, используя параметр
--help-commandс именем команды. Вывод выводится в указанный<file>файл, если задан.
-
--help-commands [<file>] -
Вывести руководство cmake-commands и выйти.
Руководство
cmake-commands(7)выводится в удобочитаемом текстовом формате. Вывод выводится в указанный<file>файл, если задан.
-
--help-module <mod> [<file>] -
Вывести справку по одному модулю и выйти.
Запись справки
cmake-modules(7)для<mod>выводится в удобочитаемом текстовом формате. Вывод выводится в указанный<file>файл, если задан.
-
--help-module-list [<file>] -
Вывести список модулей со справкой и выйти.
Список содержит все модули, по которым можно получить справку, используя параметр
--help-moduleс именем модуля. Вывод выводится в указанный<file>файл, если задан.
-
--help-modules [<file>] -
Вывести руководство cmake-modules и выйти.
Руководство
cmake-modules(7)выводится в удобочитаемом текстовом формате. Вывод выводится в указанный<file>файл, если задан.
-
--help-policy <cmp> [<file>] -
Вывести справку по одной политике и выйти.
Запись справки
cmake-policies(7)для<cmp>выводится в удобочитаемом текстовом формате. Вывод выводится в указанный<file>файл, если задан.
-
--help-policy-list [<file>] -
Вывести список политик со справкой и выйти.
Список содержит все политики, по которым можно получить справку, используя параметр
--help-policyс именем политики. Вывод выводится в указанный<file>файл, если задан.
-
--help-policies [<file>] -
Вывести руководство cmake-policies и выйти.
Руководство
cmake-policies(7)выводится в удобочитаемом текстовом формате. Вывод выводится в указанный<file>файл, если задан.
-
--help-property <prop> [<file>] -
Вывести справку по одному свойству и выйти.
Записи справки
cmake-properties(7)для<prop>выводятся в удобочитаемом текстовом формате. Вывод выводится в указанный<file>файл, если задан.
-
--help-property-list [<file>] -
Вывести список свойств со справкой и выйти.
Список содержит все свойства, по которым можно получить справку, используя параметр
--help-propertyс именем свойства. Вывод выводится в указанный<file>файл, если задан.
-
--help-properties [<file>] -
Распечатать руководство cmake-properties и выйти.
Руководство
cmake-properties(7)распечатывается в удобочитаемом текстовом формате. Вывод печатается в указанный<file>файл, если задан.
-
--help-variable <var> [<file>] -
Распечатать справку по одной переменной и выйти.
Запись справки в руководстве
cmake-variables(7)для<var>печатается в удобочитаемом текстовом формате. Вывод печатается в указанный<file>файл, если задан.
-
--help-variable-list [<file>] -
Вывести список переменных со доступной справкой и выйти.
Список содержит все переменные, для которых справка может быть получена с помощью опции
--help-variableи последующим именем переменной. Вывод печатается в указанный<file>файл, если задан.
-
--help-variables [<file>] -
Распечатать руководство cmake-variables и выйти.
Руководство
cmake-variables(7)распечатывается в удобочитаемом текстовом формате. Вывод печатается в указанный<file>файл, если задан.
Сопоставление меток
Тесты могут иметь прикрепленные к ним метки. Тесты могут быть включены или исключены из выполнения теста путём фильтрации по меткам. Каждый отдельный фильтр — это регулярное выражение, применяемое к меткам, прикреплённым к тесту.
При использовании -L, чтобы тест был включён в выполнение, каждое регулярное выражение должно совпасть хотя бы с одной меткой. Использование более одной опции -L означает «соответствовать всем этим».
Опция -LE работает так же, как -L, но исключает тесты вместо их включения. Тест исключается, если каждое регулярное выражение соответствует хотя бы одной метке.
Если у теста нет прикреплённых меток, то -L никогда не включит этот тест, а -LE никогда не исключит его. В качестве примера тестов с метками рассмотрим пять тестов со следующими метками:
- test1 имеет метки tuesday и production
- test2 имеет метки tuesday и test
- test3 имеет метки wednesday и production
- test4 имеет метку wednesday
- test5 имеет метки friday и test
Запуск ctest с -L tuesday -L test выберет test2, который имеет обе метки. Запуск CTest с -L test выберет test2 и test5, потому что у обоих есть метка, соответствующая этому регулярному выражению.
Поскольку сопоставление работает с регулярными выражениями, обратите внимание, что запуск CTest с -L es сопоставит все пять тестов. Чтобы выбрать тесты tuesday и wednesday вместе, используйте одно регулярное выражение, которое соответствует любому из них, например -L "tue|wed".
Сводка меток и подпроектов
CTest выводит сводку информации о времени выполнения для каждого LABEL и подпроекта, связанного с проведёнными тестами. Сводка времени по меткам не будет включать метки, которые сопоставлены подпроектам.
Добавлена в версии 3.22: Метки, добавленные динамически во время выполнения теста, также отображаются в сводке времени выполнения. См. Дополнительные метки.
При установке свойства теста PROCESSORS, CTest отобразит взвешенное значение времени выполнения теста в сводках меток и подпроектов. Время указывается с sec*proc вместо просто sec.
Взвешенная сводка времени, представленная для каждой метки или подпроекта j вычисляется как:
Weighted Time Summary for Label/Subproject j =
sum(raw_test_time[j,i] * num_processors[j,i], i=1...num_tests[j])
for labels/subprojects j=1...total
где:
-
raw_test_time[j,i]: Время стенных часов дляiтеста для метки или подпроектаj -
num_processors[j,i]: Значение свойства CTestPROCESSORSдляiтеста для метки или подпроектаj -
num_tests[j]: Количество тестов, связанных с меткой или подпроектомj -
total: Общее количество меток или подпроектов, имеющих хотя бы один запущенный тест
Следовательно, взвешенная сводка времени для каждой метки или подпроекта представляет собой количество времени, которое CTest потратил на выполнение тестов для каждой метки или подпроекта и даёт хорошее представление о общих затратах тестов для каждой метки или подпроекта по сравнению с другими метками или подпроектами.
Например, если SubprojectA показал 100 sec*proc и SubprojectB показал 10 sec*proc, тогда CTest выделил примерно в 10 раз больше времени процессора/ядра для запуска тестов для SubprojectA по сравнению с SubprojectB (например, если будет предпринята попытка уменьшить стоимость набора тестов для всего проекта, то уменьшение стоимости набора тестов для SubprojectA , вероятно, окажет большее влияние, чем усилия по уменьшению стоимости набора тестов для SubprojectB).
Режим сборки и тестирования
CTest предоставляет командную строку для настройки (т.е. запуска cmake), сборки и/или выполнения теста:
ctest --build-and-test <path-to-source> <path-to-build>
--build-generator <generator>
[<options>...]
[--build-options <opts>...]
[--test-command <command> [<args>...]]
Шаги настройки и тестирования являются необязательными. Аргументы этой командной строки — это каталоги исходного и двоичного кода. Необходимо указать опцию --build-generator для использования --build-and-test. Если указан --test-command, он будет запущен после завершения сборки. Другие опции, влияющие на этот режим, включают:
-
--build-and-test -
Переключиться в режим сборки и тестирования.
-
--build-target -
Указать конкретную цель для сборки. Опцию можно указывать несколько раз с различными целями, в этом случае каждая цель собирается по очереди. Очистка будет выполнена перед сборкой каждой цели, если не указана опция
--build-noclean.Если цель
--build-targetне указана, будет собрана цельall.
-
--build-nocmake -
Выполнить сборку без предварительного запуска cmake.
Пропустить шаг cmake.
-
--build-run-dir -
Указать каталог для запуска программ.
Каталог, в котором будут программы после компиляции.
-
--build-two-config -
Запустить CMake дважды.
-
--build-exe-dir -
Указать каталог для исполняемого файла.
-
--build-generator -
Указать используемый генератор. См. руководство
cmake-generators(7).
-
--build-generator-platform -
Указать платформу, специфичную для генератора.
-
--build-generator-toolset -
Указать набор инструментов, специфичный для генератора.
-
--build-project -
Указать имя проекта для сборки.
-
--build-makeprogram -
Указать явный инструмент make, который должен использоваться CMake при настройке и сборке проекта. Применимо только для генераторов на основе Make и Ninja.
-
--build-noclean -
Пропустить шаг очистки make.
-
--build-config-sample -
Примерный исполняемый файл для определения конфигурации, которая должна быть использована. Например,
Debug,Releaseи т. д.
-
--build-options -
Дополнительные опции для настройки сборки (т.е. для CMake, а не для инструмента сборки). Обратите внимание, что если это указано, ключевое слово
--build-optionsи его аргументы должны быть последними опциями, заданными в командной строке, за исключением--test-command.
-
--test-command -
Команда для выполнения шага теста с опцией
--build-and-test. Все аргументы после этого ключевого слова будут считаться частью командной строки теста, поэтому она должна быть последней заданной опцией.
-
--test-timeout -
Предельный срок в секундах
Клиент панели мониторинга
CTest может работать как клиент приложения панели мониторинга программного обеспечения CDash. В качестве клиента панели мониторинга CTest выполняет последовательность шагов для настройки, сборки и тестирования программного обеспечения, а затем отправляет результаты на сервер CDash. Командная строка, используемая для отправки на сервер CDash, имеет вид:
ctest -D <dashboard> [-- <dashboard-options>...] ctest -M <model> -T <action> [-- <dashboard-options>...] ctest -S <script> [-- <dashboard-options>...] ctest -SP <script> [-- <dashboard-options>...]
Варианты для клиента панели мониторинга включают:
-
-D <dashboard>, --dashboard <dashboard> -
Выполнить тест панели мониторинга.
Этот параметр сообщает CTest действовать как клиенту CDash и выполнить тест панели мониторинга. Все тесты
<Mode><Test>, где<Mode>может бытьExperimental,Nightly, иContinuous, а<Test>может бытьStart,Update,Configure,Build,Test,Coverage, иSubmit.Если
<dashboard>не является одним из распознанных<Mode><Test>значений, это будет интерпретировано как определение переменной (см. dashboard-options ниже).
-
-M <model>, --test-model <model> -
Устанавливает модель для панели мониторинга.
Этот параметр сообщает CTest действовать как клиенту CDash, где
<model>может бытьExperimental,Nightly, иContinuous. Сочетание-Mи-Tаналогично-D.
-
-T <action>, --test-action <action> -
Устанавливает действие на панели мониторинга.
Этот параметр сообщает CTest действовать как клиенту CDash и выполнить какое-либо действие, такое как
start,build,testи т.д. Полный список действий см. в разделе Шаги клиента панели мониторинга. Сочетание-Mи-Tаналогично-D.
-
-S <script>, --script <script> -
Выполнить панель мониторинга для конфигурации.
Этот параметр сообщает CTest загрузить скрипт конфигурации, который устанавливает ряд параметров, таких как бинарные и исходные каталоги. Затем CTest выполнит необходимые действия для создания и запуска панели мониторинга. Этот параметр по существу настраивает панель мониторинга и затем запускает
ctest -Dс соответствующими параметрами.
-
-SP <script>, --script-new-process <script> -
Выполнить панель мониторинга для конфигурации.
Этот параметр выполняет те же операции, что и
-S, но выполнит их в отдельном процессе. Это в первую очередь полезно в тех случаях, когда скрипт может изменить среду, и вам не нужно, чтобы изменённая среда влияла на другие скрипты-S.
Доступные <dashboard-options> следующие:
-
-D <var>:<type>=<value> -
Определить переменную для режима скрипта.
Передать значения переменных в командной строке. Используйте совместно с
-S, чтобы передать значения переменных в скрипт панели мониторинга. Разбор-Dаргументов как значений переменных выполняется только в том случае, если значение, следующее за-D, не соответствует ни одному из известных типов панелей мониторинга.
-
--group <group> -
Укажите группу, в которую вы хотите отправить результаты.
Отправить панель мониторинга в указанную группу вместо стандартной. По умолчанию панель мониторинга отправляется в группы Nightly, Experimental или Continuous, но при использовании этого параметра группа может быть произвольной.
Это заменяет устаревший параметр
--track. Несмотря на изменение названия, его поведение не изменилось.
-
-A <file>, --add-notes <file> -
Добавить файл заметок при отправке.
Этот параметр сообщает CTest включить файл заметок при отправке панели мониторинга.
-
--tomorrow-tag -
NightlyилиExperimentalначинается с тега следующего дня.Это полезно, если сборка не завершится в течение одного дня.
-
--extra-submit <file>[;<file>] -
Отправить дополнительные файлы на панель мониторинга.
Этот параметр отправит дополнительные файлы на панель мониторинга.
-
--http-header <header> -
Добавлена в версии 3.29.
Добавить HTTP-заголовок при отправке на панель мониторинга.
Этот параметр заставит CTest добавить указанный заголовок при отправке на панель мониторинга. Этот параметр можно указывать несколько раз.
-
--http1.0 -
Отправить с помощью
HTTP 1.0.Этот параметр заставит CTest использовать
HTTP 1.0для отправки файлов на панель мониторинга вместоHTTP 1.1.
-
--no-compress-output -
Не сжимать вывод теста при отправке.
Этот флаг отключит автоматическое сжатие вывода теста. Используйте его для сохранения совместимости со старой версией CDash, которая не поддерживает сжатый вывод теста.
Шаги клиента панели мониторинга
CTest определяет упорядоченный список шагов тестирования, некоторые или все из которых могут быть выполнены как клиент панели мониторинга:
-
Start -
Запустить новую отправку на панель мониторинга, которая будет состоять из результатов, записанных следующими шагами. См. раздел Шаг запуска CTest ниже.
-
Update -
Обновить дерево исходных файлов из репозитория системы контроля версий. Записать старые и новые версии, а также список обновлённых исходных файлов. См. раздел Шаг обновления CTest ниже.
-
Configure -
Настроить программное обеспечение, выполнив команду в дереве сборки. Записать журнал вывода конфигурации. См. раздел Шаг конфигурации CTest ниже.
-
Build -
Собрать программное обеспечение, выполнив команду в дереве сборки. Записать журнал вывода сборки и обнаружить предупреждения и ошибки. См. раздел Шаг сборки CTest ниже.
-
Test -
Протестировать программное обеспечение, загрузив
CTestTestfile.cmakeиз дерева сборки и выполнив определённые тесты. Записать вывод и результат каждого теста. См. раздел Шаг тестирования CTest ниже. -
Coverage -
Вычислить покрытие исходного кода, выполнив инструмент анализа покрытия и записав его вывод. См. раздел Шаг покрытия CTest ниже.
-
MemCheck -
Выполнить набор тестов программного обеспечения с помощью инструмента проверки памяти. Записать вывод теста, результаты и проблемы, сообщённые инструментом. См. раздел Шаг проверки памяти CTest ниже.
-
Submit -
Отправить результаты, записанные с других шагов тестирования, на сервер панели мониторинга качества программного обеспечения. См. раздел Шаг отправки CTest ниже.
Режимы клиента панели мониторинга
CTest определяет три режима работы в качестве клиента панели мониторинга:
-
Nightly -
Этот режим предназначен для вызова один раз в день, обычно ночью. Он включает
Start,Update,Configure,Build,Test,Coverage, иSubmitшаги по умолчанию. Выбранные шаги выполняются даже если шагUpdateне сообщает о каких-либо изменениях в дереве исходных файлов. -
Continuous -
Этот режим предназначен для многократного вызова на протяжении дня. Он включает
Start,Update,Configure,Build,Test,Coverage, иSubmitшаги по умолчанию, но завершается после шагаUpdate, если он не сообщает об изменениях в дереве исходных файлов. -
Experimental -
Этот режим предназначен для вызова разработчиком для тестирования локальных изменений. Он включает
Start,Configure,Build,Test,Coverage, иSubmitшаги по умолчанию.
Клиент панели мониторинга через командную строку CTest
CTest может выполнять тестирование на уже сгенерированном дереве сборки. Запустите команду ctest с текущим рабочим каталогом, установленным в дереве сборки, и используйте одну из этих сигнатур:
ctest -D <mode>[<step>] ctest -M <mode> [-T <step>]...
<mode> должен быть одним из вышеперечисленных режимов клиента панели мониторинга, а каждый <step> должен быть одним из вышеперечисленных шагов клиента панели мониторинга.
CTest считывает параметры конфигурации клиента панели мониторинга из файла в дереве сборки с именем CTestConfiguration.ini или DartConfiguration.tcl (названия являются историческими). Формат файла:
# Lines starting in '#' are comments. # Other non-blank lines are key-value pairs. <setting>: <value>
где <setting> — имя параметра, а <value> — значение параметра.
В дереве сборки, сгенерированном CMake, этот файл конфигурации генерируется модулем CTest, если он включён проектом. Модуль использует переменные для получения значения каждого параметра, как описано в документации к параметрам ниже.
Клиент панели мониторинга через скрипт CTest
CTest может выполнять тестирование, управляемое скриптом cmake-language(7), который создаёт и поддерживает дерево исходных и сборки, а также выполняет шаги тестирования. Запустите команду ctest с текущим рабочим каталогом вне дерева сборки и используйте одну из этих сигнатур:
ctest -S <script> ctest -SP <script>
Файл <script> должен вызывать команды Команды CTest, чтобы явно выполнить шаги тестирования, как описано ниже. Команды получают настройки конфигурации клиента панели мониторинга из своих аргументов или из переменных, установленных в скрипте.
Конфигурация клиента панели мониторинга
Шаги клиента панели мониторинга Шаги клиента панели мониторинга могут быть сконфигурированы с помощью именованных настроек, как описано в следующих разделах.
Шаг запуска CTest
Начать новую отправку в панель мониторинга, которая будет состоять из результатов, записанных следующими шагами.
В Скрипте CTest, команда ctest_start() выполняет этот шаг. Аргументы команды могут указать некоторые из настроек шага. Сначала команда выполнит команду, указанную в командной строке, если она задана в переменной CTEST_CHECKOUT_COMMAND, чтобы инициализировать каталог исходного кода.
Настройки конфигурации включают:
-
BuildDirectory -
Полный путь к дереву сборки проекта.
-
Переменная скрипта CTest Script:
CTEST_BINARY_DIRECTORY -
Переменная модуля
CTest:PROJECT_BINARY_DIR
-
Переменная скрипта CTest Script:
-
SourceDirectory -
Полный путь к дереву исходного кода проекта.
-
Переменная скрипта CTest Script:
CTEST_SOURCE_DIRECTORY -
Переменная модуля
CTest:PROJECT_SOURCE_DIR
-
Переменная скрипта CTest Script:
Шаг обновления CTest
В Скрипте CTest, команда ctest_update() выполняет этот шаг. Аргументы команды могут указать некоторые из настроек шага.
Настройки конфигурации для указания инструмента контроля версий включают:
-
BZRCommand -
bzrинструмент командной строки, используемый, если исходное дерево управляется Bazaar.-
Сценарий CTest переменная:
CTEST_BZR_COMMAND -
CTestмодульная переменная: не задано
-
Сценарий CTest переменная:
-
BZRUpdateOptions -
Параметры командной строки для
BZRCommandпри обновлении исходного кода.-
Сценарий CTest переменная:
CTEST_BZR_UPDATE_OPTIONS -
CTestмодульная переменная: не задано
-
Сценарий CTest переменная:
-
CVSCommand -
cvsинструмент командной строки, используемый, если исходное дерево управляется CVS.-
Сценарий CTest переменная:
CTEST_CVS_COMMAND -
CTestмодульная переменная:CVSCOMMAND
-
Сценарий CTest переменная:
-
CVSUpdateOptions -
Параметры командной строки для
CVSCommandпри обновлении исходного кода.-
Сценарий CTest переменная:
CTEST_CVS_UPDATE_OPTIONS -
CTestмодульная переменная:CVS_UPDATE_OPTIONS
-
Сценарий CTest переменная:
-
GITCommand -
gitинструмент командной строки, используемый, если исходное дерево управляется Git.-
Сценарий CTest переменная:
CTEST_GIT_COMMAND -
CTestмодульная переменная:GITCOMMAND
Исходное дерево обновляется с помощью
git fetchиgit reset --hardвFETCH_HEAD. Результат такой же, как и приgit pull, за исключением того, что все локальные изменения перезаписываются. ИспользуйтеGITUpdateCustomдля указания другого подхода. -
Сценарий CTest переменная:
-
GITInitSubmodules -
Если задано, CTest обновит подмодули репозитория перед обновлением.
-
Сценарий CTest переменная:
CTEST_GIT_INIT_SUBMODULES -
CTestмодульная переменная:CTEST_GIT_INIT_SUBMODULES
-
Сценарий CTest переменная:
-
GITUpdateCustom -
Укажите пользовательскую командную строку (в виде списка, разделённого точкой с запятой) для выполнения в исходном дереве (рабочей области Git), чтобы обновить его вместо запуска
GITCommand.-
Сценарий CTest переменная:
CTEST_GIT_UPDATE_CUSTOM -
CTestмодульная переменная:CTEST_GIT_UPDATE_CUSTOM
-
Сценарий CTest переменная:
-
GITUpdateOptions -
Параметры командной строки для
GITCommandпри обновлении исходного кода.-
Сценарий CTest переменная:
CTEST_GIT_UPDATE_OPTIONS -
CTestмодульная переменная:GIT_UPDATE_OPTIONS
-
Сценарий CTest переменная:
-
HGCommand -
hgинструмент командной строки, используемый, если исходное дерево управляется Mercurial.-
Сценарий CTest переменная:
CTEST_HG_COMMAND -
CTestмодульная переменная: не задано
-
Сценарий CTest переменная:
-
HGUpdateOptions -
Параметры командной строки для
HGCommandпри обновлении исходного кода.-
Сценарий CTest переменная:
CTEST_HG_UPDATE_OPTIONS -
CTestмодульная переменная: не задано
-
Сценарий CTest переменная:
-
P4Client -
Значение параметра
-cдляP4Command.-
Сценарий CTest переменная:
CTEST_P4_CLIENT -
CTestмодульная переменная:CTEST_P4_CLIENT
-
Сценарий CTest переменная:
-
P4Command -
p4инструмент командной строки, используемый, если исходное дерево управляется Perforce.-
Сценарий CTest переменная:
CTEST_P4_COMMAND -
CTestмодульная переменная:P4COMMAND
-
Сценарий CTest переменная:
-
P4Options -
Параметры командной строки для
P4Commandдля всех вызовов.-
Сценарий CTest переменная:
CTEST_P4_OPTIONS -
CTestмодульная переменная:CTEST_P4_OPTIONS
-
Сценарий CTest переменная:
-
P4UpdateCustom -
Укажите пользовательскую командную строку (в виде списка, разделённого точкой с запятой) для выполнения в исходном дереве (дереве Perforce), чтобы обновить его вместо запуска
P4Command.- Сценарий CTest переменная: не задано
-
CTestмодульная переменная:CTEST_P4_UPDATE_CUSTOM
-
P4UpdateOptions -
Параметры командной строки для
P4Commandпри обновлении исходного кода.-
Сценарий CTest переменная:
CTEST_P4_UPDATE_OPTIONS -
CTestмодульная переменная:CTEST_P4_UPDATE_OPTIONS
-
Сценарий CTest переменная:
-
SVNCommand -
svnинструмент командной строки, используемый, если исходное дерево управляется Subversion.-
Сценарий CTest переменная:
CTEST_SVN_COMMAND -
CTestмодульная переменная:SVNCOMMAND
-
Сценарий CTest переменная:
-
SVNOptions -
Параметры командной строки для
SVNCommandдля всех вызовов.-
Сценарий CTest переменная:
CTEST_SVN_OPTIONS -
CTestмодульная переменная:CTEST_SVN_OPTIONS
-
Сценарий CTest переменная:
-
SVNUpdateOptions -
Параметры командной строки для
SVNCommandпри обновлении исходного кода.-
Сценарий CTest переменная:
CTEST_SVN_UPDATE_OPTIONS -
CTestмодульная переменная:SVN_UPDATE_OPTIONS
-
Сценарий CTest переменная:
-
UpdateCommand
-
Укажите инструмент командной строки для управления системой контроля версий без обнаружения VCS, управляющего деревом исходного кода.
-
Сценарий CTest переменная:
CTEST_UPDATE_COMMAND -
CTestмодульная переменная:<VCS>COMMANDкогдаUPDATE_TYPEравно<vcs>, иначеUPDATE_COMMAND
-
Сценарий CTest переменная:
-
UpdateOptions -
Параметры командной строки для
UpdateCommand.-
Сценарий CTest переменная:
CTEST_UPDATE_OPTIONS -
CTestмодульная переменная:<VCS>_UPDATE_OPTIONSкогдаUPDATE_TYPEравно<vcs>, иначеUPDATE_OPTIONS
-
Сценарий CTest переменная:
-
UpdateType -
Укажите систему контроля версий, которая управляет деревом исходного кода, если её нельзя автоматически обнаружить. Значение может быть
bzr,cvs,git,hg,p4, илиsvn.- Сценарий CTest переменная: нет, обнаружено из дерева исходного кода
-
CTestмодульная переменная:UPDATE_TYPEесли установлено, иначеCTEST_UPDATE_TYPE
-
UpdateVersionOnly -
Укажите, что вы хотите, чтобы команда обновления контроля версий обнаружила только текущую версию, которая развёрнута, а не обновлялась до другой версии.
-
Сценарий CTest переменная:
CTEST_UPDATE_VERSION_ONLY
-
Сценарий CTest переменная:
-
UpdateVersionOverride -
Укажите текущую версию вашего дерева исходного кода.
Когда эта переменная установлена в непустую строку, CTest сообщит указанное вами значение, а не будет использовать команду обновления для обнаружения текущей развёрнутой версии. Использование этой переменной имеет приоритет над
UpdateVersionOnly. Как иUpdateVersionOnly, использование этой переменной сообщает CTest не обновлять дерево исходного кода до другой версии.-
Сценарий CTest переменная:
CTEST_UPDATE_VERSION_OVERRIDE
-
Сценарий CTest переменная:
Дополнительные настройки конфигурации включают:
-
NightlyStartTime -
В режиме панели управления
Nightly, укажите "время начала ночного сборки". В централизованных системах контроля версий (cvsиsvn), этапUpdateизвлекает версию программного обеспечения на момент этого времени, чтобы несколько клиентов выбрали общую версию для тестирования. Это не определено в распределенных системах контроля версий, поэтому настройка игнорируется.-
Сценарий CTest переменная:
CTEST_NIGHTLY_START_TIME -
CTestмодульная переменная:NIGHTLY_START_TIMEесли установлено, иначеCTEST_NIGHTLY_START_TIME
-
Сценарий CTest переменная:
Шаг CTest Настройка
В Сценарии CTest, команда ctest_configure() выполняет этот шаг. Аргументы к команде могут указать некоторые из параметров шага.
Настройки конфигурации включают:
-
ConfigureCommand -
Командная строка для запуска процесса конфигурации программного обеспечения. Она будет выполнена в расположении, указанном в настройке
BuildDirectory.-
Сценарий CTest переменная:
CTEST_CONFIGURE_COMMAND -
CTestмодульная переменная:CMAKE_COMMANDза которым следуетPROJECT_SOURCE_DIR
-
Сценарий CTest переменная:
-
LabelsForSubprojects -
Укажите список меток, разделённых точкой с запятой, которые будут обрабатываться как подпроекты. Эта привязка будет передана в CDash при отправке результатов конфигурации, тестирования или сборки.
-
Сценарий CTest переменная:
CTEST_LABELS_FOR_SUBPROJECTS -
CTestмодульная переменная:CTEST_LABELS_FOR_SUBPROJECTS
-
Сценарий CTest переменная:
Шаг CTest Сборка
В Сценарии CTest, команда ctest_build() выполняет этот шаг. Аргументы к команде могут указать некоторые из параметров шага.
Настройки конфигурации включают:
-
DefaultCTestConfigurationType -
Когда система сборки позволяет выбрать конфигурацию во время сборки (например,
Debug,Release), это указывает на стандартную конфигурацию для сборки, когда опция-Cне задаётся команде ctest. Значение будет подставлено в значениеMakeCommand, чтобы заменить литеральную строку${CTEST_CONFIGURATION_TYPE}, если она встречается.-
Сценарий CTest переменная:
CTEST_CONFIGURATION_TYPE -
CTestмодульная переменная:DEFAULT_CTEST_CONFIGURATION_TYPE, инициализированная переменной средыCMAKE_CONFIG_TYPE
-
Сценарий CTest переменная:
-
LabelsForSubprojects -
Укажите список меток, разделённых точкой с запятой, которые будут обрабатываться как подпроекты. Эта привязка будет передана в CDash при отправке результатов конфигурации, тестирования или сборки.
-
Сценарий CTest переменная:
CTEST_LABELS_FOR_SUBPROJECTS -
CTestмодульная переменная:CTEST_LABELS_FOR_SUBPROJECTS
-
Сценарий CTest переменная:
-
MakeCommand -
Командная строка для запуска процесса сборки программного обеспечения. Она будет выполнена в расположении, указанном в настройке
BuildDirectory.-
Сценарий CTest переменная:
CTEST_BUILD_COMMAND -
CTestмодульная переменная:MAKECOMMAND, инициализированная командойbuild_command()
-
Сценарий CTest переменная:
-
UseLaunchers -
Для деревьев сборки, сгенерированных CMake с помощью одного из генераторов Makefile или генератора
Ninja, укажите, включена ли функцияCTEST_USE_LAUNCHERSмодулемCTestUseLaunchers(также включён модулемCTest). При включении сгенерированная система сборки обернёт каждый вызов компилятора, линкера или пользовательской командной строки «запускателем», который связывается с CTest через переменные среды и файлы, чтобы сообщить подробную информацию о предупреждениях и ошибках сборки. В противном случае CTest должен "извлечь" диагностическую информацию из журнала вывода сборки.-
Сценарий CTest переменная:
CTEST_USE_LAUNCHERS -
CTestмодульная переменная:CTEST_USE_LAUNCHERS
-
Сценарий CTest переменная:
Шаг CTest Тестирование
В скрипте CTest, команда ctest_test() выполняет этот шаг. Аргументы команды могут указывать некоторые настройки шага.
Настройки конфигурации включают:
-
ResourceSpecFile -
Укажите файл спецификации ресурсов файл спецификации ресурсов.
-
Переменная скрипта CTest:
CTEST_RESOURCE_SPEC_FILE -
Переменная модуля
CTest:CTEST_RESOURCE_SPEC_FILE
Дополнительную информацию см. в разделе Распределение ресурсов.
-
Переменная скрипта CTest:
-
LabelsForSubprojects -
Укажите список меток, разделённых точкой с запятой, которые будут обрабатываться как подпроекты. Это отображение будет передано в CDash при отправке результатов конфигурации, тестирования или сборки.
-
Переменная скрипта CTest:
CTEST_LABELS_FOR_SUBPROJECTS -
Переменная модуля
CTest:CTEST_LABELS_FOR_SUBPROJECTS
-
Переменная скрипта CTest:
-
TestLoad -
При запуске тестов параллельно (например, с помощью
-j) старайтесь не запускать тесты, которые могут привести к превышению заданного порога загрузки ЦП.-
Переменная скрипта CTest:
CTEST_TEST_LOAD -
Переменная модуля
CTest:CTEST_TEST_LOAD
-
Переменная скрипта CTest:
-
TimeOut -
Значение по умолчанию для таймаута каждого теста, если не указано свойством теста
TIMEOUTили флагом--timeout.-
Переменная скрипта CTest:
CTEST_TEST_TIMEOUT -
Переменная модуля
CTest:DART_TESTING_TIMEOUT
-
Переменная скрипта CTest:
Чтобы отправить дополнительные значения тестов в CDash, см. Дополнительные измерения тестов.
Шаг CTest Coverage
В скрипте CTest, команда ctest_coverage() выполняет этот шаг. Аргументы команды могут указывать некоторые настройки шага.
Настройки конфигурации включают:
-
CoverageCommand -
Инструмент командной строки для выполнения анализа покрытия кода. Он будет выполняться в расположении, указанном настройкой
BuildDirectory.-
Переменная скрипта CTest:
CTEST_COVERAGE_COMMAND -
Переменная модуля
CTest:COVERAGE_COMMAND
-
Переменная скрипта CTest:
-
CoverageExtraFlags -
Укажите параметры командной строки для инструмента
CoverageCommand.-
Переменная скрипта CTest:
CTEST_COVERAGE_EXTRA_FLAGS -
Переменная модуля
CTest:COVERAGE_EXTRA_FLAGS
Эти параметры являются первыми аргументами, передаваемыми инструменту
CoverageCommand. -
Переменная скрипта CTest:
Шаг CTest MemCheck
В скрипте CTest, команда ctest_memcheck() выполняет этот шаг. Аргументы команды могут указывать некоторые настройки шага.
Настройки конфигурации включают:
-
MemoryCheckCommand -
Инструмент командной строки для выполнения динамического анализа. Команды тестов будут запускаться через этот инструмент.
-
Переменная скрипта CTest:
CTEST_MEMORYCHECK_COMMAND -
Переменная модуля
CTest:MEMORYCHECK_COMMAND
-
Переменная скрипта CTest:
-
MemoryCheckCommandOptions -
Укажите параметры командной строки для инструмента
MemoryCheckCommand. Они будут размещены перед командой запуска теста.-
Переменная скрипта CTest:
CTEST_MEMORYCHECK_COMMAND_OPTIONS -
Переменная модуля
CTest:MEMORYCHECK_COMMAND_OPTIONS
-
Переменная скрипта CTest:
-
MemoryCheckType -
Укажите тип проверки памяти для выполнения.
-
Переменная скрипта CTest:
CTEST_MEMORYCHECK_TYPE -
Переменная модуля
CTest:MEMORYCHECK_TYPE
-
Переменная скрипта CTest:
-
MemoryCheckSanitizerOptions -
Укажите параметры для инструментов проверки памяти при запуске со сборкой, поддерживающей проверку.
-
Переменная скрипта CTest:
CTEST_MEMORYCHECK_SANITIZER_OPTIONS -
Переменная модуля
CTest:MEMORYCHECK_SANITIZER_OPTIONS
-
Переменная скрипта CTest:
-
MemoryCheckSuppressionFile -
Укажите файл, содержащий правила подавления для инструмента
MemoryCheckCommand. Он будет передан с параметрами, соответствующими инструменту.-
Переменная скрипта CTest:
CTEST_MEMORYCHECK_SUPPRESSIONS_FILE -
Переменная модуля
CTest:MEMORYCHECK_SUPPRESSIONS_FILE
-
Переменная скрипта CTest:
Дополнительные настройки конфигурации включают:
-
BoundsCheckerCommand -
Укажите
MemoryCheckCommand, который известен как совместимый с командной строкой Bounds Checker.- CTest Script переменная: none
-
CTestмодульная переменная: none
-
PurifyCommand -
Укажите
MemoryCheckCommand, который известен как совместимый с командной строкой Purify.- CTest Script переменная: none
-
CTestмодульная переменная:PURIFYCOMMAND
-
ValgrindCommand -
Укажите
MemoryCheckCommand, который известен как совместимый с командной строкой Valgrind.- CTest Script переменная: none
-
CTestмодульная переменная:VALGRIND_COMMAND
-
ValgrindCommandOptions -
Укажите опции командной строки для инструмента
ValgrindCommand. Они будут размещены перед командной строкой теста.- CTest Script переменная: none
-
CTestмодульная переменная:VALGRIND_COMMAND_OPTIONS
-
DrMemoryCommand -
Укажите
MemoryCheckCommand, который известен как совместимый с командной строкой DrMemory.- CTest Script переменная: none
-
CTestмодульная переменная:DRMEMORY_COMMAND
-
DrMemoryCommandOptions -
Укажите опции командной строки для инструмента
DrMemoryCommand. Они будут размещены перед командной строкой теста.- CTest Script переменная: none
-
CTestмодульная переменная:DRMEMORY_COMMAND_OPTIONS
-
CudaSanitizerCommand -
Укажите
MemoryCheckCommand, который известен как совместимый с командной строкой cuda-memcheck или compute-sanitizer.- CTest Script переменная: none
-
CTestмодульная переменная:CUDA_SANITIZER_COMMAND
-
CudaSanitizerCommandOptions -
Укажите опции командной строки для инструмента
CudaSanitizerCommand. Они будут размещены перед командной строкой теста.- CTest Script переменная: none
-
CTestмодульная переменная:CUDA_SANITIZER_COMMAND_OPTIONS
Шаг отправки CTest
В CTest Script, команда ctest_submit() выполняет этот шаг. Аргументы к команде могут указать некоторые настройки шага.
Настройки конфигурации включают:
-
BuildName -
Опишите платформу клиента панели мониторинга с помощью короткой строки. (Операционная система, компилятор и т. д.)
-
Сценарий CTest переменная:
CTEST_BUILD_NAME -
CTestмодульная переменная:BUILDNAME
-
Сценарий CTest переменная:
-
CDashVersion -
Устаревшая опция. Не используется.
- Сценарий CTest переменная: нет, определено из сервера
-
CTestмодульная переменная:CTEST_CDASH_VERSION
-
CTestSubmitRetryCount -
Укажите количество попыток повторной отправки при сбое сети.
-
Сценарий CTest переменная: нет, используйте опцию
ctest_submit()RETRY_COUNT. -
CTestмодульная переменная:CTEST_SUBMIT_RETRY_COUNT
-
Сценарий CTest переменная: нет, используйте опцию
-
CTestSubmitRetryDelay -
Укажите задержку перед повторной отправкой при сбое сети.
-
Сценарий CTest переменная: нет, используйте опцию
ctest_submit()RETRY_DELAY. -
CTestмодульная переменная:CTEST_SUBMIT_RETRY_DELAY
-
Сценарий CTest переменная: нет, используйте опцию
-
CurlOptions -
Устарело начиная с версии 3.30: Используйте
TLSVerifyвместо этого.Укажите список опций, разделенных точкой с запятой, для управления библиотекой Curl, которую CTest использует внутри для подключения к серверу.
-
Сценарий CTest переменная:
CTEST_CURL_OPTIONS -
CTestмодульная переменная:CTEST_CURL_OPTIONS
Возможные опции:
-
CURLOPT_SSL_VERIFYPEER_OFF -
Отключить опцию curl
CURLOPT_SSL_VERIFYPEER. -
CURLOPT_SSL_VERIFYHOST_OFF -
Отключить опцию curl
CURLOPT_SSL_VERIFYHOST.
-
Сценарий CTest переменная:
-
DropLocation -
Устаревшая опция. Если
SubmitURLне установлено, оно формируется изDropMethod,DropSiteUser,DropSitePassword,DropSite, иDropLocation.-
Сценарий CTest переменная:
CTEST_DROP_LOCATION -
CTestмодульная переменная:DROP_LOCATIONесли установлено, иначеCTEST_DROP_LOCATION
-
Сценарий CTest переменная:
-
DropMethod -
Устаревшая опция. Если
SubmitURLне установлено, оно формируется изDropMethod,DropSiteUser,DropSitePassword,DropSite, иDropLocation.-
Сценарий CTest переменная:
CTEST_DROP_METHOD -
CTestмодульная переменная:DROP_METHODесли установлено, иначеCTEST_DROP_METHOD
-
Сценарий CTest переменная:
-
DropSite -
Устаревшая опция. Если
SubmitURLне установлено, оно формируется изDropMethod,DropSiteUser,DropSitePassword,DropSite, иDropLocation.-
Сценарий CTest переменная:
CTEST_DROP_SITE -
CTestмодульная переменная:DROP_SITEесли установлено, иначеCTEST_DROP_SITE
-
Сценарий CTest переменная:
-
DropSitePassword -
Устаревшая опция. Если
SubmitURLне установлено, оно формируется изDropMethod,DropSiteUser,DropSitePassword,DropSite, иDropLocation.-
Сценарий CTest переменная:
CTEST_DROP_SITE_PASSWORD -
CTestмодульная переменная:DROP_SITE_PASSWORDесли установлено, иначеCTEST_DROP_SITE_PASWORD
-
Сценарий CTest переменная:
-
DropSiteUser -
Устаревшая опция. Если
SubmitURLне установлено, оно формируется изDropMethod,DropSiteUser,DropSitePassword,DropSite, иDropLocation.-
Сценарий CTest переменная:
CTEST_DROP_SITE_USER -
CTestмодульная переменная:DROP_SITE_USERесли установлено, иначеCTEST_DROP_SITE_USER
-
Сценарий CTest переменная:
-
IsCDash -
Устаревшая опция. Не используется.
-
Сценарий CTest переменная:
CTEST_DROP_SITE_CDASH -
CTestмодульная переменная:CTEST_DROP_SITE_CDASH
-
Сценарий CTest переменная:
-
ScpCommand -
Устаревшая опция. Не используется.
-
Сценарий CTest переменная:
CTEST_SCP_COMMAND -
CTestмодульная переменная:SCPCOMMAND
-
Сценарий CTest переменная:
-
Site -
Опишите сайт хоста клиента панели мониторинга с помощью короткой строки. (Имя хоста, домен и т. д.)
-
Сценарий CTest переменная:
CTEST_SITE -
CTestмодульная переменная:SITE, инициализируется командойsite_name()
-
Сценарий CTest переменная:
-
SubmitURL -
URL сервера панели мониторинга
httpилиhttpsдля отправки данных.-
Сценарий CTest переменная:
CTEST_SUBMIT_URL -
CTestмодульная переменная:SUBMIT_URLесли установлено, иначеCTEST_SUBMIT_URL
-
Сценарий CTest переменная:
-
SubmitInactivityTimeout -
Время ожидания отправки, после которого отправка отменяется, если она не завершена. Укажите значение 0, чтобы отключить таймаут.
-
Сценарий CTest переменная:
CTEST_SUBMIT_INACTIVITY_TIMEOUT -
CTestмодульная переменная:CTEST_SUBMIT_INACTIVITY_TIMEOUT
-
Сценарий CTest переменная:
-
TLSVersion -
Добавлен в версии 3.30.
Укажите минимальную версию TLS, разрешенную при отправке на панель мониторинга через URL-адреса
https://.-
Сценарий CTest переменная:
CTEST_TLS_VERSION -
CTestмодульная переменная:CTEST_TLS_VERSION
Изменено в версии 3.31: По умолчанию используется TLS 1.2. Ранее по умолчанию минимальная версия не навязывалась.
-
Сценарий CTest переменная:
-
TLSVerify
-
Добавлен в версии 3.30.
Укажите булево значение, определяющее, нужно ли проверять сертификат сервера при отправке на панель управления через
https://URL-адреса.-
Сценарий CTest переменная:
CTEST_TLS_VERIFY -
CTestмодульная переменная:CTEST_TLS_VERIFY
Изменено в версии 3.31: По умолчанию включено. Ранее по умолчанию было выключено. Пользователи могут установить переменную окружения
CMAKE_TLS_VERIFYв значение0для восстановления старого значения по умолчанию. -
Сценарий CTest переменная:
-
TriggerSite -
Устаревший параметр. Не используется.
-
Сценарий CTest переменная:
CTEST_TRIGGER_SITE -
CTestмодульная переменная:TRIGGER_SITEесли задано, иначеCTEST_TRIGGER_SITE
-
Сценарий CTest переменная:
Показать как модель JSON объекта
Добавлен в версии 3.14.
При использовании параметра командной строки --show-only=json-v1, информация о тесте выводится в формате JSON. Версия 1.0 модели JSON объекта определяется следующим образом:
-
kind -
Строка "ctestInfo".
-
version -
Объект JSON, определяющий компоненты версии. Его членами являются
-
major -
Целое неотрицательное число, определяющее компонент основной версии.
-
minor -
Целое неотрицательное число, определяющее компонент дополнительной версии.
-
-
backtraceGraph -
Объект JSON, представляющий информацию об обратной трассировке со следующими членами:
-
commands -
Список имён команд.
-
files -
Список имён файлов.
-
nodes -
Список узловых объектов JSON с членами:
-
command -
Индекс в члене
commandsобъектаbacktraceGraph. -
file -
Индекс в члене
filesобъектаbacktraceGraph. -
line -
Номер строки в файле, где была добавлена обратная трассировка.
-
parent -
Индекс в члене
nodesобъектаbacktraceGraph, представляющий родительский элемент в графе.
-
-
-
tests -
Массив JSON, перечисляющий информацию о каждом тесте. Каждый элемент — объект JSON с членами:
-
name -
Имя теста.
-
config -
Конфигурация, на которой может выполняться тест. Пустая строка означает любую конфигурацию.
-
command -
Список, где первый элемент — команда теста, а оставшиеся элементы — аргументы команды.
-
backtrace -
Индекс в члене
nodesобъектаbacktraceGraph. -
properties -
Свойства теста. Может содержать ключи для каждого из поддерживаемых свойств теста.
-
Распределение ресурсов
CTest предоставляет механизм для тестов, позволяющий указать необходимые ресурсы в мельчайших деталях, а также для пользователей — указать доступные ресурсы на рабочей машине. Это позволяет CTest отслеживать, какие ресурсы используются, а какие свободны, планируя тесты таким образом, чтобы они не пытались захватить недоступные ресурсы.
При использовании функции распределения ресурсов CTest не будет перераспределять ресурсы. Например, если ресурс имеет 8 слотов, CTest не запустит тесты, которые в совокупности используют больше 8 слотов за раз. Это ограничивает количество выполняемых тестов в любой момент времени, даже если используется большое значение аргумента -j, если эти тесты используют несколько слотов из одного и того же ресурса. Кроме того, это означает, что отдельный тест, использующий больше ресурсов, чем доступно на машине, вообще не будет запущен (и будет сообщено как Not Run).
Типичный пример использования этой функции — тесты, требующие использования GPU. Несколько тестов могут одновременно выделять память из GPU, но если слишком много тестов попробуют сделать это сразу, некоторые из них не смогут выделить память, что приведёт к завершению теста с ошибкой, даже если бы тест завершился успешно при наличии необходимой памяти. Используя функцию распределения ресурсов, каждый тест может указать, сколько памяти ему требуется из GPU, что позволит CTest планировать тесты так, что одновременный запуск нескольких таких тестов не исчерпает пул памяти GPU.
Обратите внимание, что CTest не понимает, что такое GPU или сколько у него памяти. Он не может общаться с GPU для получения этой информации или выполнения каких-либо операций управления памятью, хотя проект может определить тест, который предоставляет данные о тестовой машине (см. Динамически сгенерированный файл спецификации ресурсов).
CTest отслеживает список абстрактных типов ресурсов, каждый из которых имеет определённое количество слотов, доступных для использования тестами. Каждый тест указывает количество слотов, которые ему требуются от определённого ресурса, и CTest планирует их таким образом, чтобы общее количество используемых слотов не превышало указанной ёмкости. При выполнении теста и выделении слотов ресурса этому тесту, тесты могут полагаться на исключительное использование этих слотов на всё время процесса теста.
Функция распределения ресурсов CTest состоит как минимум из двух входных данных:
- Файл спецификации ресурсов файл спецификации ресурсов, описанный ниже, который описывает доступные на системе ресурсы.
- Свойство тестов
RESOURCE_GROUPS, которое описывает ресурсы, необходимые для теста.
При выполнении теста CTest передаёт выделенные ресурсы в виде набора переменных среды, как описано ниже. Определение, к какому ресурсу подключиться, оставляется автору теста.
Свойство RESOURCE_GROUPS сообщает CTest, какие ресурсы тест ожидает использовать, сгруппированные таким образом, чтобы это было осмысленно для теста. Сам тест должен прочитать переменные среды для определения, какие ресурсы были выделены для каждой группы. Например, каждая группа может соответствовать процессу, который тест запустит при выполнении.
Обратите внимание, что даже если тест указывает свойство RESOURCE_GROUPS, всё равно возможно его выполнение без распределения ресурсов (и без соответствующих переменных среды), если пользователь не передаёт файл спецификации ресурсов. Передача этого файла, либо через параметр командной строки ctest --resource-spec-file, либо через аргумент RESOURCE_SPEC_FILE команды ctest_test(), активирует функцию распределения ресурсов. Тесты должны проверять переменную среды CTEST_RESOURCE_GROUP_COUNT, чтобы определить, активировано ли распределение ресурсов. Эта переменная всегда (и только) будет определена, если распределение ресурсов активировано. Если распределение ресурсов не активировано, то переменная CTEST_RESOURCE_GROUP_COUNT не будет существовать, даже если она существует для родительского процесса ctest. Если тесту обязательно нужно распределение ресурсов, он может возвращать код ошибки или использовать свойства SKIP_RETURN_CODE или SKIP_REGULAR_EXPRESSION для указания пропущенного теста.
Файл спецификации ресурсов
Файл спецификации ресурсов — это файл JSON, который передаётся CTest различными способами. Его можно указать в командной строке с помощью параметра ctest --resource-spec-file, через аргумент RESOURCE_SPEC_FILE команды ctest_test(), или сгенерировать динамически во время выполнения теста (см. Динамически сгенерированный файл спецификации ресурсов).
Если используется сценарий панели управления и RESOURCE_SPEC_FILE не указан, вместо этого используется значение CTEST_RESOURCE_SPEC_FILE в сценарии панели управления. Если --resource-spec-file, RESOURCE_SPEC_FILE, и CTEST_RESOURCE_SPEC_FILE в сценарии панели управления не указаны, вместо этого используется значение CTEST_RESOURCE_SPEC_FILE из CMake сборки. Если ни один из них не указан, файл спецификации ресурсов не используется.
Файл спецификации ресурсов должен быть объектом JSON. Все примеры в этом документе предполагают следующий файл спецификации ресурсов:
{
"version": {
"major": 1,
"minor": 0
},
"local": [
{
"gpus": [
{
"id": "0",
"slots": 2
},
{
"id": "1",
"slots": 4
},
{
"id": "2",
"slots": 2
},
{
"id": "3"
}
],
"crypto_chips": [
{
"id": "card0",
"slots": 4
}
]
}
]
}
Члены:
-
version -
Объект, содержащий поле
majorтипа целое число и полеminorтипа целое число. В настоящее время поддерживается только версия major1, minor0. Любое другое значение является ошибкой. -
local -
JSON-массив наборов ресурсов, присутствующих в системе. В настоящее время размер этого массива ограничен значением 1.
Каждый элемент массива — это JSON-объект с членами, имена которых равны требуемым типам ресурсов, например,
gpus. Эти имена должны начинаться с маленькой буквы или подчёркивания, а последующие символы могут быть маленькими буквами, цифрами или подчёркиваниями. Заглавные буквы недопустимы, так как на некоторых платформах переменные окружения регистронезависимы. Дополнительную информацию см. в разделе Переменные окружения ниже. Рекомендуется, чтобы имя типа ресурса было множественным числом существительного, например,gpusилиcrypto_chips(а неgpuилиcrypto_chip.)Обратите внимание, что имена
gpusиcrypto_chipsявляются просто примерами, и CTest не интерпретирует их каким-либо образом. Вы можете придумать любой тип ресурса, соответствующий вашим требованиям.Значение для каждого типа ресурса — это JSON-массив, состоящий из JSON-объектов, каждый из которых описывает конкретный экземпляр указанного ресурса. Эти объекты имеют следующие члены:
-
id -
Строка, содержащая идентификатор ресурса. Каждый символ в идентификаторе может быть маленькой буквой, цифрой или подчёркиванием. Заглавные буквы недопустимы.
Идентификаторы должны быть уникальными внутри типа ресурса. Однако они не обязательно должны быть уникальными для разных типов ресурсов. Например, допустимо иметь ресурс
gpusс именем0и ресурсcrypto_chipsс именем0, но не два ресурсаgpusс одинаковым именем0.Обратите внимание, что идентификаторы
0,1,2,3, иcard0— это лишь примеры, и CTest не интерпретирует их каким-либо образом. Вы можете придумать любые идентификаторы, соответствующие вашим требованиям. -
slots -
Необязательное целое число, указывающее количество доступных слотов ресурса. Например, это может быть количество мегабайт оперативной памяти на видеокарте или количество криптографических единиц, доступных на криптографическом чипе. Если
slotsне указано, используется значение по умолчанию1.
-
В примере файла выше есть четыре видеокарты с идентификаторами от 0 до 3. Видеокарта 0 имеет 2 слота, видеокарта 1 — 4, видеокарта 2 — 2, а видеокарта 3 — по умолчанию 1 слот. Также есть один криптографический чип с 4 слотами.
RESOURCE_GROUPS Свойство
См. RESOURCE_GROUPS для описания этого свойства.
Переменные окружения
После того, как CTest определил, какие ресурсы будут выделены для теста, он передаёт эту информацию исполняемому файлу теста в виде набора переменных окружения. В каждом примере ниже предполагается, что у тестируемого теста есть свойство RESOURCE_GROUPS со значением 2,gpus:2;gpus:4,gpus:1,crypto_chips:2.
Следующие переменные передаются в процесс теста:
-
CTEST_RESOURCE_GROUP_COUNT -
Общее количество групп, указанных в свойстве
RESOURCE_GROUPS. Например:CTEST_RESOURCE_GROUP_COUNT=3
Эта переменная будет определена только в том случае, если
ctest(1)был задан файл спецификации ресурсов или еслиctest_test()был задан файл спецификации ресурсов. Если файл спецификации ресурсов не задан, эта переменная не будет определена.
-
CTEST_RESOURCE_GROUP_<num> -
Список типов ресурсов, выделенных для каждой группы, причём каждый элемент отделён запятой.
<num>— число от нуля доCTEST_RESOURCE_GROUP_COUNTминус один.CTEST_RESOURCE_GROUP_<num>определено для каждого<num>в этом диапазоне. Например:CTEST_RESOURCE_GROUP_0=gpusCTEST_RESOURCE_GROUP_1=gpusCTEST_RESOURCE_GROUP_2=crypto_chips,gpus
-
CTEST_RESOURCE_GROUP_<num>_<resource-type> -
Список идентификаторов ресурсов и количества слотов каждого идентификатора, выделенных для каждой группы для данного типа ресурса. Эта переменная состоит из набора пар, каждая пара отделена точкой с запятой, а два элемента в паре отделены запятой. Первый элемент каждой пары —
id:и ID ресурса типа<resource-type>, а второй элемент —slots:и количество слотов от этого ресурса, выделенных данной группе. Например:CTEST_RESOURCE_GROUP_0_GPUS=id:0,slots:2CTEST_RESOURCE_GROUP_1_GPUS=id:2,slots:2CTEST_RESOURCE_GROUP_2_GPUS=id:1,slots:4;id:3,slots:1CTEST_RESOURCE_GROUP_2_CRYPTO_CHIPS=id:card0,slots:2
В этом примере группа 0 получает 2 слота с видеокарты
0, группа 1 получает 2 слота с видеокарты2, а группа 2 получает 4 слота с видеокарты1, 1 слот с видеокарты3, и 2 слота с криптографического чипаcard0.<num>— число от нуля доCTEST_RESOURCE_GROUP_COUNTминус один.<resource-type>— имя типа ресурса, преобразованное в верхний регистр.CTEST_RESOURCE_GROUP_<num>_<resource-type>определено для произведения каждого<num>в указанном диапазоне и каждого типа ресурса, перечисленных вCTEST_RESOURCE_GROUP_<num>.Так как на некоторых платформах имена переменных окружения регистронезависимы, имена типов ресурсов могут не конфликтовать в среде с регистронезависимыми именами. По этой причине для простоты все типы ресурсов должны быть перечислены в нижнем регистре в файле спецификации ресурсов файле спецификации ресурсов и в свойстве
RESOURCE_GROUPS, а затем преобразуются в верхний регистр в переменной окруженияCTEST_RESOURCE_GROUP_<num>_<resource-type>.
Динамически сгенерированный файл спецификации ресурсов
Добавлен в версии 3.28.
Проект может по желанию указать один тест, который будет использоваться для динамической генерации файла спецификации ресурсов, который CTest будет использовать для планирования тестов, использующих ресурсы. Тест, генерирующий файл, должен иметь свойство GENERATED_RESOURCE_SPEC_FILE и ровно одну фикстуру в своём свойстве FIXTURES_SETUP. Эта фикстура считается CTest специальной: это фикстура, которая генерирует файл спецификации ресурсов. У фикстуры может быть любое имя. Если такая фикстура существует, все тесты, у которых установлено свойство RESOURCE_GROUPS, должны иметь фикстуру в своём свойстве FIXTURES_REQUIRED, и файл спецификации ресурсов не может быть задан с аргументом --resource-spec-file или переменной CTEST_RESOURCE_SPEC_FILE.
Интеграция с сервером задач
Добавлен в версии 3.29.
В системах POSIX, при запуске в контексте сервера задач, CTest разделяет свои слоты задач. Это независимо от свойства теста PROCESSORS, которое всё ещё учитывается уровнем параллелизма CTest -j. CTest получает ровно один токен от сервера задач перед запуском каждого теста и возвращает его по завершении теста.
Например, рассмотрим Makefile:
test: +ctest -j 8
При вызове через make -j 2 test, ctest подключается к серверу задач, получает токен для каждого теста и запускает не более 2 тестов одновременно.
В системах Windows интеграция с сервером задач пока не реализована.
См. также
Для получения помощи в использовании CMake доступны следующие ресурсы:
- Главная страница
-
Основной отправной точкой для изучения CMake.
- Онлайн-документация и ресурсы сообщества
-
https://cmake.org/documentation
На этой веб-странице находятся ссылки на доступную документацию и ресурсы сообщества.
- Форум Discourse
-
На форуме Discourse обсуждаются вопросы и проблемы, связанные с CMake.
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.31/manual/ctest.1.html