Spec-Zone.ru › CMake 3.15

ctest(1)

  • Синтаксис
  • Описание
  • Параметры
  • Сводка метки и подпроекта
  • Режим сборки и тестирования
  • Клиент панели мониторинга

    • Шаги клиента панели мониторинга
    • Режимы клиента панели мониторинга
    • Клиент панели мониторинга через командную строку CTest
    • Клиент панели мониторинга через скрипт CTest
  • Настройка клиента панели мониторинга

    • Шаг запуска CTest
    • Шаг обновления CTest
    • Шаг настройки CTest
    • Шаг сборки CTest
    • Шаг тестирования CTest
    • Шаг покрытия CTest
    • Шаг проверки памяти CTest
    • Шаг отправки CTest
  • Показать как модель JSON объекта
  • См. также

Синтаксис

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(), имеют поддержку тестирования. Эта программа будет запускать тесты и сообщать результаты.

Параметры

-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

-F

Включить переключение.

Этот параметр позволяет CTest возобновить выполнение набора тестов, которое было прервано ранее. Если прерывания не произошло, параметр -F не будет иметь эффекта.

-j <jobs>, --parallel <jobs>

Выполнить тесты параллельно, используя заданное количество задач.

Этот параметр указывает CTest на выполнение тестов параллельно, используя заданное количество задач. Этот параметр также можно задать, установив переменную среды CTEST_PARALLEL_LEVEL.

Этот параметр можно использовать с свойством теста PROCESSORS.

См. Сводка меток и подпроектов.

--test-load <level>

При выполнении тестов параллельно (например, с -j) старайтесь не запускать тесты, которые могут привести к превышению заданного порога нагрузки процессора.

Когда ctest выполняется как Клиент панели, это устанавливает параметр TestLoad шага теста CTest.

-Q,--quiet

Сделать CTest тихим.

Этот параметр подавит весь вывод. Файл журнала вывода всё равно будет сгенерирован, если указан --output-log. Параметры, такие как --verbose, --extra-verbose, и --debug игнорируются, если указан --quiet.

-O <file>, --output-log <file>

Вывод в файл журнала.

Этот параметр указывает CTest на запись всего своего вывода в файл журнала <file>.

-N,--show-only[=<format>]

Отключить фактическое выполнение тестов.

Этот параметр указывает CTest на вывод списка тестов, которые будут выполнены, но не выполнять их фактически. Полезно в сочетании с параметрами -R и -E.

<format> может принимать следующие значения.

human

Вывод в удобочитаемом формате. Не гарантируется стабильность. Это значение по умолчанию.

json-v1

Вывести информацию о тесте в формате JSON. См. Показать в виде модели JSON объекта.

-L <regex>, --label-regex <regex>

Запустить тесты с метками, соответствующими регулярному выражению.

Этот параметр указывает CTest запустить только тесты, чьи метки соответствуют заданному регулярному выражению.

-R <regex>, --tests-regex <regex>

Запустить тесты, соответствующие регулярному выражению.

Этот параметр указывает CTest запустить только тесты, чьи имена соответствуют заданному регулярному выражению.

-E <regex>, --exclude-regex <regex>

Исключить тесты, соответствующие регулярному выражению.

Этот параметр указывает CTest НЕ запускать тесты, чьи имена соответствуют заданному регулярному выражению.

-LE <regex>, --label-exclude <regex>

Исключить тесты с метками, соответствующими регулярному выражению.

Этот параметр указывает CTest НЕ запускать тесты, чьи метки соответствуют заданному регулярному выражению.

-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-until-fail <n>

Требуется, чтобы каждый тест выполнялся <n> раз без сбоев, чтобы пройти.

Это полезно для поиска спорадических сбоев в тестовых случаях.

--max-width <width>

Установить максимальную ширину имени теста для вывода.

Установите максимальную ширину каждого имени теста для отображения в выводе. Это позволяет пользователю расширить вывод, чтобы избежать обрезания имени теста, что может быть очень раздражающим.

--interactive-debug-mode [0|1]

Установить интерактивный режим в 0 или 1.

Этот параметр заставляет CTest запускать тесты в интерактивном или неинтерактивном режиме. В Windows это означает, что в неинтерактивном режиме все всплывающие окна отладки системы заблокированы. В режиме панели (Experimental, Nightly, Continuous) значение по умолчанию — неинтерактивный. При простом запуске тестов, не предназначенных для панели, значение по умолчанию — разрешение всплывающих окон и интерактивной отладки.

