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 будут получены смешанные результаты от временных серверов и от уже работающего тестового сервера.