summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dunstan2021-10-22 13:11:52 +0000
committerAndrew Dunstan2021-10-22 13:49:07 +0000
commitf4ce6c4d3a30ec3a12c7f64b90a6fc82887ddd7b (patch)
tree8c1b4b8e9263af041fa4e2d98d68a508e0b227f2
parentb1ce6c284366ce1dae120f5d10dd59e8804322ee (diff)
Add module build directory to the PATH for TAP tests
For non-MSVC builds this is make's $(CURDIR), while for MSVC builds it is $topdir/$Config/$module. The directory is added as the second element in the PATH, so that the install location takes precedence, but the added PATH element takes precedence over the rest of the PATH. The reason for this is to allow tests to find built products that are not installed, such as the libpq_pipeline test driver. The libpq_pipeline test is adjusted to take advantage of this. Based on a suggestion from Andres Freund. Backpatch to release 14. Discussion: https://postgr.es/m/4941f5a5-2d50-1a0e-6701-14c5fefe92d6@dunslane.net
-rw-r--r--src/Makefile.global.in10
-rw-r--r--src/test/modules/libpq_pipeline/t/001_libpq_pipeline.pl7
-rw-r--r--src/tools/msvc/vcregress.pl3
3 files changed, 11 insertions, 9 deletions
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index a1da1ea4eeb..533c12fef95 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):$(CURDIR):$$PATH" \
$(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):$(CURDIR):$$PATH" \
+ 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):$(CURDIR):$$PATH" \
+ 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 6721edfa719..7f648b19a26 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 35e8f67f013..fc826da3ff2 100644
--- a/src/tools/msvc/vcregress.pl
+++ b/src/tools/msvc/vcregress.pl
@@ -248,6 +248,9 @@ sub tap_check
$ENV{REGRESS_SHLIB} = "$topdir/src/test/regress/regress.dll";
$ENV{TESTDIR} = "$dir";
+ my $module = basename $dir;
+ # add the module build dir as the second element in the PATH
+ $ENV{PATH} =~ s!;!;$topdir/$Config/$module;!;
rmtree('tmp_check');
system(@args);