--no-label-summary

Отключить информацию о сводке временных данных для меток.

Этот параметр сообщает CTest, что не нужно печатать сводную информацию для каждой метки, связанной с выполненными тестами. Если на тестах нет меток, дополнительная информация не выводится.

См. Сводку по меткам и подпроектам.

--no-subproject-summary

Отключить сводную информацию о времени для подпроектов.

Этот параметр сообщает CTest, что не нужно печатать сводную информацию для каждого подпроекта, связанного с выполненными тестами. Если на тестах нет подпроектов, дополнительная информация не выводится.

См. Сводку по меткам и подпроектам.

--build-and-test См. Режим сборки и тестирования.

--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

Вывести все доступные метки тестов.

Этот параметр не запустит тесты, а просто выведет список всех меток, связанных с набором тестов.

--help,-help,-usage,-h,-H,/?

Вывести информацию об использовании и выйти.

Информация об использовании описывает базовый интерфейс командной строки и его параметры.

--version,-version,/V [<f>]

Показать баннер с именем/версией программы и выйти.

Если файл указан, версия записывается в него. Справка выводится в указанный файл <f>ile, если он задан.

--help-full [<f>]

Вывести все руководства по справке и выйти.

Все руководства выводятся в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>ile, если он задан.

--help-manual <man> [<f>]

Вывести одно руководство по справке и выйти.

Указанное руководство выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>ile, если он задан.

--help-manual-list [<f>]

Вывести список доступных руководств по справке и выйти.

Список содержит все руководства, для которых справка может быть получена с использованием параметра --help-manual и за которым следует имя руководства. Справка выводится в указанный файл <f>ile, если он задан.

--help-command <cmd> [<f>]

Вывести справку по одной команде и выйти.

Запись справки cmake-commands(7) для <cmd> выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>ile, если он задан.

--help-command-list [<f>]

Вывести список команд со справкой и выйти.

Список содержит все команды, для которых справка может быть получена с использованием параметра --help-command и за которым следует имя команды. Справка выводится в указанный файл <f>ile, если он задан.

--help-commands [<f>]

Вывести руководство по cmake-commands и выйти.

Руководство cmake-commands(7) выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>ile, если он задан.

--help-module <mod> [<f>]

Вывести справку по одному модулю и выйти.

Запись справки cmake-modules(7) для <mod> выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>ile, если он задан.

--help-module-list [<f>]

Вывести список модулей со справкой и выйти.

Список содержит все модули, для которых справка может быть получена с использованием параметра --help-module и за которым следует имя модуля. Справка выводится в указанный файл <f>ile, если он задан.

--help-modules [<f>]

Вывести руководство по cmake-modules и выйти.

Руководство cmake-modules(7) выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>ile, если он задан.

--help-policy <cmp> [<f>]

Вывести справку по одной политике и выйти.

Запись справки cmake-policies(7) для <cmp> выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>ile, если он задан.

--help-policy-list [<f>]

Вывести список политик со справкой и выйти.

Список содержит все политики, для которых справка может быть получена с использованием параметра --help-policy и за которым следует имя политики. Справка выводится в указанный файл <f>ile, если он задан.

--help-policies [<f>]

Вывести руководство по cmake-policies и выйти.

Руководство cmake-policies(7) выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>ile, если он задан.

--help-property <prop> [<f>]

Вывести справку по одному свойству и выйти.

Записи справки cmake-properties(7) для <prop> выводятся в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>ile, если он задан.

--help-property-list [<f>]

Вывести список свойств со справкой и выйти.

Список содержит все свойства, для которых справка может быть получена с использованием параметра --help-property и за которым следует имя свойства. Справка выводится в указанный файл <f>ile, если он задан.

--help-properties [<f>]

Вывести руководство по cmake-properties и выйти.

Руководство cmake-properties(7) выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>ile, если он задан.

--help-variable <var> [<f>]

Вывести справку по одной переменной и выйти.

Запись справки cmake-variables(7) для <var> выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>ile, если он задан.

--help-variable-list [<f>]

Вывести список переменных со справкой и выйти.

Список содержит все переменные, для которых справка может быть получена с использованием параметра --help-variable и за которым следует имя переменной. Справка выводится в указанный файл <f>ile, если он задан.

--help-variables [<f>]

