ctest(1)
- Синопсис
- Описание
- Опции
- Сопоставление меток
- Резюме меток и подпроектов
- Режим сборки и тестирования
- Показать в формате JSON Object Model
- См. также
Синопсис
ctest [<options>]
ctest --build-and-test <path-to-source> <path-to-build>
--build-generator <generator> [<options>...]
[--build-options <opts>...] [--test-command <command> [<args>...]]
ctest {-D <dashboard> | -M <model> -T <action> | -S <script> | -SP <script>}
[-- <dashboard-options>...]
Описание
Исполняемый файл 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 <jobs>, --parallel <jobs> -
Выполнить тесты параллельно, используя указанное количество задач.
Эта опция сообщает CTest выполнить тесты параллельно, используя указанное количество задач. Эту опцию также можно задать, установив переменную окружения
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> -
Записать результаты теста в формате JUnit.
Эта опция сообщает CTest записать результаты теста в файл
<file>в формате JUnit XML. Если файл<file>уже существует, он будет перезаписан. Если используется опция-Sдля выполнения сценария панели мониторинга, используйте ключевое словоOUTPUT_JUNITс командойctest_test()вместо неё. -
-N,--show-only[=<format>] -
Отключить фактическое выполнение тестов.
Эта опция сообщает CTest отобразить тесты, которые будут запущены, но не запускать их фактически. Полезно в сочетании с опциями
-Rи-E.<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). См. Сопоставление меток. -
-FA <regex>, --fixture-exclude-any <regex> -
Исключить фикстуры, соответствующие
<regex>, из автоматического добавления любых тестов в набор тестов.Если тест в наборе выполняемых тестов требует определённой фикстуры, настройка и очистка фикстуры обычно добавляются в набор тестов автоматически. Эта опция предотвращает добавление тестов настройки или очистки для фикстур, соответствующих
<regex>. Обратите внимание, что всё остальное поведение фикстуры сохраняется, включая зависимости тестов и пропуск тестов, имеющих тесты настройки фикстуры, завершившиеся неудачей. -
-FS <regex>, --fixture-exclude-setup <regex> -
То же, что и
-FA, но исключаются только соответствующие тесты настройки. -
-FC <regex>, --fixture-exclude-cleanup <regex> -
То же, что и
-FA, но исключаются только соответствующие тесты очистки. -
-D <dashboard>, --dashboard <dashboard> -
Выполнить тест панели мониторинга.
Эта опция сообщает CTest действовать как клиент CDash и выполнить тест панели мониторинга. Все тесты являются
<Mode><Test>, где<Mode>может бытьExperimental,Nightly, иContinuous, а<Test>может бытьStart,Update,Configure,Build,Test,Coverage, иSubmit. -
-D <var>:<type>=<value> -
Определить переменную для режима сценария.
Передавать значения переменных в командной строке. Использовать в сочетании с
-Sдля передачи значений переменных в сценарий панели мониторинга. Разбор аргументов-Dкак значений переменных выполняется только в том случае, если значение, следующее за-Dне соответствует ни одному из известных типов панелей мониторинга. -
-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скрипты. -
-I [Start,End,Stride,test#,test#|Test file], --tests-information -
Запустить определённое количество тестов по номеру.
Этот параметр заставляет CTest запускать тесты, начиная с номера
Start, заканчивая номеромEnd, и увеличивая наStride. Любые дополнительные номера послеStrideсчитаются отдельными номерами тестов.Start,End, илиStrideмогут быть пустыми. Дополнительно можно указать файл, содержащий тот же синтаксис, что и в командной строке. -
-U, --union -
Взять объединение
-Iи-R.Когда и
-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 не выводить сводку по времени для каждого подпроекта, связанного с запущенными тестами. Если у тестов нет подпроектов, ничего дополнительного не выводится.
--build-and-test См. Режим сборки и тестирования.
--test-dir <dir> Указать каталог, в котором следует искать тесты.
-
--test-output-size-passed <size> -
Ограничить вывод для пройденных тестов до
<size>байтов. -
--test-output-size-failed <size> -
Ограничить вывод для неудачных тестов до
<size>байтов. -
--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=<[error|ignore]> -
Рассматривать отсутствие тестов как ошибку или игнорировать её.
Если тесты не были найдены, по умолчанию CTest всегда записывает сообщение об ошибке, но возвращает код ошибки только в режиме сценариев. Этот параметр унифицирует поведение CTest, возвращая код ошибки, если тесты не были найдены, или игнорируя его.
-
--help,-help,-usage,-h,-H,/? -
Вывести информацию об использовании и выйти.
Использование описывает базовый интерфейс командной строки и его опции.
-
--version,-version,/V [<f>] -
Показать баннер с именем/версией программы и выйти.
Если указан файл, версия записывается в него. Справка выводится в указанный файл <f>айл, если он задан.
-
--help-full [<f>] -
Вывести все руководства справки и выйти.
Все руководства выводятся в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>айл, если он задан.
-
--help-manual <man> [<f>] -
Вывести одно руководство справки и выйти.
Указанное руководство выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>айл, если он задан.
-
--help-manual-list [<f>] -
Отобразить доступные руководства справки и выйти.
Список содержит все руководства, справка по которым может быть получена с помощью опции
--help-manualс последующим именем руководства. Справка выводится в указанный файл <f>айл, если он задан. -
--help-command <cmd> [<f>] -
Вывести справку по одной команде и выйти.
Запись руководства
cmake-commands(7)для<cmd>выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>айл, если он задан. -
--help-command-list [<f>] -
Отобразить команды со справкой и выйти.
Список содержит все команды, справка по которым может быть получена с помощью опции
--help-commandс последующим именем команды. Справка выводится в указанный файл <f>айл, если он задан. -
--help-commands [<f>] -
Вывести руководство cmake-commands и выйти.
Руководство
cmake-commands(7)выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>айл, если он задан. -
--help-module <mod> [<f>] -
Вывести справку по одному модулю и выйти.
Запись руководства
cmake-modules(7)для<mod>выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>айл, если он задан. -
--help-module-list [<f>] -
Отобразить модули со справкой и выйти.
Список содержит все модули, справка по которым может быть получена с помощью опции
--help-moduleс последующим именем модуля. Справка выводится в указанный файл <f>айл, если он задан. -
--help-modules [<f>] -
Вывести руководство cmake-modules и выйти.
Руководство
cmake-modules(7)выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>айл, если он задан. -
--help-policy <cmp> [<f>] -
Вывести справку по одной политике и выйти.
Запись руководства
cmake-policies(7)для<cmp>выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>айл, если он задан. -
--help-policy-list [<f>] -
Отобразить политики со справкой и выйти.
Список содержит все политики, справка по которым может быть получена с помощью опции
--help-policyс последующим именем политики. Справка выводится в указанный файл <f>айл, если он задан. -
--help-policies [<f>] -
Вывести руководство cmake-policies и выйти.
Руководство
cmake-policies(7)выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>айл, если он задан. -
--help-property <prop> [<f>] -
Вывести справку по одному свойству и выйти.
Записи руководства
cmake-properties(7)для<prop>выводятся в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>айл, если он задан. -
--help-property-list [<f>] -
Отобразить свойства со справкой и выйти.
Список содержит все свойства, справка по которым может быть получена с помощью опции
--help-propertyс последующим именем свойства. Справка выводится в указанный файл <f>айл, если он задан. -
--help-properties [<f>] -
Вывести руководство cmake-properties и выйти.
Руководство
cmake-properties(7)выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>айл, если он задан. -
--help-variable <var> [<f>] -
Вывести справку по одной переменной и выйти.
Запись руководства
cmake-variables(7)для<var>выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>айл, если он задан. -
--help-variable-list [<f>] -
Отобразить переменные со справкой и выйти.
Список содержит все переменные, справка по которым может быть получена с помощью опции
--help-variableс последующим именем переменной. Справка выводится в указанный файл <f>айл, если он задан. -
--help-variables [<f>] -
Вывести руководство cmake-variables и выйти.
Руководство
cmake-variables(7)выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>айл, если он задан.
Сопоставление меток
Тесты могут иметь прикреплённые метки. Тесты могут быть включены или исключены из выполнения теста путём фильтрации по меткам. Каждый отдельный фильтр — это регулярное выражение, применяемое к меткам, прикреплённым к тесту.
Когда используется -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-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 clean.
-
--build-config-sample -
Образец исполняемого файла для определения конфигурации, которая должна использоваться. Например,
Debug,Releaseи т. д. -
--build-options -
Дополнительные параметры для настройки сборки (т. е. для CMake, а не для инструмента сборки). Обратите внимание, что если это указано, ключевое слово
--build-optionsи его аргументы должны быть последними параметрами, указанными в командной строке, за исключением, возможно,--test-command. -
--test-command -
Команда для выполнения на шаге тестирования с опцией
--build-and-test. Все аргументы, следующие за этим ключевым словом, будут считаться частью командной строки теста, поэтому это должен быть последний параметр. -
--test-timeout -
Предел времени в секундах
Dashboard Client
CTest может работать как клиент для приложения панели мониторинга качества программного обеспечения CDash. Как клиент панели мониторинга, CTest выполняет последовательность шагов для конфигурирования, сборки и тестирования программного обеспечения, а затем отправляет результаты на сервер CDash. Подпись командной строки, используемая для отправки в CDash:
ctest (-D <dashboard> | -M <model> -T <action> | -S <script> | -SP <script>)
[-- <dashboard-options>...]
Параметры для Dashboard Client включают:
-
--group <group> -
Укажите группу, в которую вы хотите отправить результаты.
Отправить панель мониторинга в указанную группу вместо стандартной. По умолчанию панель мониторинга отправляется в группы Nightly, Experimental или Continuous, но с помощью этой опции группа может быть любой.
Заменяет устаревшую опцию
--track. Несмотря на изменение названия, ее поведение остается неизменным. -
-A <file>, --add-notes <file> -
Добавить файл заметок к отправке.
Эта опция сообщает CTest о включении файла заметок при отправке панели мониторинга.
-
--tomorrow-tag -
NightlyилиExperimentalначинается с метки следующего дня.Это полезно, если сборка не завершится за один день.
-
--extra-submit <file>[;<file>] -
Отправить дополнительные файлы на панель мониторинга.
Эта опция отправит дополнительные файлы на панель мониторинга.
-
--http1.0 -
Отправить, используя
HTTP 1.0.Эта опция заставит CTest использовать
HTTP 1.0для отправки файлов на панель мониторинга вместоHTTP 1.1. -
--no-compress-output -
Не сжимать выходные данные тестов при отправке.
Этот флаг выключит автоматическое сжатие выходных данных тестов. Используйте это для сохранения совместимости со старой версией CDash, которая не поддерживает сжатые выходные данные тестов.
Шаги Dashboard Client
CTest определяет упорядоченный список шагов тестирования, некоторые или все из которых могут выполняться как клиент панели мониторинга:
-
Start -
Начать новую отправку на панель мониторинга, которая будет состоять из результатов, записанных последующими шагами. См. раздел Шаг CTest Start ниже.
-
Update -
Обновить дерево исходных файлов из хранилища версий. Записать старые и новые версии и список обновленных исходных файлов. См. раздел Шаг CTest Update ниже.
-
Configure -
Настроить программное обеспечение, выполнив команду в дереве сборки. Записать журнал вывода конфигурации. См. раздел Шаг CTest Configure ниже.
-
Build -
Собрать программное обеспечение, выполнив команду в дереве сборки. Записать журнал вывода сборки и определить предупреждения и ошибки. См. раздел Шаг CTest Build ниже.
-
Test -
Протестировать программное обеспечение, загрузив
CTestTestfile.cmakeиз дерева сборки и выполнив определенные тесты. Записать выход и результат каждого теста. См. раздел Шаг CTest Test ниже. -
Coverage -
Рассчитать охват исходного кода, запустив инструмент анализа покрытия и записав его вывод. См. раздел Шаг CTest Coverage ниже.
-
MemCheck -
Выполнить набор тестов программного обеспечения с помощью инструмента проверки памяти. Записать выходные данные теста, результаты и проблемы, сообщенные инструментом. См. раздел Шаг CTest MemCheck ниже.
-
Submit -
Отправить результаты, записанные от других шагов тестирования, на сервер панели мониторинга качества программного обеспечения. См. раздел Шаг CTest Submit ниже.
Режимы Dashboard Client
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по умолчанию.
Dashboard Client через командную строку CTest
CTest может выполнять тестирование на уже сгенерированном дереве сборки. Запустите команду ctest с текущей рабочей директорией, установленной в дереве сборки, и используйте одну из этих подписей:
ctest -D <mode>[<step>] ctest -M <mode> [ -T <step> ]...
<mode> должен быть одним из вышеперечисленных режимов Dashboard Client Modes, а каждый <step> должен быть одним из вышеперечисленных шагов Dashboard Client Steps.
CTest считывает параметры конфигурации Dashboard Client Configuration из файла в дереве сборки, называемого либо CTestConfiguration.ini или DartConfiguration.tcl (названия носят исторический характер). Формат файла:
# Lines starting in '#' are comments. # Other non-blank lines are key-value pairs. <setting>: <value>
где <setting> - имя параметра, а <value> - значение параметра.
В деревьях сборки, сгенерированных CMake, этот файл конфигурации генерируется модулем CTest, если он включен в проект. Модуль использует переменные для получения значения каждого параметра, как описано в документации ниже.
Dashboard Client через скрипт CTest
CTest может выполнять тестирование, управляемое скриптом cmake-language(7), который создает и поддерживает дерево исходных и сборки, а также выполняет шаги тестирования. Запустите команду ctest с текущей рабочей директорией вне любого дерева сборки и используйте одну из этих подписей:
ctest -S <script> ctest -SP <script>
Файл <script> должен вызывать команды CTest Commands для явного выполнения шагов тестирования, как описано ниже. Команды получают значения параметров Dashboard Client Configuration из своих аргументов или из переменных, установленных в скрипте.
Конфигурация Dashboard Client
Шаги Dashboard Client Steps можно настроить с помощью параметров, как описано в следующих разделах.
Шаг CTest Start
Начать новую отправку на панель мониторинга, которая будет состоять из результатов, записанных последующими шагами.
В скрипте CTest команда ctest_start() выполняет этот шаг. Аргументы команды могут указать некоторые параметры шага. Сначала команда выполняет команду, указанную в переменной CTEST_CHECKOUT_COMMAND , если она установлена, чтобы инициализировать директорию исходных файлов.
Параметры конфигурации включают:
-
BuildDirectory -
Полный путь к дереву сборки проекта.
-
Сценарий CTest переменная:
CTEST_BINARY_DIRECTORY -
CTestмодуль переменная:PROJECT_BINARY_DIR
-
Сценарий CTest переменная:
-
SourceDirectory -
Полный путь к дереву исходных кодов проекта.
-
Сценарий CTest переменная:
CTEST_SOURCE_DIRECTORY -
CTestмодуль переменная:PROJECT_SOURCE_DIR
-
Сценарий CTest переменная:
Шаг обновления CTest
В сценарии CTest команда ctest_update() выполняет этот шаг. Аргументы команды могут указать некоторые настройки шага.
Настройки конфигурации для указания инструмента управления версиями включают:
-
BZRCommand -
bzrинструмент командной строки для использования, если дерево исходного кода управляется Bazaar.-
Скрипт CTest переменная:
CTEST_BZR_COMMAND -
CTestпеременная модуля: none
-
Скрипт CTest переменная:
-
BZRUpdateOptions -
Опции командной строки для
BZRCommandпри обновлении исходного кода.-
Скрипт CTest переменная:
CTEST_BZR_UPDATE_OPTIONS -
CTestпеременная модуля: none
-
Скрипт 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переменная модуля: none
-
Скрипт CTest переменная:
-
HGUpdateOptions -
Опции командной строки для
HGCommandпри обновлении исходного кода.-
Скрипт CTest переменная:
CTEST_HG_UPDATE_OPTIONS -
CTestпеременная модуля: none
-
Скрипт 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 переменная: none
-
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 Configure
В Сценарии 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 Build
В Сценарии 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.-
Сценарий CTest переменная:
CTEST_TEST_TIMEOUT -
CTestмодульная переменная:DART_TESTING_TIMEOUT
-
Сценарий CTest переменная:
Для отправки дополнительных значений теста в CDash, см. Дополнительные измерения теста.
Шаг покрытия кода CTest
В сценарии 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 переменная: none
-
CTestмодульная переменная: none
-
PurifyCommand -
Укажите
MemoryCheckCommand, который, как известно, совместим с командной строкой Purify.- Сценарий CTest переменная: none
-
CTestмодульная переменная:PURIFYCOMMAND
-
ValgrindCommand -
Укажите
MemoryCheckCommand, который, как известно, совместим с командной строкой Valgrind.- Сценарий CTest переменная: none
-
CTestмодульная переменная:VALGRIND_COMMAND
-
ValgrindCommandOptions -
Укажите параметры командной строки для инструмента
ValgrindCommand. Они будут помещены перед командной строкой теста.- Сценарий CTest переменная: none
-
CTestмодульная переменная:VALGRIND_COMMAND_OPTIONS
-
DrMemoryCommand -
Укажите
MemoryCheckCommand, который, как известно, совместим с командной строкой DrMemory.- Сценарий CTest переменная: none
-
CTestмодульная переменная:DRMEMORY_COMMAND
-
DrMemoryCommandOptions -
Укажите параметры командной строки для инструмента
DrMemoryCommand. Они будут помещены перед командной строкой теста.- Сценарий CTest переменная: none
-
CTestмодульная переменная:DRMEMORY_COMMAND_OPTIONS
-
CudaSanitizerCommand -
Укажите
MemoryCheckCommand, который, как известно, совместим с командной строкой cuda-memcheck или compute-sanitizer.- Сценарий CTest переменная: none
-
CTestмодульная переменная:CUDA_SANITIZER_COMMAND
-
CudaSanitizerCommandOptions -
Укажите параметры командной строки для инструмента
CudaSanitizerCommand. Они будут помещены перед командной строкой теста.- Сценарий CTest переменная: none
-
CTestмодульная переменная:CUDA_SANITIZER_COMMAND_OPTIONS
Шаг CTest Submit
В Сценарии CTest команда 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 -
Укажите список опций, разделённых точкой с запятой, для управления библиотекой Curl, которую CTest использует для подключения к серверу. Возможные опции:
CURLOPT_SSL_VERIFYPEER_OFFиCURLOPT_SSL_VERIFYHOST_OFF.-
Скрипт CTest переменная:
CTEST_CURL_OPTIONS -
CTestпеременная модуля:CTEST_CURL_OPTIONS
-
Скрипт 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 переменная:
-
TriggerSite -
Устаревшая опция. Не используется.
-
Скрипт CTest переменная:
CTEST_TRIGGER_SITE -
CTestпеременная модуля:TRIGGER_SITEесли установлена, иначеCTEST_TRIGGER_SITE
-
Скрипт CTest переменная:
Отобразить как JSON-объектную модель
При указании командной строки --show-only=json-v1, информация о тесте выводится в формате JSON. Модель JSON-объекта версии 1.0 определена следующим образом:
-
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, всё же возможно, что этот тест выполнится без распределения ресурсов (и без соответствующих переменных окружения), если пользователь не передаёт файл спецификации ресурсов. Передача этого файла, либо через аргумент командной строки --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(1) как --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целого типа. В настоящее время поддерживается только версия с основным номером1и дополнительным номером0. Любое другое значение является ошибкой. -
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)был задан--resource-spec-file, или еслиctest_test()был заданRESOURCE_SPEC_FILE. Если файл задания ресурсов не был задан, эта переменная не будет определена.
-
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:и идентификатор ресурса типа<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>.
См. также
Для получения помощи по CMake доступны следующие ресурсы:
- Главная страница
-
Основная стартовая точка для изучения CMake.
- Документация в Интернете и ресурсы сообщества
-
https://cmake.org/documentation
На этой веб-странице можно найти ссылки на доступную документацию и ресурсы сообщества.
- Форум Discourse
-
Форум Discourse предоставляет возможность обсуждения и задавания вопросов по CMake.
CDash: https://cdash.org
© 2000–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.23/manual/ctest.1.html