aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Dunstan <andrew@dunslane.net>2017-05-01 10:12:02 -0400
committerAndrew Dunstan <andrew@dunslane.net>2017-05-01 10:57:51 -0400
commitfed6df486dca1b9e53d3f560031b9a236c99f4bb (patch)
treeabc2f07f48be8a80ec8e59aea565a7b96cc03688 /src
parent9414e41ea703ea5fcc288bcf7dc000e53306896b (diff)
downloadpostgresql-fed6df486dca1b9e53d3f560031b9a236c99f4bb.tar.gz
postgresql-fed6df486dca1b9e53d3f560031b9a236c99f4bb.zip
Allow vcregress.pl to run an arbitrary TAP test set
Currently only provision for running the bin checks in a single step is provided for. Now these tests can be run individually, as well as tests in other locations (e.g. src.test/recover). Also provide for suppressing unnecessary temp installs by setting the NO_TEMP_INSTALL environment variable just as the Makefiles do. Backpatch to 9.4.
Diffstat (limited to 'src')
-rw-r--r--src/tools/msvc/vcregress.pl50
1 files changed, 31 insertions, 19 deletions
diff --git a/src/tools/msvc/vcregress.pl b/src/tools/msvc/vcregress.pl
index 8933920d9bf..67a915a62e2 100644
--- a/src/tools/msvc/vcregress.pl
+++ b/src/tools/msvc/vcregress.pl
@@ -34,7 +34,7 @@ if (-e "src/tools/msvc/buildenv.pl")
my $what = shift || "";
if ($what =~
-/^(check|installcheck|plcheck|contribcheck|modulescheck|ecpgcheck|isolationcheck|upgradecheck|bincheck|recoverycheck)$/i
+/^(check|installcheck|plcheck|contribcheck|modulescheck|ecpgcheck|isolationcheck|upgradecheck|bincheck|recoverycheck|taptest)$/i
)
{
$what = uc $what;
@@ -54,13 +54,6 @@ copy("$Config/dummy_seclabel/dummy_seclabel.dll", "src/test/regress");
$ENV{PATH} = "$topdir/$Config/libpq;$ENV{PATH}";
-my $schedule = shift;
-unless ($schedule)
-{
- $schedule = "serial";
- $schedule = "parallel" if ($what eq 'CHECK' || $what =~ /PARALLEL/);
-}
-
if ($ENV{PERL5LIB})
{
$ENV{PERL5LIB} = "$topdir/src/tools/msvc;$ENV{PERL5LIB}";
@@ -90,13 +83,14 @@ my %command = (
ISOLATIONCHECK => \&isolationcheck,
BINCHECK => \&bincheck,
RECOVERYCHECK => \&recoverycheck,
- UPGRADECHECK => \&upgradecheck,);
+ UPGRADECHECK => \&upgradecheck,
+ TAPTEST => \&taptest,);
my $proc = $command{$what};
exit 3 unless $proc;
-&$proc();
+&$proc(@_);
exit 0;
@@ -104,6 +98,7 @@ exit 0;
sub installcheck
{
+ my $schedule = shift || 'serial';
my @args = (
"../../../$Config/pg_regress/pg_regress",
"--dlpath=.",
@@ -119,6 +114,7 @@ sub installcheck
sub check
{
+ my $schedule = shift || 'parallel';
InstallTemp();
chdir "${topdir}/src/test/regress";
my @args = (
@@ -138,15 +134,15 @@ sub check
sub ecpgcheck
{
- my $msbflags = $ENV{MSBFLAGS} || "";
+ my $msbflags = $ENV{MSBFLAGS} || "";
chdir $startdir;
system("msbuild ecpg_regression.proj $msbflags /p:config=$Config");
my $status = $? >> 8;
exit $status if $status;
InstallTemp();
chdir "$topdir/src/interfaces/ecpg/test";
- $schedule = "ecpg";
- my @args = (
+ my $schedule = "ecpg";
+ my @args = (
"../../../../$Config/pg_regress_ecpg/pg_regress_ecpg",
"--bindir=",
"--dbname=ecpg1_regression,ecpg2_regression",
@@ -219,6 +215,17 @@ sub bincheck
exit $mstat if $mstat;
}
+sub taptest
+{
+ my $dir = shift;
+
+ die "no tests found!" unless -d "$topdir/$dir/t";
+
+ InstallTemp();
+ my $status = tap_check("$topdir/$dir");
+ exit $status if $status;
+}
+
sub plcheck
{
chdir "../../pl";
@@ -516,7 +523,6 @@ sub fetchRegressOpts
$m =~ s{\\\r?\n}{}g;
if ($m =~ /^\s*REGRESS_OPTS\s*\+?=(.*)/m)
{
-
# Substitute known Makefile variables, then ignore options that retain
# an unhandled variable reference. Ignore anything that isn't an
# option starting with "--".
@@ -588,15 +594,18 @@ sub GetTests
sub InstallTemp
{
- print "Setting up temp install\n\n";
- Install("$tmp_installdir", "all", $config);
+ unless ($ENV{NO_TEMP_INSTALL})
+ {
+ print "Setting up temp install\n\n";
+ Install("$tmp_installdir", "all", $config);
+ }
$ENV{PATH} = "$tmp_installdir/bin;$ENV{PATH}";
}
sub usage
{
print STDERR
- "Usage: vcregress.pl <mode> [ <schedule> ]\n\n",
+ "Usage: vcregress.pl <mode> [ <arg>]\n\n",
"Options for <mode>:\n",
" bincheck run tests of utilities in src/bin/\n",
" check deploy instance and run regression tests on it\n",
@@ -607,9 +616,12 @@ sub usage
" modulescheck run tests of modules in src/test/modules/\n",
" plcheck run tests of PL languages\n",
" recoverycheck run recovery test suite\n",
+ " taptest run an arbitrary TAP test set\n",
" upgradecheck run tests of pg_upgrade\n",
- "\nOptions for <schedule>:\n",
+ "\nOptions for <arg>: (used by check and installcheck)\n",
" serial serial mode\n",
- " parallel parallel mode\n";
+ " parallel parallel mode\n",
+ "\nOption for <arg>: for taptest\n",
+ " TEST_DIR (required) directory where tests reside\n";
exit(1);
}