Вывести руководство по cmake-variables и выйти.

Руководство cmake-variables(7) выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>ile, если он задан.

Сводка по меткам и подпроектам

CTest выводит сводную информацию о времени выполнения для каждой LABEL и подпроекта, связанного с запущенными тестами. Сводка временных данных по меткам не будет включать метки, которые сопоставлены подпроектам.

Когда свойство теста 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]: Значение свойства CTest PROCESSORS для 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, выбранную CTest, указанной программой.

--build-noclean

Пропустить шаг make clean.

--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> | -M <model> -T <action> | -S <script> | -SP <script>)
      [-- <dashboard-options>...]

Опции для клиента панели мониторинга включают:

--track <track>

Укажите трек, в который нужно отправить панель мониторинга

Отправить панель мониторинга в указанный трек вместо стандартного. По умолчанию панель мониторинга отправляется в трек Nightly, Experimental или Continuous, но с помощью этой опции можно указать произвольный трек.

-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, которая не поддерживает сжатые выходные данные тестов.

Шаги клиента панели мониторинга

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" ниже.

Режимы клиента панели мониторинга

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 Start

Запустить новую отправку в панель мониторинга, которая будет состоять из результатов, записанных последующими шагами.

В скрипте CTest команда ctest_start() выполняет этот шаг. Аргументы команды могут указывать некоторые параметры шага. Сначала команда выполняет команду, указанную в переменной CTEST_CHECKOUT_COMMAND, если она задана, для инициализации каталога исходных кодов.

Настройки конфигурации включают:

BuildDirectory

Полный путь к дереву сборки проекта.

  • Скрипт CTest переменная: CTEST_BINARY_DIRECTORY
  • CTest модуль переменная: PROJECT_BINARY_DIR
SourceDirectory

Полный путь к дереву исходных кодов проекта.

  • Скрипт CTest переменная: CTEST_SOURCE_DIRECTORY
  • CTest модуль переменная: PROJECT_SOURCE_DIR

Шаг обновления CTest

В Скрипте CTest команда ctest_update() выполняет этот шаг. Аргументы команды могут указать некоторые из настроек шага.

Настройки конфигурации для указания инструмента контроля версий включают:

BZRCommand

bzr инструмент командной строки, используемый, если исходное дерево управляется Bazaar.

  • Скрипт CTest переменная: CTEST_BZR_COMMAND
  • CTest модульная переменная: none
BZRUpdateOptions

Параметры командной строки для BZRCommand при обновлении исходного кода.

  • Скрипт CTest переменная: CTEST_BZR_UPDATE_OPTIONS
  • CTest модульная переменная: none
CVSCommand

cvs инструмент командной строки, используемый, если исходное дерево управляется CVS.

  • Скрипт CTest переменная: CTEST_CVS_COMMAND
  • CTest модульная переменная: CVSCOMMAND
CVSUpdateOptions

Параметры командной строки для CVSCommand при обновлении исходного кода.

  • Скрипт CTest переменная: CTEST_CVS_UPDATE_OPTIONS
  • CTest модульная переменная: CVS_UPDATE_OPTIONS
GITCommand

git инструмент командной строки, используемый, если исходное дерево управляется Git.

  • Скрипт CTest переменная: CTEST_GIT_COMMAND
  • CTest модульная переменная: GITCOMMAND

Исходное дерево обновляется с помощью git fetch и git reset --hard в FETCH_HEAD. Результат соответствует git pull, за исключением того, что все локальные изменения перезаписываются. Используйте GITUpdateCustom, чтобы указать другой подход.

GITInitSubmodules

Если установлено, CTest обновит подмодули репозитория перед обновлением.

  • Скрипт CTest переменная: CTEST_GIT_INIT_SUBMODULES
  • CTest модульная переменная: CTEST_GIT_INIT_SUBMODULES
GITUpdateCustom

Укажите пользовательскую командную строку (в виде списка, разделённого точкой с запятой) для выполнения в исходном дереве (рабочей области Git), чтобы обновить его вместо запуска GITCommand.

  • Скрипт CTest переменная: CTEST_GIT_UPDATE_CUSTOM
  • CTest модульная переменная: CTEST_GIT_UPDATE_CUSTOM
GITUpdateOptions

Параметры командной строки для GITCommand при обновлении исходного кода.

  • Скрипт CTest переменная: CTEST_GIT_UPDATE_OPTIONS
  • CTest модульная переменная: GIT_UPDATE_OPTIONS
