Add new target modulescheck in vcregress.pl

This allows an MSVC build to run regression tests related to modules in
src/test/modules.

Author: Michael Paquier
Reviewed by: Andrew Dunstan
This commit is contained in:
Alvaro Herrera 2015-04-16 23:39:52 -03:00
parent 2e5d52a644
commit 4cb7d671fd
2 changed files with 46 additions and 23 deletions

View File

@ -436,6 +436,7 @@ $ENV{CONFIG}="Debug";
<userinput>vcregress installcheck</userinput> <userinput>vcregress installcheck</userinput>
<userinput>vcregress plcheck</userinput> <userinput>vcregress plcheck</userinput>
<userinput>vcregress contribcheck</userinput> <userinput>vcregress contribcheck</userinput>
<userinput>vcregress modulescheck</userinput>
<userinput>vcregress ecpgcheck</userinput> <userinput>vcregress ecpgcheck</userinput>
<userinput>vcregress isolationcheck</userinput> <userinput>vcregress isolationcheck</userinput>
<userinput>vcregress upgradecheck</userinput> <userinput>vcregress upgradecheck</userinput>

View File

@ -31,7 +31,7 @@ if (-e "src/tools/msvc/buildenv.pl")
my $what = shift || ""; my $what = shift || "";
if ($what =~ if ($what =~
/^(check|installcheck|plcheck|contribcheck|ecpgcheck|isolationcheck|upgradecheck)$/i /^(check|installcheck|plcheck|contribcheck|modulescheck|ecpgcheck|isolationcheck|upgradecheck)$/i
) )
{ {
$what = uc $what; $what = uc $what;
@ -49,7 +49,7 @@ copy("$Config/autoinc/autoinc.dll", "src/test/regress");
copy("$Config/regress/regress.dll", "src/test/regress"); copy("$Config/regress/regress.dll", "src/test/regress");
copy("$Config/dummy_seclabel/dummy_seclabel.dll", "src/test/regress"); copy("$Config/dummy_seclabel/dummy_seclabel.dll", "src/test/regress");
$ENV{PATH} = "../../../$Config/libpq;../../$Config/libpq;$ENV{PATH}"; $ENV{PATH} = "$topdir/$Config/libpq;$topdir/$Config/libpq;$ENV{PATH}";
my $schedule = shift; my $schedule = shift;
unless ($schedule) unless ($schedule)
@ -76,6 +76,7 @@ my %command = (
INSTALLCHECK => \&installcheck, INSTALLCHECK => \&installcheck,
ECPGCHECK => \&ecpgcheck, ECPGCHECK => \&ecpgcheck,
CONTRIBCHECK => \&contribcheck, CONTRIBCHECK => \&contribcheck,
MODULESCHECK => \&modulescheck,
ISOLATIONCHECK => \&isolationcheck, ISOLATIONCHECK => \&isolationcheck,
UPGRADECHECK => \&upgradecheck,); UPGRADECHECK => \&upgradecheck,);
@ -213,10 +214,39 @@ sub plcheck
chdir "../../.."; chdir "../../..";
} }
sub subdircheck
{
my $subdir = shift;
my $module = shift;
my $mstat = 0;
if ( ! -d "$module/sql" ||
! -d "$module/expected" ||
( ! -f "$module/GNUmakefile" && ! -f "$module/Makefile"))
{
return;
}
chdir $module;
print
"============================================================\n";
print "Checking $module\n";
my @tests = fetchTests();
my @opts = fetchRegressOpts();
my @args = (
"$topdir/$Config/pg_regress/pg_regress",
"--psqldir=$topdir/$Config/psql",
"--dbname=contrib_regression", @opts, @tests);
system(@args);
my $status = $? >> 8;
$mstat ||= $status;
chdir "..";
exit $mstat if $mstat;
}
sub contribcheck sub contribcheck
{ {
chdir "../../../contrib"; chdir "$topdir/contrib";
my $mstat = 0;
foreach my $module (glob("*")) foreach my $module (glob("*"))
{ {
# these configuration-based exclusions must match Install.pm # these configuration-based exclusions must match Install.pm
@ -225,28 +255,20 @@ sub contribcheck
next if ($module eq "xml2" && !defined($config->{xml})); next if ($module eq "xml2" && !defined($config->{xml}));
next if ($module eq "sepgsql"); next if ($module eq "sepgsql");
next subdircheck("$topdir/contrib", $module);
unless -d "$module/sql"
&& -d "$module/expected"
&& (-f "$module/GNUmakefile" || -f "$module/Makefile");
chdir $module;
print
"============================================================\n";
print "Checking $module\n";
my @tests = fetchTests();
my @opts = fetchRegressOpts();
my @args = (
"../../$Config/pg_regress/pg_regress",
"--psqldir=../../$Config/psql",
"--dbname=contrib_regression", @opts, @tests);
system(@args);
my $status = $? >> 8;
$mstat ||= $status;
chdir "..";
} }
exit $mstat if $mstat;
} }
sub modulescheck
{
chdir "$topdir/src/test/modules";
foreach my $module (glob("*"))
{
subdircheck("$topdir/src/test/modules", $module);
}
}
# Run "initdb", then reconfigure authentication. # Run "initdb", then reconfigure authentication.
sub standard_initdb sub standard_initdb
{ {