Тесты TAP
Эта страница переведена при помощи нейросети GigaChat.
Различные тесты, особенно тесты клиентской программы под src/bin
, используют инструменты Perl TAP и выполняются с помощью программы тестирования Perl prove
. Есть возможность передать параметры командной строки prove
, установив переменную make
PROVE_FLAGS
, например:
make -C src/bin check PROVE_FLAGS='--timer'
См. руководство по prove
для получения дополнительной информации.
Переменная make
PROVE_TESTS
используется для определения списка путей, разделенных пробелами относительно Makefile
вызывающего prove
для запуска указанного подмножества тестов вместо значения по умолчанию t/*.pl
. Например:
make check PROVE_TESTS='t/001_test1.pl t/003_test3.pl'
Для проведения тестов TAP требуется модуль Perl IPC::Run
. Этот модуль доступен из CPAN или пакета операционной системы. Они также требуют, чтобы PostgreSQL был настроен с опцией --enable-tap-tests
.
Тесты TAP будут тестировать исполняемые файлы в предварительно установленной установке дерева, если ввести команду make installcheck
, или создать новое локальное дерево установки из текущих источников, если ввести команду make check
. В любом случае они инициализируют локальный экземпляр (каталог данных) и временно запускают сервер в нем. Некоторые из этих тестов запускают более одного сервера. Таким образом, эти тесты могут быть довольно ресурсоемкими.
Тесты TAP будут запускать тестовый сервер (серверы), даже если ввести команду make installcheck
; это отличается от традиционной инфраструктуры тестирования без TAP, которая ожидает использование уже запущенного тестового сервера в этом случае. Некоторые подкаталоги PostgreSQL содержат как традиционные, так и тесты в стиле TAP, что означает, что make installcheck
даст смесь результатов из временных серверов и уже запущенного тестового сервера.
Переменные окружения
Каталоги данных называются согласно имени файла теста и сохраняются при сбое теста. Если установлена переменная окружения PG_TEST_NOCLEAN
, каталоги данных будут сохраняться независимо от статуса теста. Например, сохранение каталога данных независимо от результата теста при выполнении тестов pg_dump
:
PG_TEST_NOCLEAN=1 make -C src/bin/pg_dump check
Эта переменная окружения также предотвращает удаление временных каталогов теста.
Многие операции в наборах тестов имеют тайм-аут продолжительностью 180 секунд, который на медленных хостах может привести к нагрузочным тайм-аута. Установка переменной окружения PG_TEST_TIMEOUT_DEFAULT
на большее число изменит значение по умолчанию, чтобы избежать этого.