HGCommand

hg инструмент командной строки, используемый, если исходное дерево управляется Mercurial.

  • Скрипт CTest переменная: CTEST_HG_COMMAND
  • CTest модульная переменная: none
HGUpdateOptions

Параметры командной строки для HGCommand при обновлении исходного кода.

  • Скрипт CTest переменная: CTEST_HG_UPDATE_OPTIONS
  • CTest модульная переменная: none
P4Client

Значение параметра -c для P4Command.

  • Скрипт CTest переменная: CTEST_P4_CLIENT
  • CTest модульная переменная: CTEST_P4_CLIENT
P4Command

p4 инструмент командной строки, используемый, если исходное дерево управляется Perforce.

  • Скрипт CTest переменная: CTEST_P4_COMMAND
  • CTest модульная переменная: P4COMMAND
P4Options

Параметры командной строки для P4Command для всех вызовов.

  • Скрипт CTest переменная: CTEST_P4_OPTIONS
  • CTest модульная переменная: CTEST_P4_OPTIONS
P4UpdateCustom

Укажите пользовательскую командную строку (в виде списка, разделённого точкой с запятой) для выполнения в исходном дереве (дереве Perforce), чтобы обновить его вместо запуска P4Command.

  • Скрипт CTest переменная: none
  • CTest модульная переменная: CTEST_P4_UPDATE_CUSTOM
P4UpdateOptions

Параметры командной строки для P4Command при обновлении исходного кода.

  • Скрипт CTest переменная: CTEST_P4_UPDATE_OPTIONS
  • CTest модульная переменная: CTEST_P4_UPDATE_OPTIONS
SVNCommand

svn инструмент командной строки, используемый, если исходное дерево управляется Subversion.

  • Скрипт CTest переменная: CTEST_SVN_COMMAND
  • CTest модульная переменная: SVNCOMMAND
SVNOptions

Параметры командной строки для SVNCommand для всех вызовов.

  • Скрипт CTest переменная: CTEST_SVN_OPTIONS
  • CTest модульная переменная: CTEST_SVN_OPTIONS
SVNUpdateOptions

Параметры командной строки для SVNCommand при обновлении исходного кода.

  • Скрипт CTest переменная: CTEST_SVN_UPDATE_OPTIONS
  • CTest модульная переменная: SVN_UPDATE_OPTIONS
UpdateCommand

Укажите утилиту командной строки для управления версиями, не определяя систему управления версиями (VCS), которая управляет деревом исходного кода.

  • Сценарий CTest переменная: CTEST_UPDATE_COMMAND
  • CTest модульная переменная: <VCS>COMMAND когда UPDATE_TYPE равно <vcs>, иначе UPDATE_COMMAND
UpdateOptions

Опции командной строки для UpdateCommand.

  • Сценарий CTest переменная: CTEST_UPDATE_OPTIONS
  • CTest модульная переменная: <VCS>_UPDATE_OPTIONS когда UPDATE_TYPE равно <vcs>, иначе UPDATE_OPTIONS
UpdateType

Укажите систему управления версиями, которая управляет деревом исходного кода, если она не может быть автоматически определена. Значение может быть bzr, cvs, git, hg, p4, или svn.

  • Сценарий CTest переменная: нет, обнаружено из дерева исходного кода
  • CTest модульная переменная: UPDATE_TYPE если установлено, иначе CTEST_UPDATE_TYPE
UpdateVersionOnly

Укажите, что вы хотите, чтобы команда обновления системы управления версиями обнаруживала только текущую версию, которая развёрнута, а не обновлялась до другой версии.

  • Сценарий CTest переменная: CTEST_UPDATE_VERSION_ONLY
UpdateVersionOverride

Укажите текущую версию вашего дерева исходного кода.

Когда эта переменная установлена на непустую строку, CTest отобразит указанное вами значение, а не будет использовать команду обновления для обнаружения текущей развёрнутой версии. Использование этой переменной перекрывает UpdateVersionOnly. Как и UpdateVersionOnly, использование этой переменной сообщает CTest, что не нужно обновлять дерево исходного кода до другой версии.

  • Сценарий CTest переменная: CTEST_UPDATE_VERSION_OVERRIDE

Дополнительные параметры конфигурации включают:

NightlyStartTime

