33.4. TAP 测试

很多测试,特别是src/bin下面的客户端程序测试使用 Perl 的 TAP 工具并且用Perl测试程序prove运行。你可以通过 设置make变量PROVE_FLAGSprove传递命令行选项,例如:

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,将从当前源构建新的本地安装树。 在这两种情况下,他们将初始化本地实例(数据目录),并在其中暂时运行服务器。 其中一些测试运行多个服务器。 因此,这些测试可能相当耗费资源。

重要的是要认识到TAP测试将启动测试服务器,即使你说make installcheck;这与传统的非TAP 测试基础架构不同,在这种情况下它期望使用已经运行的测试服务器。 某些 PostgreSQL 子目录包含传统样式和 TAP 样式测试,这意味着make installcheck将产生来自临时服务器和已运行测试服务器的混合结果。