pg_regress

用于执行回归测试的实用程序

pg_regress 是一个用于执行回归测试的实用程序。

pg_regressPostgreSQL 7.1 中添加。

用法

pg_regress 通常通过运行回归测试时的 PostgreSQL Makefile 间接执行。

pg_regress 旨在用于测试,不会安装到构建目标目录中。它通常也不包含在 PostgreSQL 软件包中。

环境变量

以下环境变量可以设置为影响 pg_regress 的行为;尤其是在通过 Makefile 间接调用它时

  • PG_REGRESS_DIFF_OPTS
  • PG_REGRESS_SOCK_DIR
  • PG_HOST
  • PG_PORT
  • INITDB_TEMPLATE
  • PGCTLTIMEOUT
  • COMSPEC(仅限 Windows)
  • PG_TEST_INITDB_EXTRA_OPTSPostgreSQL 17 及更高版本)
  • PG_TEST_USE_UNIX_SOCKETS(仅限 Windows)

源代码

pg_regress 源代码包含在以下文件中

更改历史记录

示例

为了演示 pg_regress 的用法,请考虑一个包含以下定义单个测试的文件的目录

$ find .
.
./sql
./sql/testdemo.sql
./expected
./expected/testdemo.out

$ cat sql/testdemo.sql
SELECT 'Hello cheese';

$ cat expected/testdemo.out
SELECT 'Hello world';
  ?column?   
-------------
 Hello world
(1 row)

出于演示目的,输入文件(sql/testdemo.sql)已创建,以便其实际输出与预期输出不匹配。

pg_regress 可以这样执行

$ ~/devel/postgresql/src/test/regress/pg_regress \
  --bindir=/usr/local/pgsql/bin \
  --temp-instance=/tmp/regress \
  testdemo
# initializing database system by running initdb
# using temp instance on port 55312 with PID 3704855
not ok 1     - testdemo                                   11 ms
1..1
# 1 of 1 tests failed.
# The differences that caused some tests to fail can be viewed in the file "/var/lib/pgsql/regress_test/regression.diffs".
# A copy of the test summary that you see above is saved in the file "/var/lib/pgsql/regress_test/regression.out".

该目录现在将包含 pg_regress 执行运行的各种输出

$ find .
.
./results
./results/testdemo.out
./regression.diffs
./sql
./sql/testdemo.sql
./regression.out
./expected
./expected/testdemo.out
./log
./log/initdb.log
./log/postmaster.log

文件 results/testdemo.out 包含执行 sql/testdemo.sql 的实际结果,而 regression.diffs 包含 expected/testdemo.out 和 results/testdemo.out 之间的差异

diff -U3 /var/lib/pgsql/regress_test/expected/test.out /var/lib/pgsql/regress_test/results/test.out
--- /var/lib/pgsql/regress_test/expected/test.out	2024-02-06 14:31:33.388790384 +0900
+++ /var/lib/pgsql/regress_test/results/test.out	2024-02-06 14:49:34.742656685 +0900
@@ -1,6 +1,6 @@
-SELECT 'Hello world';
-  ?column?   
--------------
- Hello world
+SELECT 'Hello cheese';
+   ?column?   
+--------------
+ Hello cheese
 (1 row)

分类

测试

反馈

提交关于 "pg_regress" 的任何评论、建议或更正 此处