В режиме отображения Nightly укажите «время начала ночной сборки». В системах централизованного управления версиями (cvs и svn), шаг Update разворачивает версию программного обеспечения на момент этого времени, чтобы несколько клиентов выбирали общую версию для тестирования. Это не определено в распределённых системах управления версиями, поэтому параметр игнорируется.

  • Сценарий CTest переменная: CTEST_NIGHTLY_START_TIME
  • CTest модульная переменная: NIGHTLY_START_TIME если установлено, иначе CTEST_NIGHTLY_START_TIME

Шаг конфигурации CTest

В сценарии CTest команда ctest_configure() выполняет этот шаг. Аргументы команды могут указать некоторые настройки шага.

Настройки конфигурации включают:

ConfigureCommand

Командная строка для запуска процесса конфигурации программного обеспечения. Она будет выполнена в указанном месте с настройкой BuildDirectory.

  • Сценарий CTest переменная: CTEST_CONFIGURE_COMMAND
  • CTest модульная переменная: CMAKE_COMMAND после PROJECT_SOURCE_DIR
LabelsForSubprojects

Укажите список меток, разделённых точкой с запятой, которые будут обрабатываться как подпроекты. Это отображение будет передано в CDash при отправке результатов конфигурации, тестирования или сборки.

  • Сценарий CTest переменная: CTEST_LABELS_FOR_SUBPROJECTS
  • CTest модульная переменная: CTEST_LABELS_FOR_SUBPROJECTS

См. Резюме меток и подпроектов.

Шаг сборки 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
LabelsForSubprojects

Укажите список меток, разделённых точкой с запятой, которые будут обрабатываться как подпроекты. Это отображение будет передано в CDash при отправке результатов конфигурации, тестирования или сборки.

  • Сценарий CTest переменная: CTEST_LABELS_FOR_SUBPROJECTS
  • CTest модульная переменная: CTEST_LABELS_FOR_SUBPROJECTS

См. Резюме меток и подпроектов.

MakeCommand

Командная строка для запуска процесса сборки программного обеспечения. Она будет выполнена в указанном месте с настройкой BuildDirectory.

  • Сценарий CTest переменная: CTEST_BUILD_COMMAND
  • CTest модульная переменная: MAKECOMMAND, инициализируется командой build_command()
UseLaunchers

Для деревьев сборки, сгенерированных CMake с использованием одного из генераторов Makefile или генератора Ninja, укажите, включена ли функция CTEST_USE_LAUNCHERS модулем CTestUseLaunchers (также включен модулем CTest). При включении сгенерированная система сборки оборачивает каждое вызов компилятора, компоновщика или пользовательской командной строки «запускателем», который взаимодействует с CTest через переменные окружения и файлы для отчётности о подробных предупреждениях и ошибках сборки. В противном случае CTest должен «сканировать» журнал вывода сборки для диагностики.

  • Сценарий CTest переменная: CTEST_USE_LAUNCHERS
  • CTest модульная переменная: CTEST_USE_LAUNCHERS

Шаг тестирования CTest

В скрипте CTest, команда ctest_test() выполняет этот шаг. Аргументы команды могут задавать некоторые настройки шага.

Настройки конфигурации включают:

LabelsForSubprojects

Укажите список меток, разделённых точкой с запятой, которые будут обрабатываться как подпроекты. Это отображение будет передано в CDash при отправке результатов конфигурации, тестирования или сборки.

  • Переменная скрипта CTest: CTEST_LABELS_FOR_SUBPROJECTS
  • Переменная модуля CTest: CTEST_LABELS_FOR_SUBPROJECTS

См. Обзор меток и подпроектов.

TestLoad

При запуске тестов параллельно (например, с -j), старайтесь не запускать тесты, которые могут привести к превышению заданного порога нагрузки процессора.

  • Переменная скрипта CTest: CTEST_TEST_LOAD
  • Переменная модуля CTest: CTEST_TEST_LOAD
TimeOut

Время ожидания по умолчанию для каждого теста, если не указано свойством теста TIMEOUT.

  • Переменная скрипта CTest: CTEST_TEST_TIMEOUT
  • Переменная модуля CTest: DART_TESTING_TIMEOUT

Шаг CTest Coverage

В скрипте CTest, команда ctest_coverage() выполняет этот шаг. Аргументы команды могут задавать некоторые настройки шага.

Настройки конфигурации включают:

CoverageCommand

