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
будут получены смешанные результаты от временных серверов и от уже работающего тестового сервера.
32.4. TAP Tests
Various tests, particularly the client program tests under src/bin
, use the Perl TAP tools and are run using the Perl testing program prove
. You can pass command-line options to prove
by setting the make
variable PROVE_FLAGS
, for example:
make -C src/bin check PROVE_FLAGS='--timer'
See the manual page of prove
for more information.
The make
variable PROVE_TESTS
can be used to define a whitespace-separated list of paths relative to the Makefile
invoking prove
to run the specified subset of tests instead of the default t/*.pl
. For example:
make check PROVE_TESTS='t/001_test1.pl t/003_test3.pl'
The TAP tests require the Perl module IPC::Run
. This module is available from CPAN or an operating system package. They also require PostgreSQL to be configured with the option --enable-tap-tests
.
Generically speaking, the TAP tests will test the executables in a previously-installed installation tree if you say make installcheck
, or will build a new local installation tree from current sources if you say make check
. In either case they will initialize a local instance (data directory) and transiently run a server in it. Some of these tests run more than one server. Thus, these tests can be fairly resource-intensive.
It's important to realize that the TAP tests will start test server(s) even when you say make installcheck
; this is unlike the traditional non-TAP testing infrastructure, which expects to use an already-running test server in that case. Some PostgreSQL subdirectories contain both traditional-style and TAP-style tests, meaning that make installcheck
will produce a mix of results from temporary servers and the already-running test server.