Here's a patch that will allow calling vcregress.pl to run a single TAP test set. It would work like this:
vcregress.pl src/test/recover true The second argument if true (in the perl sense, of course) would trigger a temp install before running the tests. It defaults to off, in an attempt to minimize the unnecessary running of installs. Once we have this I will switch the buildfarm client to use it. The previous bincheck procedure is kept to avoid breakage of scripts, buildfarm clients etc. cheers andrew -- Andrew Dunstan https://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
diff --git a/src/tools/msvc/vcregress.pl b/src/tools/msvc/vcregress.pl index 8933920..56c7a2d 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, + TAP_TEST => \&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 = ( @@ -145,7 +141,7 @@ sub ecpgcheck exit $status if $status; InstallTemp(); chdir "$topdir/src/interfaces/ecpg/test"; - $schedule = "ecpg"; + my $schedule = "ecpg"; my @args = ( "../../../../$Config/pg_regress_ecpg/pg_regress_ecpg", "--bindir=", @@ -219,6 +215,17 @@ sub bincheck exit $mstat if $mstat; } +sub taptest +{ + my ($dir, $needs_install) = @_; + + die "no tests found!" unless -d "$topdir/$dir/t"; + + InstallTemp() if $needs_install; + 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 "--". @@ -596,9 +602,10 @@ sub InstallTemp sub usage { print STDERR - "Usage: vcregress.pl <mode> [ <schedule> ]\n\n", + "Usage: vcregress.pl <mode> [ arg [ , arg] ... ]\n\n", "Options for <mode>:\n", " bincheck run tests of utilities in src/bin/\n", + " taptest run an arbitrary TAP test\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", @@ -608,8 +615,11 @@ sub usage " plcheck run tests of PL languages\n", " recoverycheck run recovery test suite\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", + "\nOptions for args for taptest\n", + " test-dir (required) directory where tests reside\n", + " install-needed (optional) if non-zero a temp install will be done\n"; exit(1); }
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers