my $what = shift || "";
if ($what =~
-/^(check|installcheck|plcheck|contribcheck|ecpgcheck|isolationcheck|upgradecheck|bincheck)$/i
+/^(check|installcheck|plcheck|contribcheck|ecpgcheck|isolationcheck|upgradecheck|bincheck|taptest)$/i
)
{
$what = uc $what;
$ENV{PATH} = "../../../$Config/libpq;../../$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}";
CONTRIBCHECK => \&contribcheck,
ISOLATIONCHECK => \&isolationcheck,
BINCHECK => \&bincheck,
- UPGRADECHECK => \&upgradecheck,);
+ UPGRADECHECK => \&upgradecheck,
+ TAPTEST => \&taptest,);
my $proc = $command{$what};
exit 3 unless $proc;
-&$proc();
+&$proc(@_);
exit 0;
sub installcheck
{
+ my $schedule = shift || 'serial';
my @args = (
"../../../$Config/pg_regress/pg_regress",
"--dlpath=.",
sub check
{
+ my $schedule = shift || 'parallel';
my @args = (
"../../../$Config/pg_regress/pg_regress",
"--dlpath=.",
my $status = $? >> 8;
exit $status if $status;
chdir "$topdir/src/interfaces/ecpg/test";
- $schedule = "ecpg";
- my @args = (
+ my $schedule = "ecpg";
+ my @args = (
"../../../../$Config/pg_regress_ecpg/pg_regress_ecpg",
"--psqldir=../../../$Config/psql",
"--dbname=regress1,connectdb",
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";
$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 "--".
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 ",
- " [schedule]\n";
+ "Usage: vcregress.pl
[ ]\n\n",
+ "Options for :\n",
+ " bincheck run tests of utilities in src/bin/\n",
+ " check deploy instance and run regression tests on it\n",
+ " contribcheck run tests of modules in contrib/\n",
+ " ecpgcheck run regression tests of ECPG\n",
+ " installcheck run regression tests on existing instance\n",
+ " isolationcheck run isolation tests\n",
+ " plcheck run tests of PL languages\n",
+ " taptest run an arbitrary TAP test set\n",
+ " upgradecheck run tests of pg_upgrade\n",
+ "\nOptions for
: (used by check and installcheck)\n",
+ " serial serial mode\n",
+ " parallel parallel mode\n",
+ "\nOption for
: for taptest\n",
+ " TEST_DIR (required) directory where tests reside\n";
exit(1);
}