Skip to content

33.4. TAP 测试#

33.4.1. 环境变量

各种测试,特别是src/bin下的客户端程序测试,使用 Perl TAP 工具,并使用 Perl 测试程序prove运行。您可以通过设置make变量PROVE_FLAGS将命令行选项传递给prove,例如

make -C src/bin check PROVE_FLAGS='--timer'

有关更多信息,请参阅prove的手册页。

可以使用make变量PROVE_TESTS定义相对于调用prove以运行指定测试子集(而不是默认的t/*.pl)的Makefile的空格分隔路径列表。例如

make check PROVE_TESTS='t/001_test1.pl t/003_test3.pl'

TAP 测试需要 Perl 模块IPC::Run。此模块可从CPAN或操作系统包中获取。它们还需要PostgreSQL使用选项--enable-tap-tests进行配置。

一般来说,如果你说make installcheck,TAP 测试将在先前安装的安装树中测试可执行文件,或者如果你说make check,将从当前源代码构建新的本地安装树。在任何一种情况下,它们都将初始化一个本地实例(数据目录)并在其中临时运行一个服务器。其中一些测试运行多个服务器。因此,这些测试可能相当耗费资源。

重要的是要意识到,即使你说make installcheck,TAP 测试也会启动测试服务器;这与传统的非 TAP 测试基础设施不同,后者希望在这种情况下使用已经运行的测试服务器。一些 PostgreSQL 子目录同时包含传统风格和 TAP 风格的测试,这意味着make installcheck将产生来自临时服务器和已经运行的测试服务器的混合结果。

33.4.1. 环境变量#

数据目录根据测试文件名命名,如果测试失败,将保留这些目录。如果设置了环境变量PG_TEST_NOCLEAN,无论测试状态如何,都将保留数据目录。例如,在运行pg_dump测试时,无论测试结果如何,都保留数据目录

PG_TEST_NOCLEAN=1 make -C src/bin/pg_dump check

此环境变量还可防止删除测试的临时目录。

测试套件中的许多操作使用 180 秒超时,在速度较慢的主机上可能导致负载引起的超时。将环境变量PG_TEST_TIMEOUT_DEFAULT设置为较高的数字将更改默认值以避免这种情况。