Инструмент командной строки для выполнения анализа охвата программного обеспечения. Он будет выполнен в местоположении, указанном настройкой BuildDirectory.

  • Переменная скрипта CTest: CTEST_COVERAGE_COMMAND
  • Переменная модуля CTest: COVERAGE_COMMAND
CoverageExtraFlags

Укажите параметры командной строки для инструмента CoverageCommand.

  • Переменная скрипта CTest: CTEST_COVERAGE_EXTRA_FLAGS
  • Переменная модуля CTest: COVERAGE_EXTRA_FLAGS

Эти параметры являются первыми аргументами, переданными инструменту CoverageCommand.

Шаг CTest MemCheck

В скрипте CTest, команда ctest_memcheck() выполняет этот шаг. Аргументы команды могут задавать некоторые настройки шага.

Настройки конфигурации включают:

MemoryCheckCommand

Инструмент командной строки для выполнения динамического анализа. Команды тестирования будут запускаться через этот инструмент.

  • Переменная скрипта CTest: CTEST_MEMORYCHECK_COMMAND
  • Переменная модуля CTest: MEMORYCHECK_COMMAND
MemoryCheckCommandOptions

Укажите параметры командной строки для инструмента MemoryCheckCommand. Они будут размещены перед командной строкой теста.

  • Переменная скрипта CTest: CTEST_MEMORYCHECK_COMMAND_OPTIONS
  • Переменная модуля CTest: MEMORYCHECK_COMMAND_OPTIONS
MemoryCheckType

Укажите тип проверки памяти для выполнения.

  • Переменная скрипта CTest: CTEST_MEMORYCHECK_TYPE
  • Переменная модуля CTest: MEMORYCHECK_TYPE
MemoryCheckSanitizerOptions

Укажите параметры для анализаторов при выполнении с сборкой, включившей анализаторы.

  • Переменная скрипта CTest: CTEST_MEMORYCHECK_SANITIZER_OPTIONS
  • Переменная модуля CTest: MEMORYCHECK_SANITIZER_OPTIONS
MemoryCheckSuppressionFile

Укажите файл, содержащий правила подавления для инструмента MemoryCheckCommand. Он будет передан с соответствующими параметрами для инструмента.

  • Переменная скрипта CTest: CTEST_MEMORYCHECK_SUPPRESSIONS_FILE
  • Переменная модуля CTest: MEMORYCHECK_SUPPRESSIONS_FILE

Дополнительные настройки конфигурации включают:

BoundsCheckerCommand

Укажите MemoryCheckCommand, известный своей совместимостью с командной строкой Bounds Checker.

  • Переменная скрипта CTest: нет
  • Переменная модуля CTest: нет
PurifyCommand

Укажите MemoryCheckCommand, известный своей совместимостью с командной строкой Purify.

  • Переменная скрипта CTest: нет
  • Переменная модуля CTest: PURIFYCOMMAND
ValgrindCommand

Укажите MemoryCheckCommand, известный своей совместимостью с командной строкой Valgrind.

  • Переменная скрипта CTest: нет
  • Переменная модуля CTest: VALGRIND_COMMAND
ValgrindCommandOptions

Укажите параметры командной строки для инструмента ValgrindCommand . Они будут помещены перед командной строкой теста.

  • Переменная скрипта CTest: нет
  • Переменная модуля CTest: VALGRIND_COMMAND_OPTIONS

Шаг CTest Submit

В скрипте CTest, команда ctest_submit() выполняет этот шаг. Аргументы команды могут задавать некоторые настройки шага.

Настройки конфигурации включают:

BuildName

Опишите платформу клиента для панели мониторинга коротким описанием. (Операционная система, компилятор и т.д.)

  • Сценарий CTest переменная: CTEST_BUILD_NAME
  • CTest модульная переменная: BUILDNAME
CDashVersion

Устаревшая опция. Не используется.

  • Сценарий CTest переменная: нет, определено из сервера
  • CTest модульная переменная: CTEST_CDASH_VERSION
CTestSubmitRetryCount

Укажите количество попыток повторной отправки при сбое сети.

  • Сценарий CTest переменная: нет, используйте опцию ctest_submit() RETRY_COUNT.
  • CTest модульная переменная: CTEST_SUBMIT_RETRY_COUNT
CTestSubmitRetryDelay

