32.4. TAP-тесты
Различные тесты, особенно тесты клиентских программ в src/bin
, используют инструменты Perl TAP и запускаются программой тестирования Perl prove
. Вы можете передать аргументы командной строки команде prove
, установив для make
переменную PROVE_FLAGS
, например:
make -C src/bin check PROVE_FLAGS='--timer'
За дополнительными сведениями обратитесь к странице руководства по prove
.
В переменной PROVE_TESTS
, которую воспринимает make
, может быть указан список разделённых пробелами путей, заданных относительно расположения 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
будут получены смешанные результаты от временных серверов и от уже работающего тестового сервера.