Make test portlock logic work with meson

Previously the portlock logic, added in 9b4eafcaf41, didn't actually work
properly when the tests were run via meson. 9b4eafcaf41 used the
MESON_BUILD_ROOT environment variable to determine the directory for the port
lock directory, but that's never set for running the tests.  That meant that
each test used its own portlock dir, unless the PG_TEST_PORT_DIR environment
variable was set.

Fix the problem by setting top_builddir for the environment. That's also used
for the autoconf/make build.

Backpatch back to 16, where meson support was added.

Reported-by: Zharkov Roman <r.zharkov@postgrespro.ru>
Reviewed-by: Andrew Dunstan <andrew@dunslane.net>
Backpatch-through: 16
This commit is contained in:
Andres Freund 2025-02-21 11:16:57 -05:00
parent 665cafe8a4
commit 32ce58e9e9
2 changed files with 3 additions and 3 deletions

View File

@ -3401,6 +3401,8 @@ test_initdb_template = meson.build_root() / 'tmp_install' / 'initdb-template'
test_env.set('PG_REGRESS', pg_regress.full_path())
test_env.set('REGRESS_SHLIB', regress_module.full_path())
test_env.set('INITDB_TEMPLATE', test_initdb_template)
# for Cluster.pm's portlock logic
test_env.set('top_builddir', meson.build_root())
# Add the temporary installation to the library search path on platforms where
# that works (everything but windows, basically). On windows everything

View File

@ -168,9 +168,7 @@ INIT
$portdir = $ENV{PG_TEST_PORT_DIR};
# Otherwise, try to use a directory at the top of the build tree
# or as a last resort use the tmp_check directory
my $build_dir =
$ENV{MESON_BUILD_ROOT}
|| $ENV{top_builddir}
my $build_dir = $ENV{top_builddir}
|| $PostgreSQL::Test::Utils::tmp_check;
$portdir ||= "$build_dir/portlock";
$portdir =~ s!\\!/!g;