On 11/1/21 21:23, Michael Paquier wrote:
> On Mon, Nov 01, 2021 at 11:33:21AM -0400, Andrew Dunstan wrote:
>> As I mentioned recently at
>> <https://postgr.es/m/[email protected]>,
>> I want to get USE_MODULE_DB working for vcregress.pl. I started out
>> writing code to strip this from the command line or get it from the
>> environment, but then it struck me that if would be better to implement
>> a general Makefile-like mechanism for handling FOO=bar type arguments on
>> the command line, along the lines of the attached.
> I am not sure to understand how that will that work with USE_MODULE_DB
> which sets up the database names used by the regression tests. Each
> target's module has its own needs in terms of settings that can be
> used, meaning that you would still need some boilerplate to do the
> mapping between a variable and its command argument?
I think you misunderstood the purpose of my email. It wasn't meant to
be complete patch.
But here's an untested patch that should do almost all of what I want
for USE_MODULE_DB.
cheers
andrew
--
Andrew Dunstan
EDB: https://www.enterprisedb.com
diff --git a/src/tools/msvc/vcregress.pl b/src/tools/msvc/vcregress.pl
index fc826da3ff..840931b210 100644
--- a/src/tools/msvc/vcregress.pl
+++ b/src/tools/msvc/vcregress.pl
@@ -39,6 +39,14 @@ if (-e "src/tools/msvc/buildenv.pl")
do "./src/tools/msvc/buildenv.pl";
}
+my %settings;
+
+while (@ARGV && $ARGV[0] =~ /([A-Za-z]\w*)=(.*)/)
+{
+ $settings{$1}={$2};
+ shift;
+}
+
my $what = shift || "";
if ($what =~
/^(check|installcheck|plcheck|contribcheck|modulescheck|ecpgcheck|isolationcheck|upgradecheck|bincheck|recoverycheck|taptest)$/i
@@ -411,10 +419,12 @@ sub plcheck
print
"============================================================\n";
print "Checking $lang\n";
+ my $dbname = "pl_regression";
+ $dbname = "pl_regression_$lang" if $settings{USE_MODULE_DB};
my @args = (
"$topdir/$Config/pg_regress/pg_regress",
"--bindir=$topdir/$Config/psql",
- "--dbname=pl_regression", @lang_args, @tests);
+ "--dbname=$dbname", @lang_args, @tests);
system(@args);
my $status = $? >> 8;
exit $status if $status;
@@ -692,6 +702,12 @@ sub fetchRegressOpts
{
push @opts, "--no-locale";
}
+ if ($settings{USE_MODULE_DB} && $m =~ /^\s*MODULE(?:S|_big)\s*=\s*(\S+)/m)
+ {
+ my $dbname = $1;
+ $dbname =~ s/plpython.*/plpython/;
+ push @opts, "--dbname=contrib_regression_$dbname";
+ }
return @opts;
}