On 10/20/21 3:09 PM, Andres Freund wrote:
> Hi,
>
> On 2021-10-20 14:30:49 -0400, Andrew Dunstan wrote:
>> On 10/20/21 12:31 PM, Andres Freund wrote:
>>> ISTM that we should just make the "test invocation framework" responsible to
>>> put the relevant directory onto PATH? I.e. Makefile.global should add the
>>> build directory of the test to PATH, and vcregress.pl should put the
>>> relevant
>>> $configuration/$project/ directory there?
>> Like this? That seems reasonable.
> Yea, that's along the lines of what I was thinking...
>
OK, it turns out that it's better to put the addition at the end of the
PATH, otherise initdb complains that it can't find postgres in the same
directory.
This patch has been tested on Linux but not yet on Windows/MSVC,
although I have little doubt it will work there too.
cheers
andrew
--
Andrew Dunstan
EDB: https://www.enterprisedb.com
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index a1da1ea4ee..5ff5c0c1a1 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -438,7 +438,7 @@ ld_library_path_var = LD_LIBRARY_PATH
# need something more here. If not defined then the expansion does
# nothing.
with_temp_install = \
- PATH="$(abs_top_builddir)/tmp_install$(bindir):$$PATH" \
+ PATH="$(abs_top_builddir)/tmp_install$(bindir):$$PATH:$(CURDIR)" \
$(call add_to_path,$(strip $(ld_library_path_var)),$(abs_top_builddir)/tmp_install$(libdir)) \
$(with_temp_install_extra)
@@ -449,8 +449,8 @@ define prove_installcheck
rm -rf '$(CURDIR)'/tmp_check
$(MKDIR_P) '$(CURDIR)'/tmp_check
cd $(srcdir) && \
- TESTDIR='$(CURDIR)' PATH="$(bindir):$$PATH" PGPORT='6$(DEF_PGPORT)' \
- top_builddir='$(CURDIR)/$(top_builddir)' \
+ TESTDIR='$(CURDIR)' PATH="$(bindir):$$PATH:$(CURDIR)" \
+ PGPORT='6$(DEF_PGPORT)' top_builddir='$(CURDIR)/$(top_builddir)' \
PG_REGRESS='$(CURDIR)/$(top_builddir)/src/test/regress/pg_regress' \
$(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) $(if $(PROVE_TESTS),$(PROVE_TESTS),t/*.pl)
endef
@@ -459,8 +459,8 @@ define prove_installcheck
rm -rf '$(CURDIR)'/tmp_check
$(MKDIR_P) '$(CURDIR)'/tmp_check
cd $(srcdir) && \
- TESTDIR='$(CURDIR)' PATH="$(bindir):$$PATH" PGPORT='6$(DEF_PGPORT)' \
- top_builddir='$(top_builddir)' \
+ TESTDIR='$(CURDIR)' PATH="$(bindir):$$PATH:$(CURDIR)" \
+ PGPORT='6$(DEF_PGPORT)' top_builddir='$(top_builddir)' \
PG_REGRESS='$(top_builddir)/src/test/regress/pg_regress' \
$(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) $(if $(PROVE_TESTS),$(PROVE_TESTS),t/*.pl)
endef
diff --git a/src/test/modules/libpq_pipeline/t/001_libpq_pipeline.pl b/src/test/modules/libpq_pipeline/t/001_libpq_pipeline.pl
index 6721edfa71..7f648b19a2 100644
--- a/src/test/modules/libpq_pipeline/t/001_libpq_pipeline.pl
+++ b/src/test/modules/libpq_pipeline/t/001_libpq_pipeline.pl
@@ -14,9 +14,8 @@ $node->init;
$node->start;
my $numrows = 700;
-my $libpq_pipeline = "$ENV{TESTDIR}/libpq_pipeline";
-my ($out, $err) = run_command([ $libpq_pipeline, 'tests' ]);
+my ($out, $err) = run_command([ 'libpq_pipeline', 'tests' ]);
die "oops: $err" unless $err eq '';
my @tests = split(/\s+/, $out);
@@ -39,8 +38,8 @@ for my $testname (@tests)
# Execute the test
$node->command_ok(
[
- $libpq_pipeline, @extraargs,
- $testname, $node->connstr('postgres')
+ 'libpq_pipeline', @extraargs,
+ $testname, $node->connstr('postgres')
],
"libpq_pipeline $testname");
diff --git a/src/tools/msvc/vcregress.pl b/src/tools/msvc/vcregress.pl
index 35e8f67f01..2ed8de4aad 100644
--- a/src/tools/msvc/vcregress.pl
+++ b/src/tools/msvc/vcregress.pl
@@ -248,6 +248,8 @@ sub tap_check
$ENV{REGRESS_SHLIB} = "$topdir/src/test/regress/regress.dll";
$ENV{TESTDIR} = "$dir";
+ my $module = basename $dir;
+ $ENV{PATH} = "$ENV{PATH};$topdir/$Config/$module";
rmtree('tmp_check');
system(@args);