Hi Hackers,
When I was working on an extension on Windows platform, I used the
command 'vcregress contribcheck' to run the regression test for my
module. However, this command will run the regression test for all the
modules, I couldn't find a way to regress test my module only. I think
it would be better to have such an option to make the development be
more efficient (Maybe there is a solution already, but I can't find it).
The attached patch allow user to run the regression test by using either
'vcregress contribcheck' or 'vcregress contribcheck postgres_fdw' if you
want to test your extension directly, for example, 'postgres_fdw'.
--
David
Software Engineer
Highgo Software Inc. (Canada)
www.highgo.ca
diff --git a/src/tools/msvc/vcregress.pl b/src/tools/msvc/vcregress.pl
index dac60f6264..9db740a847 100644
--- a/src/tools/msvc/vcregress.pl
+++ b/src/tools/msvc/vcregress.pl
@@ -448,23 +448,40 @@ sub subdircheck
return;
}
+sub contribmodulecheck
+{
+ my $module = shift;
+ my $mstat = shift;
+
+ # these configuration-based exclusions must match Install.pm
+ next if ($module eq "uuid-ossp" && !defined($config->{uuid}));
+ next if ($module eq "sslinfo" && !defined($config->{openssl}));
+ next if ($module eq "xml2" && !defined($config->{xml}));
+ next if ($module =~ /_plperl$/ && !defined($config->{perl}));
+ next if ($module =~ /_plpython$/ && !defined($config->{python}));
+ next if ($module eq "sepgsql");
+
+ subdircheck($module);
+ my $status = $? >> 8;
+ $$mstat ||= $status;
+}
+
sub contribcheck
{
chdir "../../../contrib";
my $mstat = 0;
- foreach my $module (glob("*"))
- {
- # these configuration-based exclusions must match Install.pm
- next if ($module eq "uuid-ossp" && !defined($config->{uuid}));
- next if ($module eq "sslinfo" &&
!defined($config->{openssl}));
- next if ($module eq "xml2" && !defined($config->{xml}));
- next if ($module =~ /_plperl$/ && !defined($config->{perl}));
- next if ($module =~ /_plpython$/ &&
!defined($config->{python}));
- next if ($module eq "sepgsql");
- subdircheck($module);
- my $status = $? >> 8;
- $mstat ||= $status;
+ my $module = shift;
+ if ($module ne "" )
+ {
+ contribmodulecheck($module, \$mstat);
+ }
+ else
+ {
+ foreach my $module (glob("*"))
+ {
+ contribmodulecheck($module, \$mstat);
+ }
}
exit $mstat if $mstat;
return;
@@ -760,6 +777,8 @@ sub usage
" serial serial mode\n",
" parallel parallel mode\n",
"\nOption for <arg>: for taptest\n",
- " TEST_DIR (required) directory where tests reside\n";
+ " TEST_DIR (required) directory where tests reside\n",
+ "\nOption for <arg>: for contribcheck\n",
+ " module (optional) module name to be tested only\n";
exit(1);
}