Hi hackers,

While looking at [1], I did use the pg_regress --use-existing flag that way:

TESTS="test_setup create_index memoize --use-existing" meson test -C 
meson_build --setup running --suite regress-running

and that produced the desired outcome (i.e running those 3 tests from the 
regress
suite on a running instance and existing regression database).

That was kind of a trick and not surprisingly when I wanted to run the entire
regress suite that way:

TESTS="--use-existing" meson test -C meson_build --setup running --suite 
regress-running

things did not work as expected and produced:

1/1 regress-running - postgresql:regress-running/regress        SKIP            
  0.04s

Ok:                0
Fail:              0
Skipped:           1

means it skipped the tests.

OTOH, with autoconf, one could run:

EXTRA_REGRESS_OPTS="--use-existing" make installcheck

and that would work as expected (means running the entire regress suite on an
existing regression database).

So it looks like that currently (unless I missed it), with meson, it is not
possible to run an entire test suite on a running instance and existing 
regression
database.

Indeed, setting the TESTS environment variable replaces the schedule and test
list entirely. This means that passing only pg_regress flags (e.g.,
TESTS="--use-existing") results in no tests being run, since no schedule or test
names are included.

The attached patch adds support for EXTRA_REGRESS_OPTS in testwrap. When set,
its contents are appended to the test command for regress, isolation, and ecpg
test types, matching autoconf behavior.

This enables running the full schedule with extra pg_regress options, like:

EXTRA_REGRESS_OPTS="--use-existing" meson test --setup running --suite 
regress-running

Once we agree on a fix and that fix is pushed, I think it would make sense
to add an example in [2].

[1]: https://postgr.es/m/aekGK/SUIeW5n5fY%40bdtpg
[2]: https://wiki.postgresql.org/wiki/Meson

Regards,

-- 
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com
>From b79068ec0292dcc623431fa1a5c7cee8668b1170 Mon Sep 17 00:00:00 2001
From: Bertrand Drouvot <[email protected]>
Date: Thu, 23 Apr 2026 05:01:13 +0000
Subject: [PATCH v1] testwrap: support EXTRA_REGRESS_OPTS environment variable

With autoconf, EXTRA_REGRESS_OPTS can be used to pass additional flags to
pg_regress, pg_isolation_regress, and pg_regress_ecpg. For example:

EXTRA_REGRESS_OPTS="--use-existing" make installcheck

There was no meson equivalent. The TESTS environment variable could not be
used for this purpose because setting it replaces the schedule entirely,
so passing only flags (e.g., TESTS="--use-existing") resulted in no tests
being run.

Add support for EXTRA_REGRESS_OPTS in testwrap. When set, its contents are
appended to the test command for regress, isolation, and ecpg test types,
matching autoconf behavior.

This enables running the full schedule with extra pg_regress options, like:

EXTRA_REGRESS_OPTS="--use-existing" meson test --setup running --suite regress-running

Author: Bertrand Drouvot <[email protected]>
---
 src/tools/testwrap | 3 +++
 1 file changed, 3 insertions(+)
 100.0% src/tools/

diff --git a/src/tools/testwrap b/src/tools/testwrap
index e91296ecd15..8c44f9bc2d6 100755
--- a/src/tools/testwrap
+++ b/src/tools/testwrap
@@ -61,6 +61,9 @@ else:
     if args.tests:
         args.test_command.extend(args.tests)
 
+if "EXTRA_REGRESS_OPTS" in env_dict and args.testname in ('regress', 'isolation', 'ecpg'):
+    args.test_command += env_dict["EXTRA_REGRESS_OPTS"].split()
+
 sp = subprocess.Popen(args.test_command, env=env_dict, stdout=subprocess.PIPE)
 # Meson categorizes a passing TODO test point as bad
 # (https://github.com/mesonbuild/meson/issues/13183).  Remove the TODO
-- 
2.34.1

Reply via email to