List TAP test files in makefiles
meson.build files have to list TAP test files explicitly. Makefiles
have been relying on a t/*.pl wildcard. As a consequence, it is
traditional now that many developers who are primarily using make forget
to add any new TAP test files to the respective meson.build file.
The obvious solution is to also require the makefiles to list TAP files
explicitly, which is what I'm proposing here.
To list the test files, I'm re-using the make variable TAP_TESTS that is
already in use by extensions. Extensions up to now would just write
something like
TAP_TESTS = 1
Starting with this patch, they would have to write
TAP_TESTS = t/001_foo.pl t/002_bar.pl
This makes it somewhat backward compatible. (For example, with the
latter formulation, PG<=18 would still read it as enabling TAP tests,
but it would ignore the actual file list.)
(I have considered other variants: We already have the make variable
PROVE_TESTS that you can use to override the list of tests from the make
command line. But if you use that one to list the tests in an extension
makefile, then that extension would have to use both PROVE_TESTS and
TAP_TESTS (to enable TAP tests overall), which seems pretty confusing.
I think the solution I ended up with is compact and intuitive.)
In the attached patch, I have arranged it so that the interesting
changes are in the first three files, the rest is just mechanical.
Attachments:
0001-List-TAP-test-files-in-makefiles.patchtext/plain; charset=UTF-8; name=0001-List-TAP-test-files-in-makefiles.patchDownload
From 04d2fb3ee31123837b8f3184a5249fdfae641969 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
Date: Sat, 23 Aug 2025 08:00:09 +0200
Subject: [PATCH] List TAP test files in makefiles
meson.build files have to list TAP test files explicitly. Makefiles
have been relying on a t/*.pl wildcard. As a consequence many
developers that are primarily using make forget to add any new TAP
test files to the respective meson.build file.
To prevent this, this now also requires that makefiles list TAP test
files explicitly. For this, we use the existing make variable
TAP_TESTS.
---
doc/src/sgml/extend.sgml | 14 ++++--
src/Makefile.global.in | 15 ++++--
src/makefiles/pgxs.mk | 2 +-
contrib/amcheck/Makefile | 8 +++
contrib/auto_explain/Makefile | 3 ++
contrib/basebackup_to_shell/Makefile | 3 ++
contrib/bloom/Makefile | 3 ++
contrib/dblink/Makefile | 3 ++
contrib/oid2name/Makefile | 3 ++
contrib/pg_prewarm/Makefile | 3 ++
contrib/pg_stat_statements/Makefile | 3 ++
contrib/pg_visibility/Makefile | 4 ++
contrib/postgres_fdw/Makefile | 3 ++
contrib/sepgsql/Makefile | 3 ++
contrib/test_decoding/Makefile | 3 ++
contrib/vacuumlo/Makefile | 3 ++
src/bin/initdb/Makefile | 3 ++
src/bin/pg_amcheck/Makefile | 7 +++
src/bin/pg_archivecleanup/Makefile | 3 ++
src/bin/pg_basebackup/Makefile | 7 +++
src/bin/pg_checksums/Makefile | 4 ++
src/bin/pg_combinebackup/Makefile | 12 +++++
src/bin/pg_config/Makefile | 3 ++
src/bin/pg_controldata/Makefile | 3 ++
src/bin/pg_ctl/Makefile | 6 +++
src/bin/pg_dump/Makefile | 8 +++
src/bin/pg_resetwal/Makefile | 4 ++
src/bin/pg_rewind/Makefile | 12 +++++
src/bin/pg_test_fsync/Makefile | 3 ++
src/bin/pg_test_timing/Makefile | 3 ++
src/bin/pg_upgrade/Makefile | 8 +++
src/bin/pg_verifybackup/Makefile | 12 +++++
src/bin/pg_waldump/Makefile | 4 ++
src/bin/pg_walsummary/Makefile | 4 ++
src/bin/pgbench/Makefile | 4 ++
src/bin/psql/Makefile | 5 ++
src/bin/scripts/Makefile | 15 ++++++
src/interfaces/ecpg/preproc/Makefile | 4 ++
src/interfaces/libpq/Makefile | 8 +++
src/test/authentication/Makefile | 9 ++++
src/test/icu/Makefile | 3 ++
src/test/kerberos/Makefile | 3 ++
src/test/ldap/Makefile | 5 ++
src/test/modules/brin/Makefile | 4 ++
src/test/modules/commit_ts/Makefile | 6 +++
src/test/modules/injection_points/Makefile | 3 ++
src/test/modules/ldap_password_func/Makefile | 3 ++
src/test/modules/libpq_pipeline/Makefile | 3 ++
src/test/modules/oauth_validator/Makefile | 4 ++
.../modules/ssl_passphrase_callback/Makefile | 3 ++
src/test/modules/test_aio/Makefile | 4 ++
src/test/modules/test_custom_rmgrs/Makefile | 3 ++
src/test/modules/test_escape/Makefile | 3 ++
src/test/modules/test_extensions/Makefile | 3 ++
src/test/modules/test_int128/Makefile | 3 ++
src/test/modules/test_json_parser/Makefile | 6 +++
src/test/modules/test_misc/Makefile | 10 ++++
src/test/modules/test_pg_dump/Makefile | 3 ++
src/test/modules/test_slru/Makefile | 3 ++
src/test/modules/worker_spi/Makefile | 3 ++
src/test/modules/xid_wraparound/Makefile | 5 ++
src/test/postmaster/Makefile | 5 ++
src/test/recovery/Makefile | 49 +++++++++++++++++++
src/test/ssl/Makefile | 5 ++
src/test/subscription/Makefile | 38 ++++++++++++++
src/tools/pg_bsd_indent/Makefile | 3 ++
66 files changed, 402 insertions(+), 8 deletions(-)
diff --git a/doc/src/sgml/extend.sgml b/doc/src/sgml/extend.sgml
index 63c5ec6d1eb..bce242fc6d6 100644
--- a/doc/src/sgml/extend.sgml
+++ b/doc/src/sgml/extend.sgml
@@ -1696,7 +1696,7 @@ <title>Extension Building Infrastructure</title>
<term><varname>TAP_TESTS</varname></term>
<listitem>
<para>
- switch defining if TAP tests need to be run, see below
+ list of TAP test files, see below
</para>
</listitem>
</varlistentry>
@@ -1910,9 +1910,15 @@ <title>Extension Building Infrastructure</title>
</para>
<para>
- <literal>TAP_TESTS</literal> enables the use of TAP tests. Data from each
- run is present in a subdirectory named <literal>tmp_check/</literal>.
- See also <xref linkend="regress-tap"/> for more details.
+ <varname>TAP_TESTS</varname> lists TAP test files to run. (In PostgreSQL
+ releases 18 and older, <varname>TAP_TESTS</varname> was effectively a
+ Boolean variable: If it was set, all TAP tests files that could be found
+ were included automatically. But now, all test files must be listed
+ explicitly. This is backward compatible: If the variable contains a list
+ of TAP test files, older releases will enable TAP tests and include all
+ files.) Data from each run is present in a subdirectory named
+ <literal>tmp_check/</literal>. See also <xref linkend="regress-tap"/> for
+ more details.
</para>
<tip>
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index 8b1b357beaa..ae985336bab 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -460,6 +460,15 @@ PROVE_FLAGS =
ifeq ($(enable_tap_tests),yes)
+# TAP_TESTS is documented for use by PGXS extensions. PROVE_TESTS is
+# documented for override from the make command line. This way, both
+# can be accommodated and backward compatibility is maintained.
+PROVE_TESTS = $(TAP_TESTS)
+
+# Note that prove without non-option arguments applies its own
+# wildcard search. To prevent that, we have to pass something to make
+# it fail if our makefile didn't define any test files.
+
ifndef PGXS
define prove_installcheck
echo "# +++ tap install-check in $(subdir) +++" && \
@@ -472,7 +481,7 @@ cd $(srcdir) && \
PGPORT='6$(DEF_PGPORT)' top_builddir='$(CURDIR)/$(top_builddir)' \
PG_REGRESS='$(CURDIR)/$(top_builddir)/src/test/regress/pg_regress' \
share_contrib_dir='$(DESTDIR)$(datadir)/$(datamoduledir)' \
- $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) $(if $(PROVE_TESTS),$(PROVE_TESTS),t/*.pl)
+ $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) $(if $(PROVE_TESTS),$(PROVE_TESTS),--)
endef
else # PGXS case
define prove_installcheck
@@ -485,7 +494,7 @@ cd $(srcdir) && \
PATH="$(bindir):$(CURDIR):$$PATH" \
PGPORT='6$(DEF_PGPORT)' \
PG_REGRESS='$(top_builddir)/src/test/regress/pg_regress' \
- $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) $(if $(PROVE_TESTS),$(PROVE_TESTS),t/*.pl)
+ $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) $(if $(PROVE_TESTS),$(PROVE_TESTS),--)
endef
endif # PGXS
@@ -500,7 +509,7 @@ cd $(srcdir) && \
PGPORT='6$(DEF_PGPORT)' top_builddir='$(CURDIR)/$(top_builddir)' \
PG_REGRESS='$(CURDIR)/$(top_builddir)/src/test/regress/pg_regress' \
share_contrib_dir='$(abs_top_builddir)/tmp_install$(datadir)/$(datamoduledir)' \
- $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) $(if $(PROVE_TESTS),$(PROVE_TESTS),t/*.pl)
+ $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) $(if $(PROVE_TESTS),$(PROVE_TESTS),--)
endef
else
diff --git a/src/makefiles/pgxs.mk b/src/makefiles/pgxs.mk
index 039cee3dfe5..5e97e5971ce 100644
--- a/src/makefiles/pgxs.mk
+++ b/src/makefiles/pgxs.mk
@@ -46,7 +46,7 @@
# HEADERS_built_$(MODULE) -- as above but built first (also NOT cleaned)
# REGRESS -- list of regression test cases (without suffix)
# REGRESS_OPTS -- additional switches to pass to pg_regress
-# TAP_TESTS -- switch to enable TAP tests
+# TAP_TESTS -- list of TAP test files
# ISOLATION -- list of isolation test cases
# ISOLATION_OPTS -- additional switches to pass to pg_isolation_regress
# NO_INSTALL -- don't define an install target, useful for test modules
diff --git a/contrib/amcheck/Makefile b/contrib/amcheck/Makefile
index 1b7a63cbaa4..dcd87f60609 100644
--- a/contrib/amcheck/Makefile
+++ b/contrib/amcheck/Makefile
@@ -18,6 +18,14 @@ REGRESS = check check_btree check_gin check_heap
EXTRA_INSTALL = contrib/pg_walinspect
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_verify_heapam.pl \
+ t/002_cic.pl \
+ t/003_cic_2pc.pl \
+ t/004_verify_nbtree_unique.pl \
+ t/005_pitr.pl \
+ t/006_verify_gin.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/contrib/auto_explain/Makefile b/contrib/auto_explain/Makefile
index 94ab28e7c06..48f8a1b3113 100644
--- a/contrib/auto_explain/Makefile
+++ b/contrib/auto_explain/Makefile
@@ -10,6 +10,9 @@ REGRESS = alter_reset
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_auto_explain.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/contrib/basebackup_to_shell/Makefile b/contrib/basebackup_to_shell/Makefile
index 58bd26991ae..9dedfa4c802 100644
--- a/contrib/basebackup_to_shell/Makefile
+++ b/contrib/basebackup_to_shell/Makefile
@@ -9,6 +9,9 @@ PGFILEDESC = "basebackup_to_shell - target basebackup to shell command"
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_basic.pl
+
export GZIP_PROGRAM=$(GZIP)
export TAR
diff --git a/contrib/bloom/Makefile b/contrib/bloom/Makefile
index 8a781e43889..7c0cdfe6808 100644
--- a/contrib/bloom/Makefile
+++ b/contrib/bloom/Makefile
@@ -18,6 +18,9 @@ REGRESS = bloom
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_wal.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/contrib/dblink/Makefile b/contrib/dblink/Makefile
index fde0b49ddbb..46bcabe4bca 100644
--- a/contrib/dblink/Makefile
+++ b/contrib/dblink/Makefile
@@ -15,6 +15,9 @@ REGRESS = dblink
REGRESS_OPTS = --dlpath=$(top_builddir)/src/test/regress
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_auth_scram.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/contrib/oid2name/Makefile b/contrib/oid2name/Makefile
index 6179ed594cf..20841fd15c1 100644
--- a/contrib/oid2name/Makefile
+++ b/contrib/oid2name/Makefile
@@ -10,6 +10,9 @@ OBJS = \
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_basic.pl
+
PG_CPPFLAGS = -I$(libpq_srcdir)
PG_LIBS_INTERNAL = $(libpq_pgport)
diff --git a/contrib/pg_prewarm/Makefile b/contrib/pg_prewarm/Makefile
index 617ac8e09b2..0faf3d08ccf 100644
--- a/contrib/pg_prewarm/Makefile
+++ b/contrib/pg_prewarm/Makefile
@@ -14,6 +14,9 @@ REGRESS = pg_prewarm
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_basic.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/contrib/pg_stat_statements/Makefile b/contrib/pg_stat_statements/Makefile
index fe0478ac552..f8be03bd52f 100644
--- a/contrib/pg_stat_statements/Makefile
+++ b/contrib/pg_stat_statements/Makefile
@@ -28,6 +28,9 @@ NO_INSTALLCHECK = 1
TAP_TESTS = 1
+TAP_TESTS = \
+ t/010_restart.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/contrib/pg_visibility/Makefile b/contrib/pg_visibility/Makefile
index d3cb411cc90..82f58b5f7ff 100644
--- a/contrib/pg_visibility/Makefile
+++ b/contrib/pg_visibility/Makefile
@@ -13,6 +13,10 @@ PGFILEDESC = "pg_visibility - page visibility information"
REGRESS = pg_visibility
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_concurrent_transaction.pl \
+ t/002_corrupt_vm.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/contrib/postgres_fdw/Makefile b/contrib/postgres_fdw/Makefile
index adfbd2ef758..1fc3b87a35f 100644
--- a/contrib/postgres_fdw/Makefile
+++ b/contrib/postgres_fdw/Makefile
@@ -19,6 +19,9 @@ DATA = postgres_fdw--1.0.sql postgres_fdw--1.0--1.1.sql postgres_fdw--1.1--1.2.s
REGRESS = postgres_fdw query_cancel
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_auth_scram.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/contrib/sepgsql/Makefile b/contrib/sepgsql/Makefile
index 90b4585a9e2..372fe568e4d 100644
--- a/contrib/sepgsql/Makefile
+++ b/contrib/sepgsql/Makefile
@@ -17,6 +17,9 @@ PGFILEDESC = "sepgsql - SELinux integration"
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_sepgsql.pl
+
# Note: because we don't tell the Makefile there are any regression tests,
# we have to clean those result files explicitly
EXTRA_CLEAN = -r $(pg_regress_clean_files) tmp/ *.pp sepgsql-regtest.if sepgsql-regtest.fc
diff --git a/contrib/test_decoding/Makefile b/contrib/test_decoding/Makefile
index 02e961f4d31..2dd192843ba 100644
--- a/contrib/test_decoding/Makefile
+++ b/contrib/test_decoding/Makefile
@@ -20,6 +20,9 @@ NO_INSTALLCHECK = 1
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_repl_stats.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/contrib/vacuumlo/Makefile b/contrib/vacuumlo/Makefile
index 6bc7b34f08d..758963f273a 100644
--- a/contrib/vacuumlo/Makefile
+++ b/contrib/vacuumlo/Makefile
@@ -10,6 +10,9 @@ OBJS = \
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_basic.pl
+
PG_CPPFLAGS = -I$(libpq_srcdir)
PG_LIBS_INTERNAL = $(libpq_pgport)
diff --git a/src/bin/initdb/Makefile b/src/bin/initdb/Makefile
index c0470efda92..1a69ff86257 100644
--- a/src/bin/initdb/Makefile
+++ b/src/bin/initdb/Makefile
@@ -63,6 +63,9 @@ initdb.o: initdb.c $(top_builddir)/src/Makefile.global
export with_icu
+TAP_TESTS = \
+ t/001_initdb.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_amcheck/Makefile b/src/bin/pg_amcheck/Makefile
index fa6071f97c1..84df4fa47df 100644
--- a/src/bin/pg_amcheck/Makefile
+++ b/src/bin/pg_amcheck/Makefile
@@ -44,6 +44,13 @@ clean distclean:
rm -f pg_amcheck$(X) $(OBJS)
rm -rf tmp_check
+TAP_TESTS = \
+ t/001_basic.pl \
+ t/002_nonesuch.pl \
+ t/003_check.pl \
+ t/004_verify_heapam.pl \
+ t/005_opclass_damage.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_archivecleanup/Makefile b/src/bin/pg_archivecleanup/Makefile
index 93fd703f225..0453add2047 100644
--- a/src/bin/pg_archivecleanup/Makefile
+++ b/src/bin/pg_archivecleanup/Makefile
@@ -29,6 +29,9 @@ clean distclean:
rm -f pg_archivecleanup$(X) $(OBJS)
rm -rf tmp_check
+TAP_TESTS = \
+ t/010_pg_archivecleanup.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_basebackup/Makefile b/src/bin/pg_basebackup/Makefile
index a9557c0789f..641a0a2292a 100644
--- a/src/bin/pg_basebackup/Makefile
+++ b/src/bin/pg_basebackup/Makefile
@@ -74,6 +74,13 @@ clean distclean:
$(OBJS)
rm -rf tmp_check
+TAP_TESTS = \
+ t/010_pg_basebackup.pl \
+ t/011_in_place_tablespace.pl \
+ t/020_pg_receivewal.pl \
+ t/030_pg_recvlogical.pl \
+ t/040_pg_createsubscriber.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_checksums/Makefile b/src/bin/pg_checksums/Makefile
index a7f6d9c7c5c..ed8fa8b86be 100644
--- a/src/bin/pg_checksums/Makefile
+++ b/src/bin/pg_checksums/Makefile
@@ -40,6 +40,10 @@ clean distclean:
rm -f pg_checksums$(X) $(OBJS)
rm -rf tmp_check
+TAP_TESTS = \
+ t/001_basic.pl \
+ t/002_actions.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_combinebackup/Makefile b/src/bin/pg_combinebackup/Makefile
index 33a1f4483bf..6e6875ad3ac 100644
--- a/src/bin/pg_combinebackup/Makefile
+++ b/src/bin/pg_combinebackup/Makefile
@@ -46,6 +46,18 @@ clean distclean maintainer-clean:
rm -f pg_combinebackup$(X) $(OBJS)
rm -rf tmp_check
+TAP_TESTS = \
+ t/001_basic.pl \
+ t/002_compare_backups.pl \
+ t/003_timeline.pl \
+ t/004_manifest.pl \
+ t/005_integrity.pl \
+ t/006_db_file_copy.pl \
+ t/007_wal_level_minimal.pl \
+ t/008_promote.pl \
+ t/009_no_full_file.pl \
+ t/010_hardlink.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_config/Makefile b/src/bin/pg_config/Makefile
index 38169b0ded5..22287769122 100644
--- a/src/bin/pg_config/Makefile
+++ b/src/bin/pg_config/Makefile
@@ -37,6 +37,9 @@ clean distclean:
rm -f pg_config$(X) $(OBJS)
rm -rf tmp_check
+TAP_TESTS = \
+ t/001_pg_config.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_controldata/Makefile b/src/bin/pg_controldata/Makefile
index 029370afb13..f48eab0ad41 100644
--- a/src/bin/pg_controldata/Makefile
+++ b/src/bin/pg_controldata/Makefile
@@ -37,6 +37,9 @@ clean distclean:
rm -f pg_controldata$(X) $(OBJS)
rm -rf tmp_check
+TAP_TESTS = \
+ t/001_pg_controldata.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_ctl/Makefile b/src/bin/pg_ctl/Makefile
index 1c4bb324714..f345e1391e9 100644
--- a/src/bin/pg_ctl/Makefile
+++ b/src/bin/pg_ctl/Makefile
@@ -46,6 +46,12 @@ clean distclean:
rm -f pg_ctl$(X) $(OBJS)
rm -rf tmp_check
+TAP_TESTS = \
+ t/001_start_stop.pl \
+ t/002_status.pl \
+ t/003_promote.pl \
+ t/004_logrotate.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_dump/Makefile b/src/bin/pg_dump/Makefile
index fa795883e9f..93010aa8632 100644
--- a/src/bin/pg_dump/Makefile
+++ b/src/bin/pg_dump/Makefile
@@ -62,6 +62,14 @@ install: all installdirs
installdirs:
$(MKDIR_P) '$(DESTDIR)$(bindir)'
+TAP_TESTS = \
+ t/001_basic.pl \
+ t/002_pg_dump.pl \
+ t/003_pg_dump_with_server.pl \
+ t/004_pg_dump_parallel.pl \
+ t/005_pg_dump_filterfile.pl \
+ t/010_dump_connstr.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_resetwal/Makefile b/src/bin/pg_resetwal/Makefile
index 82bea06dee5..3c3b8909ce1 100644
--- a/src/bin/pg_resetwal/Makefile
+++ b/src/bin/pg_resetwal/Makefile
@@ -39,6 +39,10 @@ clean distclean:
rm -f pg_resetwal$(X) $(OBJS)
rm -rf tmp_check
+TAP_TESTS = \
+ t/001_basic.pl \
+ t/002_corrupted.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_rewind/Makefile b/src/bin/pg_rewind/Makefile
index cbd000b686d..e352de9bd88 100644
--- a/src/bin/pg_rewind/Makefile
+++ b/src/bin/pg_rewind/Makefile
@@ -53,6 +53,18 @@ clean distclean:
rm -f pg_rewind$(X) $(OBJS) xlogreader.c
rm -rf tmp_check
+TAP_TESTS = \
+ t/001_basic.pl \
+ t/002_databases.pl \
+ t/003_extrafiles.pl \
+ t/004_pg_xlog_symlink.pl \
+ t/005_same_timeline.pl \
+ t/006_options.pl \
+ t/007_standby_source.pl \
+ t/008_min_recovery_point.pl \
+ t/009_growing_files.pl \
+ t/010_keep_recycled_wals.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_test_fsync/Makefile b/src/bin/pg_test_fsync/Makefile
index 4c5e5181250..5101ec3d5cb 100644
--- a/src/bin/pg_test_fsync/Makefile
+++ b/src/bin/pg_test_fsync/Makefile
@@ -22,6 +22,9 @@ install: all installdirs
installdirs:
$(MKDIR_P) '$(DESTDIR)$(bindir)'
+TAP_TESTS = \
+ t/001_basic.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_test_timing/Makefile b/src/bin/pg_test_timing/Makefile
index 7f677edadb3..d73e174f9ec 100644
--- a/src/bin/pg_test_timing/Makefile
+++ b/src/bin/pg_test_timing/Makefile
@@ -22,6 +22,9 @@ install: all installdirs
installdirs:
$(MKDIR_P) '$(DESTDIR)$(bindir)'
+TAP_TESTS = \
+ t/001_basic.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_upgrade/Makefile b/src/bin/pg_upgrade/Makefile
index f83d2b5d309..5bd7f294118 100644
--- a/src/bin/pg_upgrade/Makefile
+++ b/src/bin/pg_upgrade/Makefile
@@ -57,6 +57,14 @@ clean distclean:
export with_icu
+TAP_TESTS = \
+ t/001_basic.pl \
+ t/002_pg_upgrade.pl \
+ t/003_logical_slots.pl \
+ t/004_subscription.pl \
+ t/005_char_signedness.pl \
+ t/006_transfer_modes.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_verifybackup/Makefile b/src/bin/pg_verifybackup/Makefile
index 374d4a8afd1..5e12f71da48 100644
--- a/src/bin/pg_verifybackup/Makefile
+++ b/src/bin/pg_verifybackup/Makefile
@@ -43,6 +43,18 @@ clean distclean:
rm -f pg_verifybackup$(X) $(OBJS)
rm -rf tmp_check
+TAP_TESTS = \
+ t/001_basic.pl \
+ t/002_algorithm.pl \
+ t/003_corruption.pl \
+ t/004_options.pl \
+ t/005_bad_manifest.pl \
+ t/006_encoding.pl \
+ t/007_wal.pl \
+ t/008_untar.pl \
+ t/009_extract.pl \
+ t/010_client_untar.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_waldump/Makefile b/src/bin/pg_waldump/Makefile
index 4c1ee649501..730e49039bb 100644
--- a/src/bin/pg_waldump/Makefile
+++ b/src/bin/pg_waldump/Makefile
@@ -49,6 +49,10 @@ clean distclean:
rm -f pg_waldump$(X) $(OBJS) $(RMGRDESCSOURCES) xlogreader.c xlogstats.c
rm -rf tmp_check
+TAP_TESTS = \
+ t/001_basic.pl \
+ t/002_save_fullpage.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_walsummary/Makefile b/src/bin/pg_walsummary/Makefile
index 1bc620572d2..34dd6655999 100644
--- a/src/bin/pg_walsummary/Makefile
+++ b/src/bin/pg_walsummary/Makefile
@@ -42,6 +42,10 @@ clean distclean maintainer-clean:
rm -f pg_walsummary$(X) $(OBJS)
rm -rf tmp_check
+TAP_TESTS = \
+ t/001_basic.pl \
+ t/002_blocks.pl
+
check:
$(prove_check)
diff --git a/src/bin/pgbench/Makefile b/src/bin/pgbench/Makefile
index 987bf64df9d..37d3c39dba0 100644
--- a/src/bin/pgbench/Makefile
+++ b/src/bin/pgbench/Makefile
@@ -52,6 +52,10 @@ clean distclean:
rm -rf tmp_check
rm -f exprparse.h exprparse.c exprscan.c
+TAP_TESTS = \
+ t/001_pgbench_with_server.pl \
+ t/002_pgbench_no_server.pl
+
check:
$(prove_check)
diff --git a/src/bin/psql/Makefile b/src/bin/psql/Makefile
index 5b1545d9948..89bd6d71f3e 100644
--- a/src/bin/psql/Makefile
+++ b/src/bin/psql/Makefile
@@ -79,6 +79,11 @@ clean distclean:
rm -rf tmp_check
rm -f sql_help.h sql_help.c psqlscanslash.c tab-complete.c
+TAP_TESTS = \
+ t/001_basic.pl \
+ t/010_tab_completion.pl \
+ t/020_cancel.pl
+
check:
$(prove_check)
diff --git a/src/bin/scripts/Makefile b/src/bin/scripts/Makefile
index f6b4d40810b..c917371691b 100644
--- a/src/bin/scripts/Makefile
+++ b/src/bin/scripts/Makefile
@@ -55,6 +55,21 @@ clean distclean:
export with_icu
+TAP_TESTS = \
+ t/010_clusterdb.pl \
+ t/011_clusterdb_all.pl \
+ t/020_createdb.pl \
+ t/040_createuser.pl \
+ t/050_dropdb.pl \
+ t/070_dropuser.pl \
+ t/080_pg_isready.pl \
+ t/090_reindexdb.pl \
+ t/091_reindexdb_all.pl \
+ t/100_vacuumdb.pl \
+ t/101_vacuumdb_all.pl \
+ t/102_vacuumdb_stages.pl \
+ t/200_connstr.pl
+
check:
$(prove_check)
diff --git a/src/interfaces/ecpg/preproc/Makefile b/src/interfaces/ecpg/preproc/Makefile
index f2ac8850479..3ece4249c4a 100644
--- a/src/interfaces/ecpg/preproc/Makefile
+++ b/src/interfaces/ecpg/preproc/Makefile
@@ -81,6 +81,10 @@ ecpg_keywords.o: ecpg_kwlist_d.h
c_keywords.o: c_kwlist_d.h
keywords.o: $(top_srcdir)/src/include/parser/kwlist.h
+TAP_TESTS = \
+ t/001_ecpg_err_warn_msg.pl \
+ t/002_ecpg_err_warn_msg_informix.pl
+
check:
$(prove_check)
diff --git a/src/interfaces/libpq/Makefile b/src/interfaces/libpq/Makefile
index da6650066d4..936e23e1dad 100644
--- a/src/interfaces/libpq/Makefile
+++ b/src/interfaces/libpq/Makefile
@@ -176,6 +176,14 @@ test-build:
check installcheck: export PATH := $(CURDIR)/test:$(PATH)
+TAP_TESTS = \
+ t/001_uri.pl \
+ t/002_api.pl \
+ t/003_load_balance_host_list.pl \
+ t/004_load_balance_dns.pl \
+ t/005_negotiate_encryption.pl \
+ t/006_service.pl
+
check: test-build all
$(prove_check)
diff --git a/src/test/authentication/Makefile b/src/test/authentication/Makefile
index 8b5beced080..887ab3d2af5 100644
--- a/src/test/authentication/Makefile
+++ b/src/test/authentication/Makefile
@@ -17,6 +17,15 @@ EXTRA_INSTALL = src/test/modules/injection_points
export enable_injection_points
+TAP_TESTS = \
+ t/001_password.pl \
+ t/002_saslprep.pl \
+ t/003_peer.pl \
+ t/004_file_inclusion.pl \
+ t/005_sspi.pl \
+ t/006_login_trigger.pl \
+ t/007_pre_auth.pl
+
check:
$(prove_check)
diff --git a/src/test/icu/Makefile b/src/test/icu/Makefile
index 5383c0b3001..11c2414fe2b 100644
--- a/src/test/icu/Makefile
+++ b/src/test/icu/Makefile
@@ -15,6 +15,9 @@ include $(top_builddir)/src/Makefile.global
export with_icu
+TAP_TESTS = \
+ t/010_database.pl
+
check:
$(prove_check)
diff --git a/src/test/kerberos/Makefile b/src/test/kerberos/Makefile
index ddaa6deaa67..67390e3ba6d 100644
--- a/src/test/kerberos/Makefile
+++ b/src/test/kerberos/Makefile
@@ -18,6 +18,9 @@ EXTRA_INSTALL += contrib/dblink
export with_gssapi with_krb_srvnam
+TAP_TESTS = \
+ t/001_auth.pl
+
check:
$(prove_check)
diff --git a/src/test/ldap/Makefile b/src/test/ldap/Makefile
index e852069d7fb..8916ad4790a 100644
--- a/src/test/ldap/Makefile
+++ b/src/test/ldap/Makefile
@@ -15,6 +15,11 @@ include $(top_builddir)/src/Makefile.global
export with_ldap
+TAP_TESTS = \
+ t/001_auth.pl \
+ t/002_bindpasswd.pl \
+ t/003_ldap_connection_param_lookup.pl
+
check:
$(prove_check)
diff --git a/src/test/modules/brin/Makefile b/src/test/modules/brin/Makefile
index e74af891ce7..e36eba2d704 100644
--- a/src/test/modules/brin/Makefile
+++ b/src/test/modules/brin/Makefile
@@ -5,6 +5,10 @@ EXTRA_INSTALL = contrib/pageinspect contrib/pg_walinspect
ISOLATION = summarization-and-inprogress-insertion
TAP_TESTS = 1
+TAP_TESTS = \
+ t/01_workitems.pl \
+ t/02_wal_consistency.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/src/test/modules/commit_ts/Makefile b/src/test/modules/commit_ts/Makefile
index 113bcfa210b..cf8667e6b42 100644
--- a/src/test/modules/commit_ts/Makefile
+++ b/src/test/modules/commit_ts/Makefile
@@ -8,6 +8,12 @@ NO_INSTALLCHECK = 1
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_base.pl \
+ t/002_standby.pl \
+ t/003_standby_2.pl \
+ t/004_restart.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/src/test/modules/injection_points/Makefile b/src/test/modules/injection_points/Makefile
index fc82cd67f6c..a80531d0b5e 100644
--- a/src/test/modules/injection_points/Makefile
+++ b/src/test/modules/injection_points/Makefile
@@ -18,6 +18,9 @@ ISOLATION = basic inplace syscache-update-pruned
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_stats.pl
+
# The injection points are cluster-wide, so disable installcheck
NO_INSTALLCHECK = 1
diff --git a/src/test/modules/ldap_password_func/Makefile b/src/test/modules/ldap_password_func/Makefile
index bb080135454..e482bb1593d 100644
--- a/src/test/modules/ldap_password_func/Makefile
+++ b/src/test/modules/ldap_password_func/Makefile
@@ -10,6 +10,9 @@ PGFILEDESC = "set hook to mutate ldapbindpasswd"
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_mutated_bindpasswd.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/src/test/modules/libpq_pipeline/Makefile b/src/test/modules/libpq_pipeline/Makefile
index 65acc3e997e..40337b1f094 100644
--- a/src/test/modules/libpq_pipeline/Makefile
+++ b/src/test/modules/libpq_pipeline/Makefile
@@ -13,6 +13,9 @@ PG_LIBS_INTERNAL += $(libpq_pgport)
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_libpq_pipeline.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/src/test/modules/oauth_validator/Makefile b/src/test/modules/oauth_validator/Makefile
index 05b9f06ed73..baa49c9764f 100644
--- a/src/test/modules/oauth_validator/Makefile
+++ b/src/test/modules/oauth_validator/Makefile
@@ -23,6 +23,10 @@ NO_INSTALLCHECK = 1
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_server.pl \
+ t/002_client.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/src/test/modules/ssl_passphrase_callback/Makefile b/src/test/modules/ssl_passphrase_callback/Makefile
index 7f977dbabf0..7e0e8096f5b 100644
--- a/src/test/modules/ssl_passphrase_callback/Makefile
+++ b/src/test/modules/ssl_passphrase_callback/Makefile
@@ -8,6 +8,9 @@ PGFILEDESC = "callback function to provide a passphrase"
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_testfunc.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/src/test/modules/test_aio/Makefile b/src/test/modules/test_aio/Makefile
index f53cc64671a..5dfb821f366 100644
--- a/src/test/modules/test_aio/Makefile
+++ b/src/test/modules/test_aio/Makefile
@@ -12,6 +12,10 @@ DATA = test_aio--1.0.sql
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_aio.pl \
+ t/002_io_workers.pl
+
export enable_injection_points
ifdef USE_PGXS
diff --git a/src/test/modules/test_custom_rmgrs/Makefile b/src/test/modules/test_custom_rmgrs/Makefile
index b557e5888eb..9c0295cea99 100644
--- a/src/test/modules/test_custom_rmgrs/Makefile
+++ b/src/test/modules/test_custom_rmgrs/Makefile
@@ -12,6 +12,9 @@ DATA = test_custom_rmgrs--1.0.sql
EXTRA_INSTALL = contrib/pg_walinspect
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_basic.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/src/test/modules/test_escape/Makefile b/src/test/modules/test_escape/Makefile
index 786db4cbae4..1e963a7686b 100644
--- a/src/test/modules/test_escape/Makefile
+++ b/src/test/modules/test_escape/Makefile
@@ -12,6 +12,9 @@ PG_LIBS_INTERNAL += -L$(top_builddir)/src/fe_utils -lpgfeutils $(libpq_pgport)
NO_INSTALL = 1
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_test_escape.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/src/test/modules/test_extensions/Makefile b/src/test/modules/test_extensions/Makefile
index a3591bf3d2f..9a99e6ac0d5 100644
--- a/src/test/modules/test_extensions/Makefile
+++ b/src/test/modules/test_extensions/Makefile
@@ -30,6 +30,9 @@ DATA = test_ext1--1.0.sql test_ext2--1.0.sql test_ext3--1.0.sql \
REGRESS = test_extensions test_extdepend
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_extension_control_path.pl
+
# force C locale for output stability
NO_LOCALE = 1
diff --git a/src/test/modules/test_int128/Makefile b/src/test/modules/test_int128/Makefile
index 2e86ee93a9d..2869d532858 100644
--- a/src/test/modules/test_int128/Makefile
+++ b/src/test/modules/test_int128/Makefile
@@ -11,6 +11,9 @@ PG_LIBS_INTERNAL += $(libpq_pgport)
NO_INSTALL = 1
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_test_int128.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/src/test/modules/test_json_parser/Makefile b/src/test/modules/test_json_parser/Makefile
index af3f19424ed..66bd4e5ba64 100644
--- a/src/test/modules/test_json_parser/Makefile
+++ b/src/test/modules/test_json_parser/Makefile
@@ -4,6 +4,12 @@ PGAPPICON = win32
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_test_json_parser_incremental.pl \
+ t/002_inline.pl \
+ t/003_test_semantic.pl \
+ t/004_test_parser_perf.pl
+
OBJS = test_json_parser_incremental.o test_json_parser_perf.o $(WIN32RES)
EXTRA_CLEAN = test_json_parser_incremental$(X) test_json_parser_incremental_shlib$(X) test_json_parser_perf$(X)
diff --git a/src/test/modules/test_misc/Makefile b/src/test/modules/test_misc/Makefile
index 399b9094a38..09bc6bed7a1 100644
--- a/src/test/modules/test_misc/Makefile
+++ b/src/test/modules/test_misc/Makefile
@@ -2,6 +2,16 @@
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_constraint_validation.pl \
+ t/002_tablespace.pl \
+ t/003_check_guc.pl \
+ t/004_io_direct.pl \
+ t/005_timeouts.pl \
+ t/006_signal_autovacuum.pl \
+ t/007_catcache_inval.pl \
+ t/008_replslot_single_user.pl
+
EXTRA_INSTALL=src/test/modules/injection_points \
contrib/test_decoding
diff --git a/src/test/modules/test_pg_dump/Makefile b/src/test/modules/test_pg_dump/Makefile
index 6123b994f60..67707c65865 100644
--- a/src/test/modules/test_pg_dump/Makefile
+++ b/src/test/modules/test_pg_dump/Makefile
@@ -9,6 +9,9 @@ DATA = test_pg_dump--1.0.sql
REGRESS = test_pg_dump
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_base.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/src/test/modules/test_slru/Makefile b/src/test/modules/test_slru/Makefile
index fe4e7390437..b405424ced3 100644
--- a/src/test/modules/test_slru/Makefile
+++ b/src/test/modules/test_slru/Makefile
@@ -11,6 +11,9 @@ EXTRA_INSTALL=src/test/modules/injection_points
export enable_injection_points
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_multixact.pl
+
EXTENSION = test_slru
DATA = test_slru--1.0.sql
diff --git a/src/test/modules/worker_spi/Makefile b/src/test/modules/worker_spi/Makefile
index 024b34cdbb3..30f7437ca02 100644
--- a/src/test/modules/worker_spi/Makefile
+++ b/src/test/modules/worker_spi/Makefile
@@ -8,6 +8,9 @@ PGFILEDESC = "worker_spi - background worker example"
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_worker_spi.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/src/test/modules/xid_wraparound/Makefile b/src/test/modules/xid_wraparound/Makefile
index 7a6e0f66762..7e009deeac4 100644
--- a/src/test/modules/xid_wraparound/Makefile
+++ b/src/test/modules/xid_wraparound/Makefile
@@ -11,6 +11,11 @@ DATA = xid_wraparound--1.0.sql
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_emergency_vacuum.pl \
+ t/002_limits.pl \
+ t/003_wraparounds.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/src/test/postmaster/Makefile b/src/test/postmaster/Makefile
index e06b81f8c47..08c185e832e 100644
--- a/src/test/postmaster/Makefile
+++ b/src/test/postmaster/Makefile
@@ -13,6 +13,11 @@ subdir = src/test/postmaster
top_builddir = ../../..
include $(top_builddir)/src/Makefile.global
+TAP_TESTS = \
+ t/001_basic.pl \
+ t/002_connection_limits.pl \
+ t/003_start_stop.pl
+
check:
$(prove_check)
diff --git a/src/test/recovery/Makefile b/src/test/recovery/Makefile
index f6e4bc8d1a7..c7902a0e246 100644
--- a/src/test/recovery/Makefile
+++ b/src/test/recovery/Makefile
@@ -24,6 +24,55 @@ export enable_injection_points
REGRESS_SHLIB=$(abs_top_builddir)/src/test/regress/regress$(DLSUFFIX)
export REGRESS_SHLIB
+TAP_TESTS = \
+ t/001_stream_rep.pl \
+ t/002_archiving.pl \
+ t/003_recovery_targets.pl \
+ t/004_timeline_switch.pl \
+ t/005_replay_delay.pl \
+ t/006_logical_decoding.pl \
+ t/007_sync_rep.pl \
+ t/008_fsm_truncation.pl \
+ t/009_twophase.pl \
+ t/010_logical_decoding_timelines.pl \
+ t/012_subtransactions.pl \
+ t/013_crash_restart.pl \
+ t/014_unlogged_reinit.pl \
+ t/015_promotion_pages.pl \
+ t/016_min_consistency.pl \
+ t/017_shm.pl \
+ t/018_wal_optimize.pl \
+ t/019_replslot_limit.pl \
+ t/020_archive_status.pl \
+ t/021_row_visibility.pl \
+ t/022_crash_temp_files.pl \
+ t/023_pitr_prepared_xact.pl \
+ t/024_archive_recovery.pl \
+ t/025_stuck_on_old_timeline.pl \
+ t/026_overwrite_contrecord.pl \
+ t/027_stream_regress.pl \
+ t/028_pitr_timelines.pl \
+ t/029_stats_restart.pl \
+ t/030_stats_cleanup_replica.pl \
+ t/031_recovery_conflict.pl \
+ t/032_relfilenode_reuse.pl \
+ t/033_replay_tsp_drops.pl \
+ t/034_create_database.pl \
+ t/035_standby_logical_decoding.pl \
+ t/036_truncated_dropped.pl \
+ t/037_invalid_database.pl \
+ t/038_save_logical_slots_shutdown.pl \
+ t/039_end_of_wal.pl \
+ t/040_standby_failover_slots_sync.pl \
+ t/041_checkpoint_at_promote.pl \
+ t/042_low_level_backup.pl \
+ t/043_no_contrecord_switch.pl \
+ t/044_invalidate_inactive_slots.pl \
+ t/045_archive_restartpoint.pl \
+ t/046_checkpoint_logical_slot.pl \
+ t/047_checkpoint_physical_slot.pl \
+ t/048_vacuum_horizon_floor.pl
+
check:
$(prove_check)
diff --git a/src/test/ssl/Makefile b/src/test/ssl/Makefile
index e8a1639db2d..ea7a332e733 100644
--- a/src/test/ssl/Makefile
+++ b/src/test/ssl/Makefile
@@ -27,6 +27,11 @@ clean distclean:
rm -rf tmp_check
$(MAKE) -f $(srcdir)/sslfiles.mk $@
+TAP_TESTS = \
+ t/001_ssltests.pl \
+ t/002_scram.pl \
+ t/003_sslinfo.pl
+
# Doesn't depend on sslfiles because we don't rebuild them by default
check:
$(prove_check)
diff --git a/src/test/subscription/Makefile b/src/test/subscription/Makefile
index 50b65d8f6ea..eadbe131056 100644
--- a/src/test/subscription/Makefile
+++ b/src/test/subscription/Makefile
@@ -17,6 +17,44 @@ EXTRA_INSTALL = contrib/hstore
export with_icu
+TAP_TESTS = \
+ t/001_rep_changes.pl \
+ t/002_types.pl \
+ t/003_constraints.pl \
+ t/004_sync.pl \
+ t/005_encoding.pl \
+ t/006_rewrite.pl \
+ t/007_ddl.pl \
+ t/008_diff_schema.pl \
+ t/009_matviews.pl \
+ t/010_truncate.pl \
+ t/011_generated.pl \
+ t/012_collation.pl \
+ t/013_partition.pl \
+ t/014_binary.pl \
+ t/015_stream.pl \
+ t/016_stream_subxact.pl \
+ t/017_stream_ddl.pl \
+ t/018_stream_subxact_abort.pl \
+ t/019_stream_subxact_ddl_abort.pl \
+ t/020_messages.pl \
+ t/021_twophase.pl \
+ t/022_twophase_cascade.pl \
+ t/023_twophase_stream.pl \
+ t/024_add_drop_pub.pl \
+ t/025_rep_changes_for_schema.pl \
+ t/026_stats.pl \
+ t/027_nosuperuser.pl \
+ t/028_row_filter.pl \
+ t/029_on_error.pl \
+ t/030_origin.pl \
+ t/031_column_list.pl \
+ t/032_subscribe_use_index.pl \
+ t/033_run_as_table_owner.pl \
+ t/034_temporal.pl \
+ t/035_conflicts.pl \
+ t/100_bugs.pl
+
check:
$(prove_check)
diff --git a/src/tools/pg_bsd_indent/Makefile b/src/tools/pg_bsd_indent/Makefile
index 1d6aa76df94..11fcd7b3a4e 100644
--- a/src/tools/pg_bsd_indent/Makefile
+++ b/src/tools/pg_bsd_indent/Makefile
@@ -45,6 +45,9 @@ clean distclean:
rm -f pg_bsd_indent$(X) $(OBJS)
rm -rf log/ tmp_check/
+TAP_TESTS = \
+ t/001_pg_bsd_indent.pl
+
check: pg_bsd_indent
$(prove_check)
base-commit: c13070a27b63d9ce4850d88a63bf889a6fde26f0
--
2.51.0
I agree that this difference between meson and autotools builds is kind of problematic.
On 23 Aug 2025, at 11:09, Peter Eisentraut <peter@eisentraut.org> wrote:
The obvious solution is to also require the makefiles to list TAP files explicitly, which is what I'm proposing here.
What is the downside of the approach where meson uses t/*.pl wildcard?
Best regards, Andrey Borodin.
Hi,
On 2025-08-23 11:57:37 +0500, Andrey Borodin wrote:
I agree that this difference between meson and autotools builds is kind of problematic.
On 23 Aug 2025, at 11:09, Peter Eisentraut <peter@eisentraut.org> wrote:
The obvious solution is to also require the makefiles to list TAP files explicitly, which is what I'm proposing here.
What is the downside of the approach where meson uses t/*.pl wildcard?
In meson you can't do wildcards at "configure" time, since wildcards do not
allow reliable detection of when re-configure is needed. You could do it by
running prove to run the tap tests, like make does, but that would
considerably slow down the tests, as prove has either no parallelism or
independent parallelism from the make's (or ninjas).
Greetings,
Andres Freund
Andres Freund <andres@anarazel.de> writes:
On 2025-08-23 11:57:37 +0500, Andrey Borodin wrote:
What is the downside of the approach where meson uses t/*.pl wildcard?
In meson you can't do wildcards at "configure" time, since wildcards do not
allow reliable detection of when re-configure is needed.
But ... what "re-configuration" is needed when adding a new test file?
This proposed fix adds more manual maintenance effort, and I really
doubt that it will do much to solve the ostensible problem that
people forget to update the meson.build files. We should be striving
to make the meson system as easy to use as autoconf/make, not trying
to attain parity by making the latter experience worse.
regards, tom lane
Hi,
On 2025-08-23 10:17:59 -0400, Tom Lane wrote:
Andres Freund <andres@anarazel.de> writes:
On 2025-08-23 11:57:37 +0500, Andrey Borodin wrote:
What is the downside of the approach where meson uses t/*.pl wildcard?
In meson you can't do wildcards at "configure" time, since wildcards do not
allow reliable detection of when re-configure is needed.But ... what "re-configuration" is needed when adding a new test file?
In meson, not autoconf/make. The test runner doesn't parse the meson.build
files, that's done once when running configure. After that there's a table of
tests that need to be run that gets used when you type ninja/meson test.
We should be striving to make the meson system as easy to use as
autoconf/make, not trying to attain parity by making the latter experience
worse.
FWIW, I find the autoconf/make test run experience completely unusable. It
literally is made me embark on getting away from it. I don't understand how
people stand it.
Greetings,
Andres Freund
On 2025-08-23 Sa 10:38 AM, Andres Freund wrote:
Hi,
On 2025-08-23 10:17:59 -0400, Tom Lane wrote:
We should be striving to make the meson system as easy to use as
autoconf/make, not trying to attain parity by making the latter experience
worse.FWIW, I find the autoconf/make test run experience completely unusable. It
literally is made me embark on getting away from it. I don't understand how
people stand it.
Honestly, they both have annoyances and points where it's easy to get
into the weeds. There are definitely cases where meson has left me
scratching my head.
But I think this is really analogous to adding a new object file. That
needs to be added to the Makefile as well as the meson.build file, and I
don't see why tests shouldn't work the same. That might be slightly
annoying, but it would be way down on my list.
cheers
andrew
--
Andrew Dunstan
EDB: https://www.enterprisedb.com
Andres Freund <andres@anarazel.de> writes:
FWIW, I find the autoconf/make test run experience completely unusable. It
literally is made me embark on getting away from it. I don't understand how
people stand it.
Interesting perspective, because from where I sit the testing aspect
is the weakest part of our meson setup: it seems to be very much
all-or-nothing, whereas the makefiles allow you to run any particular
test suite you want. Maybe this is just a lack of documentation?
There is still not a word in
https://www.postgresql.org/docs/devel/regress-run.html
about how to accomplish any of those effects under meson.
I find the lack of any equivalent to installcheck to be
particularly distressing, since it means you can't repeat
a test without paying for "make temp-install" every time.
Admittedly that doesn't work for a test that needs particular
non-default installation settings, but that's a minority
of our tests.
regards, tom lane
Hi,
On 2025-08-23 12:11:51 -0400, Tom Lane wrote:
Andres Freund <andres@anarazel.de> writes:
FWIW, I find the autoconf/make test run experience completely unusable. It
literally is made me embark on getting away from it. I don't understand how
people stand it.Interesting perspective, because from where I sit the testing aspect
is the weakest part of our meson setup: it seems to be very much
all-or-nothing, whereas the makefiles allow you to run any particular
test suite you want.
Meson definitely allows to run just some of the test. You can list all tests
with
meson test --list
And you can run testsuites (like all the recovery tests) with
meson test --suite recovery
or individual tests with
meson test test_misc/003_check_guc
Maybe this is just a lack of documentation?
Yea. Partially because that's generic information about meson (i.e. not
postgres specific stuff) and partially because there were some doc patches
that we ended up not finding agreement upon approach-wise.
I find the lack of any equivalent to installcheck to be
particularly distressing, since it means you can't repeat
a test without paying for "make temp-install" every time.
If you just want to skip the install (reusing the prior install), you can do
that with
meson test --no-suite setup
That's basically the equivalent of NO_TEMP_INSTALL (which isn't documented
either :( )
Admittedly that doesn't work for a test that needs particular
non-default installation settings, but that's a minority
of our tests.
You can run all tests against a running postgres by doing
meson test --setup running
Unless somebody else volunteers (please!), I guess I should write up a
patch...
Greetings,
Andres Freund
On 2025-Aug-25, Andres Freund wrote:
Unless somebody else volunteers (please!), I guess I should write up a
patch...
Maybe it doesn't have to be a patch -- we have some info on command
lines to use for testing at
https://wiki.postgresql.org/wiki/Meson#Test_related_commands
which can perhaps be updated and filled in with additional content.
There may be other outdated things in that page, which perhaps should be
updated. For instance, I would rip out the entire "Why and What"
section, which feels no longer relevant.
I'm a bit short of time at present, but in a few weeks I can give this a
look. I'm happy if somebody else does it though.
--
Álvaro Herrera 48°01'N 7°57'E — https://www.EnterpriseDB.com/
Si no sabes adonde vas, es muy probable que acabes en otra parte.
On 23.08.25 08:09, Peter Eisentraut wrote:
meson.build files have to list TAP test files explicitly. Makefiles
have been relying on a t/*.pl wildcard. As a consequence, it is
traditional now that many developers who are primarily using make forget
to add any new TAP test files to the respective meson.build file.The obvious solution is to also require the makefiles to list TAP files
explicitly, which is what I'm proposing here.To list the test files, I'm re-using the make variable TAP_TESTS that is
already in use by extensions. Extensions up to now would just write
something likeTAP_TESTS = 1
Starting with this patch, they would have to write
TAP_TESTS = t/001_foo.pl t/002_bar.pl
This makes it somewhat backward compatible. (For example, with the
latter formulation, PG<=18 would still read it as enabling TAP tests,
but it would ignore the actual file list.)(I have considered other variants: We already have the make variable
PROVE_TESTS that you can use to override the list of tests from the make
command line. But if you use that one to list the tests in an extension
makefile, then that extension would have to use both PROVE_TESTS and
TAP_TESTS (to enable TAP tests overall), which seems pretty confusing. I
think the solution I ended up with is compact and intuitive.)In the attached patch, I have arranged it so that the interesting
changes are in the first three files, the rest is just mechanical.
In the meantime, here is a new version to adapt to the addition of TAP
tests for libpq-oauth.
Attachments:
v2-0001-List-TAP-test-files-in-makefiles.patchtext/plain; charset=UTF-8; name=v2-0001-List-TAP-test-files-in-makefiles.patchDownload
From 0022de1d097d4dd27bc3c549d177a332327185a8 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
Date: Mon, 1 Sep 2025 07:02:20 +0200
Subject: [PATCH v2] List TAP test files in makefiles
meson.build files have to list TAP test files explicitly. Makefiles
have been relying on a t/*.pl wildcard. As a consequence many
developers that are primarily using make forget to add any new TAP
test files to the respective meson.build file.
To prevent this, this now also requires that makefiles list TAP test
files explicitly. For this, we use the existing make variable
TAP_TESTS.
Discussion: https://www.postgresql.org/message-id/flat/2cdd6c8b-9631-4ba4-b051-eec1168ac960@eisentraut.org
---
doc/src/sgml/extend.sgml | 14 ++++--
src/Makefile.global.in | 15 ++++--
src/makefiles/pgxs.mk | 2 +-
contrib/amcheck/Makefile | 8 +++
contrib/auto_explain/Makefile | 3 ++
contrib/basebackup_to_shell/Makefile | 3 ++
contrib/bloom/Makefile | 3 ++
contrib/dblink/Makefile | 3 ++
contrib/oid2name/Makefile | 3 ++
contrib/pg_prewarm/Makefile | 3 ++
contrib/pg_stat_statements/Makefile | 3 ++
contrib/pg_visibility/Makefile | 4 ++
contrib/postgres_fdw/Makefile | 3 ++
contrib/sepgsql/Makefile | 3 ++
contrib/test_decoding/Makefile | 3 ++
contrib/vacuumlo/Makefile | 3 ++
src/bin/initdb/Makefile | 3 ++
src/bin/pg_amcheck/Makefile | 7 +++
src/bin/pg_archivecleanup/Makefile | 3 ++
src/bin/pg_basebackup/Makefile | 7 +++
src/bin/pg_checksums/Makefile | 4 ++
src/bin/pg_combinebackup/Makefile | 12 +++++
src/bin/pg_config/Makefile | 3 ++
src/bin/pg_controldata/Makefile | 3 ++
src/bin/pg_ctl/Makefile | 6 +++
src/bin/pg_dump/Makefile | 8 +++
src/bin/pg_resetwal/Makefile | 4 ++
src/bin/pg_rewind/Makefile | 12 +++++
src/bin/pg_test_fsync/Makefile | 3 ++
src/bin/pg_test_timing/Makefile | 3 ++
src/bin/pg_upgrade/Makefile | 8 +++
src/bin/pg_verifybackup/Makefile | 12 +++++
src/bin/pg_waldump/Makefile | 4 ++
src/bin/pg_walsummary/Makefile | 4 ++
src/bin/pgbench/Makefile | 4 ++
src/bin/psql/Makefile | 5 ++
src/bin/scripts/Makefile | 15 ++++++
src/interfaces/ecpg/preproc/Makefile | 4 ++
src/interfaces/libpq-oauth/Makefile | 3 ++
src/interfaces/libpq/Makefile | 8 +++
src/test/authentication/Makefile | 9 ++++
src/test/icu/Makefile | 3 ++
src/test/kerberos/Makefile | 3 ++
src/test/ldap/Makefile | 5 ++
src/test/modules/brin/Makefile | 4 ++
src/test/modules/commit_ts/Makefile | 6 +++
src/test/modules/injection_points/Makefile | 3 ++
src/test/modules/ldap_password_func/Makefile | 3 ++
src/test/modules/libpq_pipeline/Makefile | 3 ++
src/test/modules/oauth_validator/Makefile | 4 ++
.../modules/ssl_passphrase_callback/Makefile | 3 ++
src/test/modules/test_aio/Makefile | 4 ++
src/test/modules/test_custom_rmgrs/Makefile | 3 ++
src/test/modules/test_escape/Makefile | 3 ++
src/test/modules/test_extensions/Makefile | 3 ++
src/test/modules/test_int128/Makefile | 3 ++
src/test/modules/test_json_parser/Makefile | 6 +++
src/test/modules/test_misc/Makefile | 10 ++++
src/test/modules/test_pg_dump/Makefile | 3 ++
src/test/modules/test_slru/Makefile | 3 ++
src/test/modules/worker_spi/Makefile | 3 ++
src/test/modules/xid_wraparound/Makefile | 5 ++
src/test/postmaster/Makefile | 5 ++
src/test/recovery/Makefile | 49 +++++++++++++++++++
src/test/ssl/Makefile | 5 ++
src/test/subscription/Makefile | 38 ++++++++++++++
src/tools/pg_bsd_indent/Makefile | 3 ++
67 files changed, 405 insertions(+), 8 deletions(-)
diff --git a/doc/src/sgml/extend.sgml b/doc/src/sgml/extend.sgml
index 63c5ec6d1eb..bce242fc6d6 100644
--- a/doc/src/sgml/extend.sgml
+++ b/doc/src/sgml/extend.sgml
@@ -1696,7 +1696,7 @@ <title>Extension Building Infrastructure</title>
<term><varname>TAP_TESTS</varname></term>
<listitem>
<para>
- switch defining if TAP tests need to be run, see below
+ list of TAP test files, see below
</para>
</listitem>
</varlistentry>
@@ -1910,9 +1910,15 @@ <title>Extension Building Infrastructure</title>
</para>
<para>
- <literal>TAP_TESTS</literal> enables the use of TAP tests. Data from each
- run is present in a subdirectory named <literal>tmp_check/</literal>.
- See also <xref linkend="regress-tap"/> for more details.
+ <varname>TAP_TESTS</varname> lists TAP test files to run. (In PostgreSQL
+ releases 18 and older, <varname>TAP_TESTS</varname> was effectively a
+ Boolean variable: If it was set, all TAP tests files that could be found
+ were included automatically. But now, all test files must be listed
+ explicitly. This is backward compatible: If the variable contains a list
+ of TAP test files, older releases will enable TAP tests and include all
+ files.) Data from each run is present in a subdirectory named
+ <literal>tmp_check/</literal>. See also <xref linkend="regress-tap"/> for
+ more details.
</para>
<tip>
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index 8b1b357beaa..ae985336bab 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -460,6 +460,15 @@ PROVE_FLAGS =
ifeq ($(enable_tap_tests),yes)
+# TAP_TESTS is documented for use by PGXS extensions. PROVE_TESTS is
+# documented for override from the make command line. This way, both
+# can be accommodated and backward compatibility is maintained.
+PROVE_TESTS = $(TAP_TESTS)
+
+# Note that prove without non-option arguments applies its own
+# wildcard search. To prevent that, we have to pass something to make
+# it fail if our makefile didn't define any test files.
+
ifndef PGXS
define prove_installcheck
echo "# +++ tap install-check in $(subdir) +++" && \
@@ -472,7 +481,7 @@ cd $(srcdir) && \
PGPORT='6$(DEF_PGPORT)' top_builddir='$(CURDIR)/$(top_builddir)' \
PG_REGRESS='$(CURDIR)/$(top_builddir)/src/test/regress/pg_regress' \
share_contrib_dir='$(DESTDIR)$(datadir)/$(datamoduledir)' \
- $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) $(if $(PROVE_TESTS),$(PROVE_TESTS),t/*.pl)
+ $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) $(if $(PROVE_TESTS),$(PROVE_TESTS),--)
endef
else # PGXS case
define prove_installcheck
@@ -485,7 +494,7 @@ cd $(srcdir) && \
PATH="$(bindir):$(CURDIR):$$PATH" \
PGPORT='6$(DEF_PGPORT)' \
PG_REGRESS='$(top_builddir)/src/test/regress/pg_regress' \
- $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) $(if $(PROVE_TESTS),$(PROVE_TESTS),t/*.pl)
+ $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) $(if $(PROVE_TESTS),$(PROVE_TESTS),--)
endef
endif # PGXS
@@ -500,7 +509,7 @@ cd $(srcdir) && \
PGPORT='6$(DEF_PGPORT)' top_builddir='$(CURDIR)/$(top_builddir)' \
PG_REGRESS='$(CURDIR)/$(top_builddir)/src/test/regress/pg_regress' \
share_contrib_dir='$(abs_top_builddir)/tmp_install$(datadir)/$(datamoduledir)' \
- $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) $(if $(PROVE_TESTS),$(PROVE_TESTS),t/*.pl)
+ $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) $(if $(PROVE_TESTS),$(PROVE_TESTS),--)
endef
else
diff --git a/src/makefiles/pgxs.mk b/src/makefiles/pgxs.mk
index 039cee3dfe5..5e97e5971ce 100644
--- a/src/makefiles/pgxs.mk
+++ b/src/makefiles/pgxs.mk
@@ -46,7 +46,7 @@
# HEADERS_built_$(MODULE) -- as above but built first (also NOT cleaned)
# REGRESS -- list of regression test cases (without suffix)
# REGRESS_OPTS -- additional switches to pass to pg_regress
-# TAP_TESTS -- switch to enable TAP tests
+# TAP_TESTS -- list of TAP test files
# ISOLATION -- list of isolation test cases
# ISOLATION_OPTS -- additional switches to pass to pg_isolation_regress
# NO_INSTALL -- don't define an install target, useful for test modules
diff --git a/contrib/amcheck/Makefile b/contrib/amcheck/Makefile
index 1b7a63cbaa4..dcd87f60609 100644
--- a/contrib/amcheck/Makefile
+++ b/contrib/amcheck/Makefile
@@ -18,6 +18,14 @@ REGRESS = check check_btree check_gin check_heap
EXTRA_INSTALL = contrib/pg_walinspect
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_verify_heapam.pl \
+ t/002_cic.pl \
+ t/003_cic_2pc.pl \
+ t/004_verify_nbtree_unique.pl \
+ t/005_pitr.pl \
+ t/006_verify_gin.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/contrib/auto_explain/Makefile b/contrib/auto_explain/Makefile
index 94ab28e7c06..48f8a1b3113 100644
--- a/contrib/auto_explain/Makefile
+++ b/contrib/auto_explain/Makefile
@@ -10,6 +10,9 @@ REGRESS = alter_reset
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_auto_explain.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/contrib/basebackup_to_shell/Makefile b/contrib/basebackup_to_shell/Makefile
index 58bd26991ae..9dedfa4c802 100644
--- a/contrib/basebackup_to_shell/Makefile
+++ b/contrib/basebackup_to_shell/Makefile
@@ -9,6 +9,9 @@ PGFILEDESC = "basebackup_to_shell - target basebackup to shell command"
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_basic.pl
+
export GZIP_PROGRAM=$(GZIP)
export TAR
diff --git a/contrib/bloom/Makefile b/contrib/bloom/Makefile
index 8a781e43889..7c0cdfe6808 100644
--- a/contrib/bloom/Makefile
+++ b/contrib/bloom/Makefile
@@ -18,6 +18,9 @@ REGRESS = bloom
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_wal.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/contrib/dblink/Makefile b/contrib/dblink/Makefile
index fde0b49ddbb..46bcabe4bca 100644
--- a/contrib/dblink/Makefile
+++ b/contrib/dblink/Makefile
@@ -15,6 +15,9 @@ REGRESS = dblink
REGRESS_OPTS = --dlpath=$(top_builddir)/src/test/regress
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_auth_scram.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/contrib/oid2name/Makefile b/contrib/oid2name/Makefile
index 6179ed594cf..20841fd15c1 100644
--- a/contrib/oid2name/Makefile
+++ b/contrib/oid2name/Makefile
@@ -10,6 +10,9 @@ OBJS = \
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_basic.pl
+
PG_CPPFLAGS = -I$(libpq_srcdir)
PG_LIBS_INTERNAL = $(libpq_pgport)
diff --git a/contrib/pg_prewarm/Makefile b/contrib/pg_prewarm/Makefile
index 617ac8e09b2..0faf3d08ccf 100644
--- a/contrib/pg_prewarm/Makefile
+++ b/contrib/pg_prewarm/Makefile
@@ -14,6 +14,9 @@ REGRESS = pg_prewarm
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_basic.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/contrib/pg_stat_statements/Makefile b/contrib/pg_stat_statements/Makefile
index fe0478ac552..f8be03bd52f 100644
--- a/contrib/pg_stat_statements/Makefile
+++ b/contrib/pg_stat_statements/Makefile
@@ -28,6 +28,9 @@ NO_INSTALLCHECK = 1
TAP_TESTS = 1
+TAP_TESTS = \
+ t/010_restart.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/contrib/pg_visibility/Makefile b/contrib/pg_visibility/Makefile
index d3cb411cc90..82f58b5f7ff 100644
--- a/contrib/pg_visibility/Makefile
+++ b/contrib/pg_visibility/Makefile
@@ -13,6 +13,10 @@ PGFILEDESC = "pg_visibility - page visibility information"
REGRESS = pg_visibility
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_concurrent_transaction.pl \
+ t/002_corrupt_vm.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/contrib/postgres_fdw/Makefile b/contrib/postgres_fdw/Makefile
index adfbd2ef758..1fc3b87a35f 100644
--- a/contrib/postgres_fdw/Makefile
+++ b/contrib/postgres_fdw/Makefile
@@ -19,6 +19,9 @@ DATA = postgres_fdw--1.0.sql postgres_fdw--1.0--1.1.sql postgres_fdw--1.1--1.2.s
REGRESS = postgres_fdw query_cancel
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_auth_scram.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/contrib/sepgsql/Makefile b/contrib/sepgsql/Makefile
index 90b4585a9e2..372fe568e4d 100644
--- a/contrib/sepgsql/Makefile
+++ b/contrib/sepgsql/Makefile
@@ -17,6 +17,9 @@ PGFILEDESC = "sepgsql - SELinux integration"
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_sepgsql.pl
+
# Note: because we don't tell the Makefile there are any regression tests,
# we have to clean those result files explicitly
EXTRA_CLEAN = -r $(pg_regress_clean_files) tmp/ *.pp sepgsql-regtest.if sepgsql-regtest.fc
diff --git a/contrib/test_decoding/Makefile b/contrib/test_decoding/Makefile
index 02e961f4d31..2dd192843ba 100644
--- a/contrib/test_decoding/Makefile
+++ b/contrib/test_decoding/Makefile
@@ -20,6 +20,9 @@ NO_INSTALLCHECK = 1
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_repl_stats.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/contrib/vacuumlo/Makefile b/contrib/vacuumlo/Makefile
index 6bc7b34f08d..758963f273a 100644
--- a/contrib/vacuumlo/Makefile
+++ b/contrib/vacuumlo/Makefile
@@ -10,6 +10,9 @@ OBJS = \
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_basic.pl
+
PG_CPPFLAGS = -I$(libpq_srcdir)
PG_LIBS_INTERNAL = $(libpq_pgport)
diff --git a/src/bin/initdb/Makefile b/src/bin/initdb/Makefile
index c0470efda92..1a69ff86257 100644
--- a/src/bin/initdb/Makefile
+++ b/src/bin/initdb/Makefile
@@ -63,6 +63,9 @@ initdb.o: initdb.c $(top_builddir)/src/Makefile.global
export with_icu
+TAP_TESTS = \
+ t/001_initdb.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_amcheck/Makefile b/src/bin/pg_amcheck/Makefile
index fa6071f97c1..84df4fa47df 100644
--- a/src/bin/pg_amcheck/Makefile
+++ b/src/bin/pg_amcheck/Makefile
@@ -44,6 +44,13 @@ clean distclean:
rm -f pg_amcheck$(X) $(OBJS)
rm -rf tmp_check
+TAP_TESTS = \
+ t/001_basic.pl \
+ t/002_nonesuch.pl \
+ t/003_check.pl \
+ t/004_verify_heapam.pl \
+ t/005_opclass_damage.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_archivecleanup/Makefile b/src/bin/pg_archivecleanup/Makefile
index 93fd703f225..0453add2047 100644
--- a/src/bin/pg_archivecleanup/Makefile
+++ b/src/bin/pg_archivecleanup/Makefile
@@ -29,6 +29,9 @@ clean distclean:
rm -f pg_archivecleanup$(X) $(OBJS)
rm -rf tmp_check
+TAP_TESTS = \
+ t/010_pg_archivecleanup.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_basebackup/Makefile b/src/bin/pg_basebackup/Makefile
index a9557c0789f..641a0a2292a 100644
--- a/src/bin/pg_basebackup/Makefile
+++ b/src/bin/pg_basebackup/Makefile
@@ -74,6 +74,13 @@ clean distclean:
$(OBJS)
rm -rf tmp_check
+TAP_TESTS = \
+ t/010_pg_basebackup.pl \
+ t/011_in_place_tablespace.pl \
+ t/020_pg_receivewal.pl \
+ t/030_pg_recvlogical.pl \
+ t/040_pg_createsubscriber.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_checksums/Makefile b/src/bin/pg_checksums/Makefile
index a7f6d9c7c5c..ed8fa8b86be 100644
--- a/src/bin/pg_checksums/Makefile
+++ b/src/bin/pg_checksums/Makefile
@@ -40,6 +40,10 @@ clean distclean:
rm -f pg_checksums$(X) $(OBJS)
rm -rf tmp_check
+TAP_TESTS = \
+ t/001_basic.pl \
+ t/002_actions.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_combinebackup/Makefile b/src/bin/pg_combinebackup/Makefile
index 33a1f4483bf..6e6875ad3ac 100644
--- a/src/bin/pg_combinebackup/Makefile
+++ b/src/bin/pg_combinebackup/Makefile
@@ -46,6 +46,18 @@ clean distclean maintainer-clean:
rm -f pg_combinebackup$(X) $(OBJS)
rm -rf tmp_check
+TAP_TESTS = \
+ t/001_basic.pl \
+ t/002_compare_backups.pl \
+ t/003_timeline.pl \
+ t/004_manifest.pl \
+ t/005_integrity.pl \
+ t/006_db_file_copy.pl \
+ t/007_wal_level_minimal.pl \
+ t/008_promote.pl \
+ t/009_no_full_file.pl \
+ t/010_hardlink.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_config/Makefile b/src/bin/pg_config/Makefile
index 38169b0ded5..22287769122 100644
--- a/src/bin/pg_config/Makefile
+++ b/src/bin/pg_config/Makefile
@@ -37,6 +37,9 @@ clean distclean:
rm -f pg_config$(X) $(OBJS)
rm -rf tmp_check
+TAP_TESTS = \
+ t/001_pg_config.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_controldata/Makefile b/src/bin/pg_controldata/Makefile
index 029370afb13..f48eab0ad41 100644
--- a/src/bin/pg_controldata/Makefile
+++ b/src/bin/pg_controldata/Makefile
@@ -37,6 +37,9 @@ clean distclean:
rm -f pg_controldata$(X) $(OBJS)
rm -rf tmp_check
+TAP_TESTS = \
+ t/001_pg_controldata.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_ctl/Makefile b/src/bin/pg_ctl/Makefile
index 1c4bb324714..f345e1391e9 100644
--- a/src/bin/pg_ctl/Makefile
+++ b/src/bin/pg_ctl/Makefile
@@ -46,6 +46,12 @@ clean distclean:
rm -f pg_ctl$(X) $(OBJS)
rm -rf tmp_check
+TAP_TESTS = \
+ t/001_start_stop.pl \
+ t/002_status.pl \
+ t/003_promote.pl \
+ t/004_logrotate.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_dump/Makefile b/src/bin/pg_dump/Makefile
index fa795883e9f..93010aa8632 100644
--- a/src/bin/pg_dump/Makefile
+++ b/src/bin/pg_dump/Makefile
@@ -62,6 +62,14 @@ install: all installdirs
installdirs:
$(MKDIR_P) '$(DESTDIR)$(bindir)'
+TAP_TESTS = \
+ t/001_basic.pl \
+ t/002_pg_dump.pl \
+ t/003_pg_dump_with_server.pl \
+ t/004_pg_dump_parallel.pl \
+ t/005_pg_dump_filterfile.pl \
+ t/010_dump_connstr.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_resetwal/Makefile b/src/bin/pg_resetwal/Makefile
index 82bea06dee5..3c3b8909ce1 100644
--- a/src/bin/pg_resetwal/Makefile
+++ b/src/bin/pg_resetwal/Makefile
@@ -39,6 +39,10 @@ clean distclean:
rm -f pg_resetwal$(X) $(OBJS)
rm -rf tmp_check
+TAP_TESTS = \
+ t/001_basic.pl \
+ t/002_corrupted.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_rewind/Makefile b/src/bin/pg_rewind/Makefile
index cbd000b686d..e352de9bd88 100644
--- a/src/bin/pg_rewind/Makefile
+++ b/src/bin/pg_rewind/Makefile
@@ -53,6 +53,18 @@ clean distclean:
rm -f pg_rewind$(X) $(OBJS) xlogreader.c
rm -rf tmp_check
+TAP_TESTS = \
+ t/001_basic.pl \
+ t/002_databases.pl \
+ t/003_extrafiles.pl \
+ t/004_pg_xlog_symlink.pl \
+ t/005_same_timeline.pl \
+ t/006_options.pl \
+ t/007_standby_source.pl \
+ t/008_min_recovery_point.pl \
+ t/009_growing_files.pl \
+ t/010_keep_recycled_wals.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_test_fsync/Makefile b/src/bin/pg_test_fsync/Makefile
index 4c5e5181250..5101ec3d5cb 100644
--- a/src/bin/pg_test_fsync/Makefile
+++ b/src/bin/pg_test_fsync/Makefile
@@ -22,6 +22,9 @@ install: all installdirs
installdirs:
$(MKDIR_P) '$(DESTDIR)$(bindir)'
+TAP_TESTS = \
+ t/001_basic.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_test_timing/Makefile b/src/bin/pg_test_timing/Makefile
index 7f677edadb3..d73e174f9ec 100644
--- a/src/bin/pg_test_timing/Makefile
+++ b/src/bin/pg_test_timing/Makefile
@@ -22,6 +22,9 @@ install: all installdirs
installdirs:
$(MKDIR_P) '$(DESTDIR)$(bindir)'
+TAP_TESTS = \
+ t/001_basic.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_upgrade/Makefile b/src/bin/pg_upgrade/Makefile
index f83d2b5d309..5bd7f294118 100644
--- a/src/bin/pg_upgrade/Makefile
+++ b/src/bin/pg_upgrade/Makefile
@@ -57,6 +57,14 @@ clean distclean:
export with_icu
+TAP_TESTS = \
+ t/001_basic.pl \
+ t/002_pg_upgrade.pl \
+ t/003_logical_slots.pl \
+ t/004_subscription.pl \
+ t/005_char_signedness.pl \
+ t/006_transfer_modes.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_verifybackup/Makefile b/src/bin/pg_verifybackup/Makefile
index 374d4a8afd1..5e12f71da48 100644
--- a/src/bin/pg_verifybackup/Makefile
+++ b/src/bin/pg_verifybackup/Makefile
@@ -43,6 +43,18 @@ clean distclean:
rm -f pg_verifybackup$(X) $(OBJS)
rm -rf tmp_check
+TAP_TESTS = \
+ t/001_basic.pl \
+ t/002_algorithm.pl \
+ t/003_corruption.pl \
+ t/004_options.pl \
+ t/005_bad_manifest.pl \
+ t/006_encoding.pl \
+ t/007_wal.pl \
+ t/008_untar.pl \
+ t/009_extract.pl \
+ t/010_client_untar.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_waldump/Makefile b/src/bin/pg_waldump/Makefile
index 4c1ee649501..730e49039bb 100644
--- a/src/bin/pg_waldump/Makefile
+++ b/src/bin/pg_waldump/Makefile
@@ -49,6 +49,10 @@ clean distclean:
rm -f pg_waldump$(X) $(OBJS) $(RMGRDESCSOURCES) xlogreader.c xlogstats.c
rm -rf tmp_check
+TAP_TESTS = \
+ t/001_basic.pl \
+ t/002_save_fullpage.pl
+
check:
$(prove_check)
diff --git a/src/bin/pg_walsummary/Makefile b/src/bin/pg_walsummary/Makefile
index 1bc620572d2..34dd6655999 100644
--- a/src/bin/pg_walsummary/Makefile
+++ b/src/bin/pg_walsummary/Makefile
@@ -42,6 +42,10 @@ clean distclean maintainer-clean:
rm -f pg_walsummary$(X) $(OBJS)
rm -rf tmp_check
+TAP_TESTS = \
+ t/001_basic.pl \
+ t/002_blocks.pl
+
check:
$(prove_check)
diff --git a/src/bin/pgbench/Makefile b/src/bin/pgbench/Makefile
index 987bf64df9d..37d3c39dba0 100644
--- a/src/bin/pgbench/Makefile
+++ b/src/bin/pgbench/Makefile
@@ -52,6 +52,10 @@ clean distclean:
rm -rf tmp_check
rm -f exprparse.h exprparse.c exprscan.c
+TAP_TESTS = \
+ t/001_pgbench_with_server.pl \
+ t/002_pgbench_no_server.pl
+
check:
$(prove_check)
diff --git a/src/bin/psql/Makefile b/src/bin/psql/Makefile
index 5b1545d9948..89bd6d71f3e 100644
--- a/src/bin/psql/Makefile
+++ b/src/bin/psql/Makefile
@@ -79,6 +79,11 @@ clean distclean:
rm -rf tmp_check
rm -f sql_help.h sql_help.c psqlscanslash.c tab-complete.c
+TAP_TESTS = \
+ t/001_basic.pl \
+ t/010_tab_completion.pl \
+ t/020_cancel.pl
+
check:
$(prove_check)
diff --git a/src/bin/scripts/Makefile b/src/bin/scripts/Makefile
index f6b4d40810b..c917371691b 100644
--- a/src/bin/scripts/Makefile
+++ b/src/bin/scripts/Makefile
@@ -55,6 +55,21 @@ clean distclean:
export with_icu
+TAP_TESTS = \
+ t/010_clusterdb.pl \
+ t/011_clusterdb_all.pl \
+ t/020_createdb.pl \
+ t/040_createuser.pl \
+ t/050_dropdb.pl \
+ t/070_dropuser.pl \
+ t/080_pg_isready.pl \
+ t/090_reindexdb.pl \
+ t/091_reindexdb_all.pl \
+ t/100_vacuumdb.pl \
+ t/101_vacuumdb_all.pl \
+ t/102_vacuumdb_stages.pl \
+ t/200_connstr.pl
+
check:
$(prove_check)
diff --git a/src/interfaces/ecpg/preproc/Makefile b/src/interfaces/ecpg/preproc/Makefile
index f2ac8850479..3ece4249c4a 100644
--- a/src/interfaces/ecpg/preproc/Makefile
+++ b/src/interfaces/ecpg/preproc/Makefile
@@ -81,6 +81,10 @@ ecpg_keywords.o: ecpg_kwlist_d.h
c_keywords.o: c_kwlist_d.h
keywords.o: $(top_srcdir)/src/include/parser/kwlist.h
+TAP_TESTS = \
+ t/001_ecpg_err_warn_msg.pl \
+ t/002_ecpg_err_warn_msg_informix.pl
+
check:
$(prove_check)
diff --git a/src/interfaces/libpq-oauth/Makefile b/src/interfaces/libpq-oauth/Makefile
index 51145f085a8..055463773fb 100644
--- a/src/interfaces/libpq-oauth/Makefile
+++ b/src/interfaces/libpq-oauth/Makefile
@@ -94,6 +94,9 @@ install: all installdirs $(stlib) $(shlib)
installdirs:
$(MKDIR_P) '$(DESTDIR)$(libdir)'
+TAP_TESTS = \
+ t/001_oauth.pl
+
check: all-tests
$(prove_check)
diff --git a/src/interfaces/libpq/Makefile b/src/interfaces/libpq/Makefile
index da6650066d4..936e23e1dad 100644
--- a/src/interfaces/libpq/Makefile
+++ b/src/interfaces/libpq/Makefile
@@ -176,6 +176,14 @@ test-build:
check installcheck: export PATH := $(CURDIR)/test:$(PATH)
+TAP_TESTS = \
+ t/001_uri.pl \
+ t/002_api.pl \
+ t/003_load_balance_host_list.pl \
+ t/004_load_balance_dns.pl \
+ t/005_negotiate_encryption.pl \
+ t/006_service.pl
+
check: test-build all
$(prove_check)
diff --git a/src/test/authentication/Makefile b/src/test/authentication/Makefile
index 8b5beced080..887ab3d2af5 100644
--- a/src/test/authentication/Makefile
+++ b/src/test/authentication/Makefile
@@ -17,6 +17,15 @@ EXTRA_INSTALL = src/test/modules/injection_points
export enable_injection_points
+TAP_TESTS = \
+ t/001_password.pl \
+ t/002_saslprep.pl \
+ t/003_peer.pl \
+ t/004_file_inclusion.pl \
+ t/005_sspi.pl \
+ t/006_login_trigger.pl \
+ t/007_pre_auth.pl
+
check:
$(prove_check)
diff --git a/src/test/icu/Makefile b/src/test/icu/Makefile
index 5383c0b3001..11c2414fe2b 100644
--- a/src/test/icu/Makefile
+++ b/src/test/icu/Makefile
@@ -15,6 +15,9 @@ include $(top_builddir)/src/Makefile.global
export with_icu
+TAP_TESTS = \
+ t/010_database.pl
+
check:
$(prove_check)
diff --git a/src/test/kerberos/Makefile b/src/test/kerberos/Makefile
index ddaa6deaa67..67390e3ba6d 100644
--- a/src/test/kerberos/Makefile
+++ b/src/test/kerberos/Makefile
@@ -18,6 +18,9 @@ EXTRA_INSTALL += contrib/dblink
export with_gssapi with_krb_srvnam
+TAP_TESTS = \
+ t/001_auth.pl
+
check:
$(prove_check)
diff --git a/src/test/ldap/Makefile b/src/test/ldap/Makefile
index e852069d7fb..8916ad4790a 100644
--- a/src/test/ldap/Makefile
+++ b/src/test/ldap/Makefile
@@ -15,6 +15,11 @@ include $(top_builddir)/src/Makefile.global
export with_ldap
+TAP_TESTS = \
+ t/001_auth.pl \
+ t/002_bindpasswd.pl \
+ t/003_ldap_connection_param_lookup.pl
+
check:
$(prove_check)
diff --git a/src/test/modules/brin/Makefile b/src/test/modules/brin/Makefile
index e74af891ce7..e36eba2d704 100644
--- a/src/test/modules/brin/Makefile
+++ b/src/test/modules/brin/Makefile
@@ -5,6 +5,10 @@ EXTRA_INSTALL = contrib/pageinspect contrib/pg_walinspect
ISOLATION = summarization-and-inprogress-insertion
TAP_TESTS = 1
+TAP_TESTS = \
+ t/01_workitems.pl \
+ t/02_wal_consistency.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/src/test/modules/commit_ts/Makefile b/src/test/modules/commit_ts/Makefile
index 113bcfa210b..cf8667e6b42 100644
--- a/src/test/modules/commit_ts/Makefile
+++ b/src/test/modules/commit_ts/Makefile
@@ -8,6 +8,12 @@ NO_INSTALLCHECK = 1
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_base.pl \
+ t/002_standby.pl \
+ t/003_standby_2.pl \
+ t/004_restart.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/src/test/modules/injection_points/Makefile b/src/test/modules/injection_points/Makefile
index fc82cd67f6c..a80531d0b5e 100644
--- a/src/test/modules/injection_points/Makefile
+++ b/src/test/modules/injection_points/Makefile
@@ -18,6 +18,9 @@ ISOLATION = basic inplace syscache-update-pruned
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_stats.pl
+
# The injection points are cluster-wide, so disable installcheck
NO_INSTALLCHECK = 1
diff --git a/src/test/modules/ldap_password_func/Makefile b/src/test/modules/ldap_password_func/Makefile
index bb080135454..e482bb1593d 100644
--- a/src/test/modules/ldap_password_func/Makefile
+++ b/src/test/modules/ldap_password_func/Makefile
@@ -10,6 +10,9 @@ PGFILEDESC = "set hook to mutate ldapbindpasswd"
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_mutated_bindpasswd.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/src/test/modules/libpq_pipeline/Makefile b/src/test/modules/libpq_pipeline/Makefile
index 65acc3e997e..40337b1f094 100644
--- a/src/test/modules/libpq_pipeline/Makefile
+++ b/src/test/modules/libpq_pipeline/Makefile
@@ -13,6 +13,9 @@ PG_LIBS_INTERNAL += $(libpq_pgport)
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_libpq_pipeline.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/src/test/modules/oauth_validator/Makefile b/src/test/modules/oauth_validator/Makefile
index 05b9f06ed73..baa49c9764f 100644
--- a/src/test/modules/oauth_validator/Makefile
+++ b/src/test/modules/oauth_validator/Makefile
@@ -23,6 +23,10 @@ NO_INSTALLCHECK = 1
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_server.pl \
+ t/002_client.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/src/test/modules/ssl_passphrase_callback/Makefile b/src/test/modules/ssl_passphrase_callback/Makefile
index 7f977dbabf0..7e0e8096f5b 100644
--- a/src/test/modules/ssl_passphrase_callback/Makefile
+++ b/src/test/modules/ssl_passphrase_callback/Makefile
@@ -8,6 +8,9 @@ PGFILEDESC = "callback function to provide a passphrase"
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_testfunc.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/src/test/modules/test_aio/Makefile b/src/test/modules/test_aio/Makefile
index f53cc64671a..5dfb821f366 100644
--- a/src/test/modules/test_aio/Makefile
+++ b/src/test/modules/test_aio/Makefile
@@ -12,6 +12,10 @@ DATA = test_aio--1.0.sql
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_aio.pl \
+ t/002_io_workers.pl
+
export enable_injection_points
ifdef USE_PGXS
diff --git a/src/test/modules/test_custom_rmgrs/Makefile b/src/test/modules/test_custom_rmgrs/Makefile
index b557e5888eb..9c0295cea99 100644
--- a/src/test/modules/test_custom_rmgrs/Makefile
+++ b/src/test/modules/test_custom_rmgrs/Makefile
@@ -12,6 +12,9 @@ DATA = test_custom_rmgrs--1.0.sql
EXTRA_INSTALL = contrib/pg_walinspect
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_basic.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/src/test/modules/test_escape/Makefile b/src/test/modules/test_escape/Makefile
index 786db4cbae4..1e963a7686b 100644
--- a/src/test/modules/test_escape/Makefile
+++ b/src/test/modules/test_escape/Makefile
@@ -12,6 +12,9 @@ PG_LIBS_INTERNAL += -L$(top_builddir)/src/fe_utils -lpgfeutils $(libpq_pgport)
NO_INSTALL = 1
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_test_escape.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/src/test/modules/test_extensions/Makefile b/src/test/modules/test_extensions/Makefile
index a3591bf3d2f..9a99e6ac0d5 100644
--- a/src/test/modules/test_extensions/Makefile
+++ b/src/test/modules/test_extensions/Makefile
@@ -30,6 +30,9 @@ DATA = test_ext1--1.0.sql test_ext2--1.0.sql test_ext3--1.0.sql \
REGRESS = test_extensions test_extdepend
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_extension_control_path.pl
+
# force C locale for output stability
NO_LOCALE = 1
diff --git a/src/test/modules/test_int128/Makefile b/src/test/modules/test_int128/Makefile
index 2e86ee93a9d..2869d532858 100644
--- a/src/test/modules/test_int128/Makefile
+++ b/src/test/modules/test_int128/Makefile
@@ -11,6 +11,9 @@ PG_LIBS_INTERNAL += $(libpq_pgport)
NO_INSTALL = 1
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_test_int128.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/src/test/modules/test_json_parser/Makefile b/src/test/modules/test_json_parser/Makefile
index af3f19424ed..66bd4e5ba64 100644
--- a/src/test/modules/test_json_parser/Makefile
+++ b/src/test/modules/test_json_parser/Makefile
@@ -4,6 +4,12 @@ PGAPPICON = win32
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_test_json_parser_incremental.pl \
+ t/002_inline.pl \
+ t/003_test_semantic.pl \
+ t/004_test_parser_perf.pl
+
OBJS = test_json_parser_incremental.o test_json_parser_perf.o $(WIN32RES)
EXTRA_CLEAN = test_json_parser_incremental$(X) test_json_parser_incremental_shlib$(X) test_json_parser_perf$(X)
diff --git a/src/test/modules/test_misc/Makefile b/src/test/modules/test_misc/Makefile
index 399b9094a38..09bc6bed7a1 100644
--- a/src/test/modules/test_misc/Makefile
+++ b/src/test/modules/test_misc/Makefile
@@ -2,6 +2,16 @@
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_constraint_validation.pl \
+ t/002_tablespace.pl \
+ t/003_check_guc.pl \
+ t/004_io_direct.pl \
+ t/005_timeouts.pl \
+ t/006_signal_autovacuum.pl \
+ t/007_catcache_inval.pl \
+ t/008_replslot_single_user.pl
+
EXTRA_INSTALL=src/test/modules/injection_points \
contrib/test_decoding
diff --git a/src/test/modules/test_pg_dump/Makefile b/src/test/modules/test_pg_dump/Makefile
index 6123b994f60..67707c65865 100644
--- a/src/test/modules/test_pg_dump/Makefile
+++ b/src/test/modules/test_pg_dump/Makefile
@@ -9,6 +9,9 @@ DATA = test_pg_dump--1.0.sql
REGRESS = test_pg_dump
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_base.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/src/test/modules/test_slru/Makefile b/src/test/modules/test_slru/Makefile
index fe4e7390437..b405424ced3 100644
--- a/src/test/modules/test_slru/Makefile
+++ b/src/test/modules/test_slru/Makefile
@@ -11,6 +11,9 @@ EXTRA_INSTALL=src/test/modules/injection_points
export enable_injection_points
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_multixact.pl
+
EXTENSION = test_slru
DATA = test_slru--1.0.sql
diff --git a/src/test/modules/worker_spi/Makefile b/src/test/modules/worker_spi/Makefile
index 024b34cdbb3..30f7437ca02 100644
--- a/src/test/modules/worker_spi/Makefile
+++ b/src/test/modules/worker_spi/Makefile
@@ -8,6 +8,9 @@ PGFILEDESC = "worker_spi - background worker example"
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_worker_spi.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/src/test/modules/xid_wraparound/Makefile b/src/test/modules/xid_wraparound/Makefile
index 7a6e0f66762..7e009deeac4 100644
--- a/src/test/modules/xid_wraparound/Makefile
+++ b/src/test/modules/xid_wraparound/Makefile
@@ -11,6 +11,11 @@ DATA = xid_wraparound--1.0.sql
TAP_TESTS = 1
+TAP_TESTS = \
+ t/001_emergency_vacuum.pl \
+ t/002_limits.pl \
+ t/003_wraparounds.pl
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/src/test/postmaster/Makefile b/src/test/postmaster/Makefile
index e06b81f8c47..08c185e832e 100644
--- a/src/test/postmaster/Makefile
+++ b/src/test/postmaster/Makefile
@@ -13,6 +13,11 @@ subdir = src/test/postmaster
top_builddir = ../../..
include $(top_builddir)/src/Makefile.global
+TAP_TESTS = \
+ t/001_basic.pl \
+ t/002_connection_limits.pl \
+ t/003_start_stop.pl
+
check:
$(prove_check)
diff --git a/src/test/recovery/Makefile b/src/test/recovery/Makefile
index f6e4bc8d1a7..c7902a0e246 100644
--- a/src/test/recovery/Makefile
+++ b/src/test/recovery/Makefile
@@ -24,6 +24,55 @@ export enable_injection_points
REGRESS_SHLIB=$(abs_top_builddir)/src/test/regress/regress$(DLSUFFIX)
export REGRESS_SHLIB
+TAP_TESTS = \
+ t/001_stream_rep.pl \
+ t/002_archiving.pl \
+ t/003_recovery_targets.pl \
+ t/004_timeline_switch.pl \
+ t/005_replay_delay.pl \
+ t/006_logical_decoding.pl \
+ t/007_sync_rep.pl \
+ t/008_fsm_truncation.pl \
+ t/009_twophase.pl \
+ t/010_logical_decoding_timelines.pl \
+ t/012_subtransactions.pl \
+ t/013_crash_restart.pl \
+ t/014_unlogged_reinit.pl \
+ t/015_promotion_pages.pl \
+ t/016_min_consistency.pl \
+ t/017_shm.pl \
+ t/018_wal_optimize.pl \
+ t/019_replslot_limit.pl \
+ t/020_archive_status.pl \
+ t/021_row_visibility.pl \
+ t/022_crash_temp_files.pl \
+ t/023_pitr_prepared_xact.pl \
+ t/024_archive_recovery.pl \
+ t/025_stuck_on_old_timeline.pl \
+ t/026_overwrite_contrecord.pl \
+ t/027_stream_regress.pl \
+ t/028_pitr_timelines.pl \
+ t/029_stats_restart.pl \
+ t/030_stats_cleanup_replica.pl \
+ t/031_recovery_conflict.pl \
+ t/032_relfilenode_reuse.pl \
+ t/033_replay_tsp_drops.pl \
+ t/034_create_database.pl \
+ t/035_standby_logical_decoding.pl \
+ t/036_truncated_dropped.pl \
+ t/037_invalid_database.pl \
+ t/038_save_logical_slots_shutdown.pl \
+ t/039_end_of_wal.pl \
+ t/040_standby_failover_slots_sync.pl \
+ t/041_checkpoint_at_promote.pl \
+ t/042_low_level_backup.pl \
+ t/043_no_contrecord_switch.pl \
+ t/044_invalidate_inactive_slots.pl \
+ t/045_archive_restartpoint.pl \
+ t/046_checkpoint_logical_slot.pl \
+ t/047_checkpoint_physical_slot.pl \
+ t/048_vacuum_horizon_floor.pl
+
check:
$(prove_check)
diff --git a/src/test/ssl/Makefile b/src/test/ssl/Makefile
index e8a1639db2d..ea7a332e733 100644
--- a/src/test/ssl/Makefile
+++ b/src/test/ssl/Makefile
@@ -27,6 +27,11 @@ clean distclean:
rm -rf tmp_check
$(MAKE) -f $(srcdir)/sslfiles.mk $@
+TAP_TESTS = \
+ t/001_ssltests.pl \
+ t/002_scram.pl \
+ t/003_sslinfo.pl
+
# Doesn't depend on sslfiles because we don't rebuild them by default
check:
$(prove_check)
diff --git a/src/test/subscription/Makefile b/src/test/subscription/Makefile
index 50b65d8f6ea..eadbe131056 100644
--- a/src/test/subscription/Makefile
+++ b/src/test/subscription/Makefile
@@ -17,6 +17,44 @@ EXTRA_INSTALL = contrib/hstore
export with_icu
+TAP_TESTS = \
+ t/001_rep_changes.pl \
+ t/002_types.pl \
+ t/003_constraints.pl \
+ t/004_sync.pl \
+ t/005_encoding.pl \
+ t/006_rewrite.pl \
+ t/007_ddl.pl \
+ t/008_diff_schema.pl \
+ t/009_matviews.pl \
+ t/010_truncate.pl \
+ t/011_generated.pl \
+ t/012_collation.pl \
+ t/013_partition.pl \
+ t/014_binary.pl \
+ t/015_stream.pl \
+ t/016_stream_subxact.pl \
+ t/017_stream_ddl.pl \
+ t/018_stream_subxact_abort.pl \
+ t/019_stream_subxact_ddl_abort.pl \
+ t/020_messages.pl \
+ t/021_twophase.pl \
+ t/022_twophase_cascade.pl \
+ t/023_twophase_stream.pl \
+ t/024_add_drop_pub.pl \
+ t/025_rep_changes_for_schema.pl \
+ t/026_stats.pl \
+ t/027_nosuperuser.pl \
+ t/028_row_filter.pl \
+ t/029_on_error.pl \
+ t/030_origin.pl \
+ t/031_column_list.pl \
+ t/032_subscribe_use_index.pl \
+ t/033_run_as_table_owner.pl \
+ t/034_temporal.pl \
+ t/035_conflicts.pl \
+ t/100_bugs.pl
+
check:
$(prove_check)
diff --git a/src/tools/pg_bsd_indent/Makefile b/src/tools/pg_bsd_indent/Makefile
index 1d6aa76df94..11fcd7b3a4e 100644
--- a/src/tools/pg_bsd_indent/Makefile
+++ b/src/tools/pg_bsd_indent/Makefile
@@ -45,6 +45,9 @@ clean distclean:
rm -f pg_bsd_indent$(X) $(OBJS)
rm -rf log/ tmp_check/
+TAP_TESTS = \
+ t/001_pg_bsd_indent.pl
+
check: pg_bsd_indent
$(prove_check)
base-commit: 36aed19fd99021ad9f727e4fd4bceb086a7cf54d
--
2.51.0
On Sat, Aug 23, 2025 at 10:17:59AM -0400, Tom Lane wrote:
This proposed fix adds more manual maintenance effort, and I really
doubt that it will do much to solve the ostensible problem that
people forget to update the meson.build files.
This was my reaction, too. I suspect folks will update either Makefile or
meson.build based on what they use and then still forget to update the
other one.
--
nathan
On Fri, Oct 24, 2025 at 10:49:53AM -0500, Nathan Bossart wrote:
On Sat, Aug 23, 2025 at 10:17:59AM -0400, Tom Lane wrote:
This proposed fix adds more manual maintenance effort, and I really
doubt that it will do much to solve the ostensible problem that
people forget to update the meson.build files.This was my reaction, too. I suspect folks will update either Makefile or
meson.build based on what they use and then still forget to update the
other one.
This is not a problem limited to committers: it is a worse an issue
for patch authors and reviewers. I've seen it again literally three
days ago, where a test was missing from meson, and the CI reported
green without testing the patch in most environments where we use only
meson, aka Windows.
IMO, we should tackle this problem the other way around: what would it
take to have meson build a list of the TAP files in t/ based on an
automated rule when tests.tap is defined?
Another less invasive solution for the code tree would be to have
meson cross-check that the list of files it defines matches with
what's on disk. With the drop of Makefiles and ./configure at some
point in mind, I am not convinced that the t/*.pl rule needs to
change, but meson could be made more reliable by making sure that
what's listed matches with what we have in the source tree. That
would prevent a lot of mistakes.
--
Michael
On 2025-Oct-28, Michael Paquier wrote:
IMO, we should tackle this problem the other way around: what would it
take to have meson build a list of the TAP files in t/ based on an
automated rule when tests.tap is defined?
Maybe what we need is a single source of truth that is used both by
Makefiles and meson: say, a file named "testlist" which contains lines
like
regress = foo bar baz
tap = t/001_foo.pl t/002_bar.pl
(possibly with backslash-escaped newlines) and so on, which is processed
by each build system in the way that it needs. This way, whichever
system is used by a developer, either the test will run because they
changed this one file, or it won't.
I don't know how much scaffolding is needed to make this work, but I
don't think it would be too bad.
IIRC Andres has complained about the Makefiles using t/*.pl to determine
the tests to run. This would also solve that problem.
--
Álvaro Herrera PostgreSQL Developer — https://www.EnterpriseDB.com/
"I suspect most samba developers are already technically insane...
Of course, since many of them are Australians, you can't tell." (L. Torvalds)
Hi,
On Tue, 28 Oct 2025 at 07:19, Michael Paquier <michael@paquier.xyz> wrote:
Another less invasive solution for the code tree would be to have
meson cross-check that the list of files it defines matches with
what's on disk. With the drop of Makefiles and ./configure at some
point in mind, I am not convinced that the t/*.pl rule needs to
change, but meson could be made more reliable by making sure that
what's listed matches with what we have in the source tree. That
would prevent a lot of mistakes.
I tried to implement this but it didn't quite work, please see details below.
I introduced a new test, meson_tap_test_check, in the meson build
system. This test runs first in the test suite and compares two file
sets:
1- Files on disk matching the t/*.pl wildcard.
2- The output of "meson introspect ${pg_root_dir} --tests" filtered
with the same t/*.pl wildcard.
The test subtracts the second list from the first and fails if there
is any difference.
However, this approach didn’t work because some tests are not
registered if their dependencies (or such) aren’t found. For example,
'001_sepgsql.pl' test isn't registered if the 'selinux' dependency is
missing and that causes a difference between #1 and #2. Given that, I
think it would be better if we register all tests and skip those whose
dependencies aren’t found, rather than not registering them when the
dependency isn’t found.
The attached patch shows what I implemented.
--
Regards,
Nazir Bilal Yavuz
Microsoft
Attachments:
Ensure-all-TAP-tests-are-registered-in-the-Meson-.patchtext/x-patch; charset=UTF-8; name=Ensure-all-TAP-tests-are-registered-in-the-Meson-.patchDownload
From be5155a54032581aee973b66a681a22c03dd7ff8 Mon Sep 17 00:00:00 2001
From: Nazir Bilal Yavuz <byavuz81@gmail.com>
Date: Fri, 31 Oct 2025 14:40:47 +0300
Subject: [PATCH v1] Ensure all TAP tests are registered in the Meson build
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Introduce a new script `src/tools/meson_tap_test_check` that verifies
all TAP tests under the source tree are properly registered in the
Meson build system. This helps prevent missing test registrations
caused by Meson’s lack of wildcard support at configure time.
---
meson.build | 12 ++++++++
src/tools/meson_tap_test_check | 51 ++++++++++++++++++++++++++++++++++
2 files changed, 63 insertions(+)
create mode 100755 src/tools/meson_tap_test_check
diff --git a/meson.build b/meson.build
index 0f61ff6a700..28277634331 100644
--- a/meson.build
+++ b/meson.build
@@ -3542,6 +3542,18 @@ test('install_test_files',
is_parallel: false,
suite: ['setup'])
+meson_tap_test_check = files('src/tools/meson_tap_test_check')
+test('meson_tap_test_check',
+ python,
+ args: [
+ meson_tap_test_check,
+ '--rootdir', meson.current_source_dir()
+ ],
+ # Since this test checks if all of the TAP tests are registered, run this
+ # test before setup tests.
+ priority: setup_tests_priority + 1,
+ suite: ['setup'])
+
test_result_dir = meson.project_build_root() / 'testrun'
diff --git a/src/tools/meson_tap_test_check b/src/tools/meson_tap_test_check
new file mode 100755
index 00000000000..5a4cd5e4e52
--- /dev/null
+++ b/src/tools/meson_tap_test_check
@@ -0,0 +1,51 @@
+#!/usr/bin/env python3
+
+# In meson build, wildcards can't be used at "configure" time; since wildcards
+# do not allow reliable detection of when re-configure is needed. This script
+# checks if meson build misses any TAP tests, if there is then test fails.
+
+import argparse
+import subprocess
+import os
+import sys
+import glob
+import json
+
+parser = argparse.ArgumentParser()
+
+parser.add_argument('--rootdir', help='root directory of Postgres', type=str)
+args = parser.parse_args()
+root_dir = args.rootdir
+
+if not os.path.isdir(root_dir):
+ print(f"Error: directory '{root_dir}' not found", file=sys.stderr)
+ sys.exit(1)
+
+def get_test_files(root_dir):
+ test_files = []
+
+ test_files_temp = glob.glob(os.path.join(root_dir, "**", "t", "*.pl"), recursive=True)
+ for f in test_files_temp:
+ test_files.append(f)
+ return test_files
+
+def get_meson_tests():
+ res = subprocess.run(['meson', 'introspect', '.', '--tests'], stdout=subprocess.PIPE, text=True)
+ if res.returncode != 0:
+ sys.exit(res.returncode)
+
+ tap_tests = []
+ json_data = json.loads(res.stdout)
+ for elem in json_data:
+ if "cmd" in elem and elem["cmd"][-1].endswith(".pl"):
+ tap_tests.append(elem["cmd"][-1])
+
+ return tap_tests
+
+test_files = get_test_files(root_dir)
+meson_tests = get_meson_tests()
+test_diff = list(set(test_files) - set(meson_tests))
+
+if len(test_diff):
+ print(f"Following TAP tests are not registered in the meson build: {test_diff}")
+ sys.exit(1)
--
2.51.0
On 01.09.25 07:09, Peter Eisentraut wrote:
On 23.08.25 08:09, Peter Eisentraut wrote:
meson.build files have to list TAP test files explicitly. Makefiles
have been relying on a t/*.pl wildcard. As a consequence, it is
traditional now that many developers who are primarily using make
forget to add any new TAP test files to the respective meson.build file.The obvious solution is to also require the makefiles to list TAP
files explicitly, which is what I'm proposing here.To list the test files, I'm re-using the make variable TAP_TESTS that
is already in use by extensions. Extensions up to now would just
write something likeTAP_TESTS = 1
Starting with this patch, they would have to write
TAP_TESTS = t/001_foo.pl t/002_bar.pl
This makes it somewhat backward compatible. (For example, with the
latter formulation, PG<=18 would still read it as enabling TAP tests,
but it would ignore the actual file list.)(I have considered other variants: We already have the make variable
PROVE_TESTS that you can use to override the list of tests from the
make command line. But if you use that one to list the tests in an
extension makefile, then that extension would have to use both
PROVE_TESTS and TAP_TESTS (to enable TAP tests overall), which seems
pretty confusing. I think the solution I ended up with is compact and
intuitive.)In the attached patch, I have arranged it so that the interesting
changes are in the first three files, the rest is just mechanical.In the meantime, here is a new version to adapt to the addition of TAP
tests for libpq-oauth.
It looks like there is no consensus to go into this direction, and none
of the discussed alternatives are taking on a concrete shape, so I'm
withdrawing this patch.