aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2018-11-29 10:31:12 +0900
committerMichael Paquier <michael@paquier.xyz>2018-11-29 10:31:12 +0900
commit431f1599a2b7ba3e42fc06bd5b0ff5735931f556 (patch)
treec1bbad50fb41592f98cc4c9229d30f76f19cc4f6 /src
parent2ac180c2869706fa42b89ef10055a88cc4a7847b (diff)
downloadpostgresql-431f1599a2b7ba3e42fc06bd5b0ff5735931f556.tar.gz
postgresql-431f1599a2b7ba3e42fc06bd5b0ff5735931f556.zip
Add support for NO_INSTALLCHECK in MSVC scripts
When fetching a list of tests for a given extension in contrib/ or src/test/modules/, NO_INSTALLCHECK now gets checked first. If present, an empty list of tests is returned to let the caller know that tests for this module need to be bypassed. This actually fixes a set of issues with MSVC with modules using REGRESS_OPTS, as an incorrect parsing caused the launched command to eat the first test listed. The actual effect on the tree is that several modules listed a single test, so regressions have been running with no actual tests. pg_stat_statements, test_rls_hooks and commit_ts were impacted by that. Some other modules like test_decoding (or snapshot_too_old) don't use yet PGXS rules, but their makefiles will soon be refactored with an upcoming patch. Author: Michael Paquier Reviewed-by: Andrew Dunstan Discussion: https://postgr.es/m/20181126054302.GI1776@paquier.xyz
Diffstat (limited to 'src')
-rw-r--r--src/tools/msvc/vcregress.pl22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/tools/msvc/vcregress.pl b/src/tools/msvc/vcregress.pl
index 599b5210144..4018313bf28 100644
--- a/src/tools/msvc/vcregress.pl
+++ b/src/tools/msvc/vcregress.pl
@@ -361,6 +361,10 @@ sub plcheck
{
@lang_args = ();
}
+
+ # Move on if no tests are listed.
+ next if (scalar @tests == 0);
+
print
"============================================================\n";
print "Checking $lang\n";
@@ -391,6 +395,14 @@ sub subdircheck
chdir $module;
my @tests = fetchTests();
+
+ # Leave if no tests are listed in the module.
+ if (scalar @tests == 0)
+ {
+ chdir "..";
+ return;
+ }
+
my @opts = fetchRegressOpts();
# Special processing for python transform modules, see their respective
@@ -638,6 +650,8 @@ sub fetchRegressOpts
return @opts;
}
+# Fetch the list of tests by parsing a module's Makefile. An empty
+# list is returned if the module does not need to run anything.
sub fetchTests
{
@@ -651,6 +665,14 @@ sub fetchTests
my $t = "";
$m =~ s{\\\r?\n}{}g;
+
+ # A module specifying NO_INSTALLCHECK does not support installcheck,
+ # so bypass its run by returning an empty set of tests.
+ if ($m =~ /^\s*NO_INSTALLCHECK\s*=\s*\S+/m)
+ {
+ return ();
+ }
+
if ($m =~ /^REGRESS\s*=\s*(.*)$/gm)
{
$t = $1;