Укажите задержку перед повторной отправкой при сбое сети.

  • Сценарий CTest переменная: нет, используйте опцию ctest_submit() RETRY_DELAY.
  • CTest модульная переменная: CTEST_SUBMIT_RETRY_DELAY
CurlOptions

Укажите список опций, разделенных точкой с запятой, для управления библиотекой Curl, которую CTest использует для подключения к серверу. Возможные опции — CURLOPT_SSL_VERIFYPEER_OFF и CURLOPT_SSL_VERIFYHOST_OFF.

  • Сценарий CTest переменная: CTEST_CURL_OPTIONS
  • CTest модульная переменная: CTEST_CURL_OPTIONS
DropLocation

Устаревшая опция. Если SubmitURL не задана, она строится из DropMethod, DropSiteUser, DropSitePassword, DropSite, и DropLocation.

  • Сценарий CTest переменная: CTEST_DROP_LOCATION
  • CTest модульная переменная: DROP_LOCATION если задана, иначе CTEST_DROP_LOCATION
DropMethod

Устаревшая опция. Если SubmitURL не задана, она строится из DropMethod, DropSiteUser, DropSitePassword, DropSite, и DropLocation.

  • Сценарий CTest переменная: CTEST_DROP_METHOD
  • CTest модульная переменная: DROP_METHOD если задана, иначе CTEST_DROP_METHOD
DropSite

Устаревшая опция. Если SubmitURL не задана, она строится из DropMethod, DropSiteUser, DropSitePassword, DropSite, и DropLocation.

  • Сценарий CTest переменная: CTEST_DROP_SITE
  • CTest модульная переменная: DROP_SITE если задана, иначе CTEST_DROP_SITE
DropSitePassword

Устаревшая опция. Если SubmitURL не задана, она строится из DropMethod, DropSiteUser, DropSitePassword, DropSite, и DropLocation.

  • Сценарий CTest переменная: CTEST_DROP_SITE_PASSWORD
  • CTest модульная переменная: DROP_SITE_PASSWORD если задана, иначе CTEST_DROP_SITE_PASWORD
DropSiteUser

Устаревшая опция. Если SubmitURL не задана, она строится из DropMethod, DropSiteUser, DropSitePassword, DropSite, и DropLocation.

  • Сценарий CTest переменная: CTEST_DROP_SITE_USER
  • CTest модульная переменная: DROP_SITE_USER если задана, иначе CTEST_DROP_SITE_USER
IsCDash

Устаревшая опция. Не используется.

  • Сценарий CTest переменная: CTEST_DROP_SITE_CDASH
  • CTest модульная переменная: CTEST_DROP_SITE_CDASH
ScpCommand

Устаревшая опция. Не используется.

  • Сценарий CTest переменная: CTEST_SCP_COMMAND
  • CTest модульная переменная: SCPCOMMAND
Site

Опишите хост-сайт клиента для панели мониторинга коротким описанием. (Имя хоста, домен и т.д.)

  • Сценарий CTest переменная: CTEST_SITE
  • CTest модульная переменная: SITE, инициализируется командой site_name()
SubmitURL

URL сервера панели мониторинга, куда отправляется результат (или http, или https).

  • Сценарий CTest переменная: CTEST_SUBMIT_URL
  • CTest модульная переменная: SUBMIT_URL если задана, иначе CTEST_SUBMIT_URL
TriggerSite

Устаревшая опция. Не используется.

  • Сценарий CTest переменная: CTEST_TRIGGER_SITE
  • CTest модульная переменная: TRIGGER_SITE если задана, иначе CTEST_TRIGGER_SITE

Отображение как JSON-объектная модель

Если задана командная строка --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

Свойства теста. Может содержать ключи для каждого из поддерживаемых свойств тестов.

См. также

Для получения помощи по использованию CMake доступны следующие ресурсы:

Главная страница

https://cmake.org

Основная стартовая точка для обучения использованию CMake.

Онлайн-документация и ресурсы сообщества

https://cmake.org/documentation

Ссылки на доступную документацию и ресурсы сообщества можно найти на этой веб-странице.

Список рассылки

https://cmake.org/mailing-lists

Для получения помощи и обсуждения использования CMake предоставляется список рассылки по адресу cmake@cmake.org. Список является списком только для публикации, но можно подписаться на веб-странице CMake. Сначала прочитайте всю документацию по адресу https://cmake.org, прежде чем задавать вопросы в списке рассылки.

© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.15/manual/ctest.1.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API