From: Heikki Linnakangas <hlinnaka@iki.fi>
To: Michael Paquier <michael.paquier@gmail.com>
To: Noah Misch <noah@leadboat.com>
Cc: PostgreSQL mailing lists <pgsql-hackers@postgresql.org>
Subject: Re: Supporting TAP tests with MSVC and Windows
Date: Fri, 24 Jul 2015 20:27:42 +0300
Message-ID: <55B2758E.1010205@iki.fi> (raw)
In-Reply-To: <CAB7nPqSmCHA726iMtVuZZ4t0Rd4jkqZhDf52dTv4138iDXy7aQ@mail.gmail.com>
References: <CAB7nPqTQwphkDfZP07w7yBnbFNDhW_JBAMyCFAkarE2VWg8irQ@mail.gmail.com>
<20150403062230.GA1153652@tornado.leadboat.com>
<CAB7nPqSKRM0TvY3qFrGVEQpqJuaNstufG6LdD_5FMe7iSD686Q@mail.gmail.com>
<CAB7nPqTMmanGhAZC0GME_HyFTSgOqvKYu8rF3uAP6pnL+f0QNA@mail.gmail.com>
<CAB7nPqSHObwq89SydPYWWBafXEm=6qcxskU1-OqQOR3Zf8PrCw@mail.gmail.com>
<CAB7nPqSmLEkGvu10ttT1bpgiT_5Hsnef6+6TNfFU_r2T1OPL4A@mail.gmail.com>
<CAB7nPqSYzUDTj25XvYuTbzMSdCNEwo4-ofmXjXuJipqdiOVrwQ@mail.gmail.com>
<CAB7nPqRvsJ7WvgNDQk+yFZGNUbAbMi-LRCwgcWaAcfV3R7V2nw@mail.gmail.com>
<CAB7nPqSmCHA726iMtVuZZ4t0Rd4jkqZhDf52dTv4138iDXy7aQ@mail.gmail.com>
List-Unsubscribe: <mailto:majordomo@postgresql.org?body=unsub%20pgsql-hackers>
On 06/25/2015 07:40 AM, Michael Paquier wrote:
> On Tue, May 26, 2015 at 3:39 PM, Michael Paquier wrote:
>> Here is v6, a rebased version on HEAD (79f2b5d). There were some
>> conflicts with the indentation and some other patches related to
>> pg_rewind and initdb's tests.
>
> Attached is v7, rebased on 0b157a0.
Thanks! I fiddled with this a bit more, to centralize more of the
platform-dependent stuff to RewindTest.pm. Also, Windows doesn't have
"cat" and "touch" if you haven't installed MinGW, so I replaced those
calls with built-in perl code.
Can you double-check that the attached still works in your environment?
It works for me now.
Note: I had some trouble installing IPC::Run on my system, with
ActiveState Perl and MSVC. There is no PPM package of that for Windows,
so I had to do "cpan install IPC::Run". That downloaded the MinGW C
compiler and make utility, which took a while. But some of the IPC::Run
regression tests failed, and the installation was aborted. I forced my
way through that "notest install IPC::Run". The next obstacle was that
"vcregress <anything>" no longer worked. It complained about finding
some function in the Install module. Turns out that when it installed
the C compiler and make utility, it also installed a module called
"install" from cpan, which has the same name as the PostgreSQL
Install.pm module. We really should rename our module. I got through
that by manually removing the system install.pm module from the perl
installation's site directory. But after that, it worked great :-).
We need to put some instructions in the docs on how to install IPC::Run
on Windows. I can write up something unless you're eager to.
- Heikki
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackersAttachments:
[application/x-patch] 0001-Make-TAP-tests-work-on-Windows.patch (19.6K, ../55B2758E.1010205@iki.fi/2-0001-Make-TAP-tests-work-on-Windows.patch)
download | inline diff:
From 1793f273cb2d849c9fc63483ab485fba29c114d6 Mon Sep 17 00:00:00 2001
From: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: Fri, 24 Jul 2015 17:39:24 +0300
Subject: [PATCH] Make TAP tests work on Windows.
On Windows, use listen_address=127.0.0.1 to allow connections. We were
already using "pg_regress --config-auth" to set up HBA appropriately.
The standard_initdb helper function now sets up the server's
unix_socket_directories or listen_addresses in the config file, so that
they don't need to be specified in the pg_ctl command line anymore. That
way, the pg_ctl invocations in test programs don't need to differ between
Windows and Unix.
Add another helper function to configure the server's pg_hba.conf to
allow replication connections. The configuration is done similarly to
pg_regress --config-auth: trust on domain sockets on Unix, and SSPI
authentication on Windows.
Replace calls to "cat" and "touch" programs with built-in perl code.
Add "vcregress tapcheck" command for launching the tests on Windows.
Michael Paquier
diff --git a/doc/src/sgml/install-windows.sgml b/doc/src/sgml/install-windows.sgmlindex d154b44..2047790 100644--- a/doc/src/sgml/install-windows.sgml+++ b/doc/src/sgml/install-windows.sgml@@ -439,6 +439,7 @@ $ENV{CONFIG}="Debug";
<userinput>vcregress modulescheck</userinput>
<userinput>vcregress ecpgcheck</userinput>
<userinput>vcregress isolationcheck</userinput>
+<userinput>vcregress tapcheck</userinput>
<userinput>vcregress upgradecheck</userinput>
</screen>
diff --git a/src/Makefile.global.in b/src/Makefile.global.inindex e2f7211..59c9eed 100644--- a/src/Makefile.global.in+++ b/src/Makefile.global.in@@ -339,7 +339,7 @@ endef
define prove_check
rm -rf $(srcdir)/tmp_check/log
-cd $(srcdir) && TESTDIR='$(CURDIR)' $(with_temp_install) PGPORT='6$(DEF_PGPORT)' top_builddir='$(CURDIR)/$(top_builddir)' $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) t/*.pl+cd $(srcdir) && TESTDIR='$(CURDIR)' PG_REGRESS='$(top_builddir)/src/test/regress/pg_regress' $(with_temp_install) PGPORT='6$(DEF_PGPORT)' $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) t/*.pl
endef
else
diff --git a/src/bin/pg_basebackup/t/010_pg_basebackup.pl b/src/bin/pg_basebackup/t/010_pg_basebackup.plindex e47c3a0..40b6b76 100644--- a/src/bin/pg_basebackup/t/010_pg_basebackup.pl+++ b/src/bin/pg_basebackup/t/010_pg_basebackup.pl@@ -1,6 +1,7 @@
use strict;
use warnings;
use Cwd;
+use Config;
use TestLib;
use Test::More tests => 35;
@@ -25,11 +26,7 @@ if (open BADCHARS, ">>$tempdir/pgdata/FOO\xe0\xe0\xe0BAR")
close BADCHARS;
}
-open HBA, ">>$tempdir/pgdata/pg_hba.conf";-print HBA "local replication all trust\n";-print HBA "host replication all 127.0.0.1/32 trust\n";-print HBA "host replication all ::1/128 trust\n";-close HBA;+configure_hba_for_replication "$tempdir/pgdata";
system_or_bail 'pg_ctl', '-D', "$tempdir/pgdata", 'reload';
command_fails(
@@ -57,61 +54,7 @@ command_ok([ 'pg_basebackup', '-D', "$tempdir/tarbackup", '-Ft' ],
'tar format');
ok(-f "$tempdir/tarbackup/base.tar", 'backup tar was created');
-my $superlongname = "superlongname_" . ("x" x 100);--system_or_bail 'touch', "$tempdir/pgdata/$superlongname";-command_fails([ 'pg_basebackup', '-D', "$tempdir/tarbackup_l1", '-Ft' ],- 'pg_basebackup tar with long name fails');-unlink "$tempdir/pgdata/$superlongname";--# Create a temporary directory in the system location and symlink it-# to our physical temp location. That way we can use shorter names-# for the tablespace directories, which hopefully won't run afoul of-# the 99 character length limit.-my $shorter_tempdir = tempdir_short . "/tempdir";-symlink "$tempdir", $shorter_tempdir;--mkdir "$tempdir/tblspc1";-psql 'postgres',- "CREATE TABLESPACE tblspc1 LOCATION '$shorter_tempdir/tblspc1';";-psql 'postgres', "CREATE TABLE test1 (a int) TABLESPACE tblspc1;";-command_ok([ 'pg_basebackup', '-D', "$tempdir/tarbackup2", '-Ft' ],- 'tar format with tablespaces');-ok(-f "$tempdir/tarbackup2/base.tar", 'backup tar was created');-my @tblspc_tars = glob "$tempdir/tarbackup2/[0-9]*.tar";-is(scalar(@tblspc_tars), 1, 'one tablespace tar was created');--command_fails(- [ 'pg_basebackup', '-D', "$tempdir/backup1", '-Fp' ],- 'plain format with tablespaces fails without tablespace mapping');--command_ok(- [ 'pg_basebackup', '-D', "$tempdir/backup1", '-Fp',- "-T$shorter_tempdir/tblspc1=$tempdir/tbackup/tblspc1" ],- 'plain format with tablespaces succeeds with tablespace mapping');-ok(-d "$tempdir/tbackup/tblspc1", 'tablespace was relocated');-opendir(my $dh, "$tempdir/pgdata/pg_tblspc") or die;-ok( ( grep {- -l "$tempdir/backup1/pg_tblspc/$_"- and readlink "$tempdir/backup1/pg_tblspc/$_" eq- "$tempdir/tbackup/tblspc1"- } readdir($dh)),- "tablespace symlink was updated");-closedir $dh;--mkdir "$tempdir/tbl=spc2";-psql 'postgres', "DROP TABLE test1;";-psql 'postgres', "DROP TABLESPACE tblspc1;";-psql 'postgres',- "CREATE TABLESPACE tblspc2 LOCATION '$shorter_tempdir/tbl=spc2';";-command_ok(- [ 'pg_basebackup', '-D', "$tempdir/backup3", '-Fp',- "-T$shorter_tempdir/tbl\\=spc2=$tempdir/tbackup/tbl\\=spc2" ],- 'mapping tablespace with = sign in path');-ok(-d "$tempdir/tbackup/tbl=spc2", 'tablespace with = sign was relocated');--psql 'postgres', "DROP TABLESPACE tblspc2;";-+# Test incorrect arguments
command_fails(
[ 'pg_basebackup', '-D', "$tempdir/backup_foo", '-Fp', "-T=/foo" ],
'-T with empty old directory fails');
@@ -132,9 +75,72 @@ command_fails(
[ 'pg_basebackup', '-D', "$tempdir/backup_foo", '-Fp', "-Tfoo" ],
'-T with invalid format fails');
-mkdir "$tempdir/$superlongname";-psql 'postgres',- "CREATE TABLESPACE tblspc3 LOCATION '$tempdir/$superlongname';";-command_ok([ 'pg_basebackup', '-D', "$tempdir/tarbackup_l3", '-Ft' ],- 'pg_basebackup tar with long symlink target');-psql 'postgres', "DROP TABLESPACE tblspc3;";+# Tar format doesn't support filenames longer than 100 bytes.+my $superlongname = "superlongname_" . ("x" x 100);+my $superlongpath = "$tempdir/pgdata/$superlongname";++open FILE, ">$superlongpath" or die "unable to create file $superlongpath";+close FILE;+command_fails([ 'pg_basebackup', '-D', "$tempdir/tarbackup_l1", '-Ft' ],+ 'pg_basebackup tar with long name fails');+unlink "$tempdir/pgdata/$superlongname";++# The following tests test symlinks. Windows doesn't have symlinks, so+# skip on Windows.+SKIP: {+ skip "symlinks not supported on Windows", 10 if ($Config{osname} eq "MSWin32");++ # Create a temporary directory in the system location and symlink it+ # to our physical temp location. That way we can use shorter names+ # for the tablespace directories, which hopefully won't run afoul of+ # the 99 character length limit.+ my $shorter_tempdir = tempdir_short . "/tempdir";+ symlink "$tempdir", $shorter_tempdir;++ mkdir "$tempdir/tblspc1";+ psql 'postgres',+ "CREATE TABLESPACE tblspc1 LOCATION '$shorter_tempdir/tblspc1';";+ psql 'postgres', "CREATE TABLE test1 (a int) TABLESPACE tblspc1;";+ command_ok([ 'pg_basebackup', '-D', "$tempdir/tarbackup2", '-Ft' ],+ 'tar format with tablespaces');+ ok(-f "$tempdir/tarbackup2/base.tar", 'backup tar was created');+ my @tblspc_tars = glob "$tempdir/tarbackup2/[0-9]*.tar";+ is(scalar(@tblspc_tars), 1, 'one tablespace tar was created');++ command_fails(+ [ 'pg_basebackup', '-D', "$tempdir/backup1", '-Fp' ],+ 'plain format with tablespaces fails without tablespace mapping');++ command_ok(+ [ 'pg_basebackup', '-D', "$tempdir/backup1", '-Fp',+ "-T$shorter_tempdir/tblspc1=$tempdir/tbackup/tblspc1" ],+ 'plain format with tablespaces succeeds with tablespace mapping');+ ok(-d "$tempdir/tbackup/tblspc1", 'tablespace was relocated');+ opendir(my $dh, "$tempdir/pgdata/pg_tblspc") or die;+ ok( ( grep {+ -l "$tempdir/backup1/pg_tblspc/$_"+ and readlink "$tempdir/backup1/pg_tblspc/$_" eq+ "$tempdir/tbackup/tblspc1"+ } readdir($dh)),+ "tablespace symlink was updated");+ closedir $dh;++ mkdir "$tempdir/tbl=spc2";+ psql 'postgres', "DROP TABLE test1;";+ psql 'postgres', "DROP TABLESPACE tblspc1;";+ psql 'postgres',+ "CREATE TABLESPACE tblspc2 LOCATION '$shorter_tempdir/tbl=spc2';";+ command_ok(+ [ 'pg_basebackup', '-D', "$tempdir/backup3", '-Fp',+ "-T$shorter_tempdir/tbl\\=spc2=$tempdir/tbackup/tbl\\=spc2" ],+ 'mapping tablespace with = sign in path');+ ok(-d "$tempdir/tbackup/tbl=spc2", 'tablespace with = sign was relocated');+ psql 'postgres', "DROP TABLESPACE tblspc2;";++ mkdir "$tempdir/$superlongname";+ psql 'postgres',+ "CREATE TABLESPACE tblspc3 LOCATION '$tempdir/$superlongname';";+ command_ok([ 'pg_basebackup', '-D', "$tempdir/tarbackup_l3", '-Ft' ],+ 'pg_basebackup tar with long symlink target');+ psql 'postgres', "DROP TABLESPACE tblspc3;";+}diff --git a/src/bin/pg_ctl/t/001_start_stop.pl b/src/bin/pg_ctl/t/001_start_stop.plindex bcceb57d..4f65af5 100644--- a/src/bin/pg_ctl/t/001_start_stop.pl+++ b/src/bin/pg_ctl/t/001_start_stop.pl@@ -15,13 +15,9 @@ command_exit_is([ 'pg_ctl', 'start', '-D', "$tempdir/nonexistent" ],
command_ok([ 'pg_ctl', 'initdb', '-D', "$tempdir/data" ], 'pg_ctl initdb');
command_ok(
- [ "$ENV{top_builddir}/src/test/regress/pg_regress", '--config-auth',+ [ $ENV{PG_REGRESS}, '--config-auth',
"$tempdir/data" ],
'configure authentication');
-open CONF, ">>$tempdir/data/postgresql.conf";-print CONF "listen_addresses = ''\n";-print CONF "unix_socket_directories = '$tempdir_short'\n";-close CONF;
command_ok([ 'pg_ctl', 'start', '-D', "$tempdir/data", '-w' ],
'pg_ctl start -w');
command_ok([ 'pg_ctl', 'start', '-D', "$tempdir/data", '-w' ],
diff --git a/src/bin/pg_ctl/t/002_status.pl b/src/bin/pg_ctl/t/002_status.plindex ec0a2a7..31f7c72 100644--- a/src/bin/pg_ctl/t/002_status.pl+++ b/src/bin/pg_ctl/t/002_status.pl@@ -10,10 +10,6 @@ command_exit_is([ 'pg_ctl', 'status', '-D', "$tempdir/nonexistent" ],
4, 'pg_ctl status with nonexistent directory');
standard_initdb "$tempdir/data";
-open CONF, ">>$tempdir/data/postgresql.conf";-print CONF "listen_addresses = ''\n";-print CONF "unix_socket_directories = '$tempdir_short'\n";-close CONF;
command_exit_is([ 'pg_ctl', 'status', '-D', "$tempdir/data" ],
3, 'pg_ctl status with server not running');
diff --git a/src/bin/pg_rewind/RewindTest.pm b/src/bin/pg_rewind/RewindTest.pmindex db5e90b..7fd8af2 100644--- a/src/bin/pg_rewind/RewindTest.pm+++ b/src/bin/pg_rewind/RewindTest.pm@@ -195,19 +195,14 @@ max_connections = 10
));
# Accept replication connections on master
- append_to_file(- "$test_master_datadir/pg_hba.conf", qq(-local replication all trust-));+ configure_hba_for_replication $test_master_datadir;- system_or_bail('pg_ctl' , '-w',- '-D' , $test_master_datadir,- "-o", "-k $tempdir_short --listen-addresses='' -p $port_master",- 'start');+ system_or_bail('pg_ctl', '-w',+ '-D', $test_master_datadir,+ '-o', "-p $port_master", 'start');
#### Now run the test-specific parts to initialize the master before setting
# up standby
- $ENV{PGHOST} = $tempdir_short;
}
sub create_standby
@@ -228,8 +223,7 @@ recovery_target_timeline='latest'
# Start standby
system_or_bail('pg_ctl', '-w', '-D', $test_standby_datadir,
- '-o', "-k $tempdir_short --listen-addresses='' -p $port_standby",- 'start');+ '-o', "-p $port_standby", 'start');
# Wait until the standby has caught up with the primary, by polling
# pg_stat_replication.
@@ -265,7 +259,7 @@ sub run_pg_rewind
my $test_mode = shift;
# Stop the master and be ready to perform the rewind
- system_or_bail('pg_ctl', '-D', $test_master_datadir, 'stop', '-m', 'fast');+ system_or_bail('pg_ctl', '-D', $test_master_datadir, '-m', 'fast', 'stop');
# At this point, the rewind processing is ready to run.
# We now have a very simple scenario with a few diverged WAL record.
@@ -283,8 +277,8 @@ sub run_pg_rewind
{
# Do rewind using a local pgdata as source
# Stop the master and be ready to perform the rewind
- system_or_bail('pg_ctl', '-D', $test_standby_datadir, 'stop',- '-m', 'fast');+ system_or_bail('pg_ctl', '-D', $test_standby_datadir,+ '-m', 'fast', 'stop');
command_ok(['pg_rewind',
"--debug",
"--source-pgdata=$test_standby_datadir",
@@ -303,7 +297,6 @@ sub run_pg_rewind
}
else
{
-
# Cannot come here normally
die("Incorrect test mode specified");
}
@@ -323,8 +316,7 @@ recovery_target_timeline='latest'
# Restart the master to check that rewind went correctly
system_or_bail('pg_ctl', '-w', '-D', $test_master_datadir,
- '-o', "-k $tempdir_short --listen-addresses='' -p $port_master",- 'start');+ '-o', "-p $port_master", 'start');
#### Now run the test-specific parts to check the result
}
diff --git a/src/test/perl/TestLib.pm b/src/test/perl/TestLib.pmindex 0193d57..4d0dd45 100644--- a/src/test/perl/TestLib.pm+++ b/src/test/perl/TestLib.pm@@ -3,11 +3,13 @@ package TestLib;
use strict;
use warnings;
+use Config;
use Exporter 'import';
our @EXPORT = qw(
tempdir
tempdir_short
standard_initdb
+ configure_hba_for_replication
start_test_server
restart_test_server
psql
@@ -112,29 +114,83 @@ sub tempdir_short
return File::Temp::tempdir(CLEANUP => 1);
}
+# Initialize a new cluster for testing.+#+# The PGHOST environment variable is set to connect to the new cluster.+#+# Authentication is set up so that only the current OS user can access the+# cluster. On Unix, we use Unix domain socket connections, with the socket in+# a directory that's only accessible to the current user to ensure that.+# On Windows, we use SSPI authentication to ensure the same (by pg_regress+# --config-auth).
sub standard_initdb
{
my $pgdata = shift;
system_or_bail('initdb', '-D', "$pgdata", '-A' , 'trust', '-N');
- system_or_bail("$ENV{top_builddir}/src/test/regress/pg_regress",- '--config-auth', $pgdata);+ system_or_bail($ENV{PG_REGRESS}, '--config-auth', $pgdata);++ my $tempdir_short = tempdir_short;++ open CONF, ">>$pgdata/postgresql.conf";+ print CONF "\n# Added by TestLib.pm)\n";+ if ($Config{osname} eq "MSWin32")+ {+ print CONF "listen_addresses = '127.0.0.1'\n";+ }+ else+ {+ print CONF "unix_socket_directories = '$tempdir_short'\n";+ }+ close CONF;++ $ENV{PGHOST} = ($Config{osname} eq "MSWin32") ? "127.0.0.1" : $tempdir_short;+}++# Set up the cluster to allow replication connections, in the same way that+# standard_initdb does for normal connections.+sub configure_hba_for_replication+{+ my $pgdata = shift;++ open HBA, ">>$pgdata/pg_hba.conf";+ print HBA "\n# Allow replication (set up by TestLib.pm)\n";+ if ($Config{osname} ne "MSWin32")+ {+ print HBA "local replication all trust\n";+ }+ else+ {+ print HBA "host replication all 127.0.0.1/32 sspi include_realm=1 map=regress\n";+ print HBA "host replication all ::1/128 sspi include_realm=1 map=regress\n";+ }+ close HBA;
}
my ($test_server_datadir, $test_server_logfile);
++# Initialize a new cluster for testing, and start it.+#+# The first argument is a temporary directory to create the cluster in.+# If the second argument is true, the cluster configured to accept+# replication connections.
sub start_test_server
{
- my ($tempdir) = @_;+ my $tempdir = shift;+ my $replication = shift;
my $ret;
- my $tempdir_short = tempdir_short;-
print("### Starting test server in $tempdir\n");
standard_initdb "$tempdir/pgdata";
- $ret = system_log('pg_ctl', '-D', "$tempdir/pgdata", '-w', '-l',- "$tempdir/logfile", '-o',-"--fsync=off -k \"$tempdir_short\" --listen-addresses='' --log-statement=all",- 'start');+ if ($replication)+ {+ configure_for_replication("$tempdir/pgdata");+ }++ $ret = system_log('pg_ctl', '-D', "$tempdir/pgdata", '-w',+ '-l', "$tempdir/logfile", '-o', "--fsync=off --log-statement=all",+ 'start');+
if ($ret != 0)
{
print "# pg_ctl failed; logfile:\n";
@@ -142,7 +198,6 @@ sub start_test_server
BAIL_OUT("pg_ctl failed");
}
- $ENV{PGHOST} = $tempdir_short;
$test_server_datadir = "$tempdir/pgdata";
$test_server_logfile = "$tempdir/logfile";
}
@@ -216,7 +271,9 @@ sub command_exit_is
print("# Running: " . join(" ", @{$cmd}) ."\n");
my $h = start $cmd;
$h->finish();
- is($h->result(0), $expected, $test_name);+ my $result = ($Config{osname} eq "MSWin32") ?+ ($h->full_results)[0] : $h->result(0);+ is($result, $expected, $test_name);
}
sub program_help_ok
@@ -269,7 +326,12 @@ sub issues_sql_like
truncate $test_server_logfile, 0;
my $result = run_log($cmd);
ok($result, "@$cmd exit code 0");
- my $log = `cat '$test_server_logfile'`;++ # read the server log file into variable+ open SERVERLOG, '<', $test_server_logfile or die "Could not open server log file $test_server_logfile: $!";+ my $log = do { local $/; <SERVERLOG> };+ close SERVERLOG;+
like($log, $expected_sql, "$test_name: SQL found in server log");
}
diff --git a/src/tools/msvc/clean.bat b/src/tools/msvc/clean.batindex fbe3cc6..50c361e 100755--- a/src/tools/msvc/clean.bat+++ b/src/tools/msvc/clean.bat@@ -88,6 +88,14 @@ if exist src\test\regress\regress.dll del /q src\test\regress\regress.dll
if exist src\test\regress\refint.dll del /q src\test\regress\refint.dll
if exist src\test\regress\autoinc.dll del /q src\test\regress\autoinc.dll
+if exist src\test\ssl\tmp_check rd /s /q src\test\ssl\tmp_check+if exist src\bin\initdb\tmp_check rd /s /q src\bin\initdb\tmp_check+if exist src\bin\pg_basebackup\tmp_check rd /s /q src\bin\pg_basebackup\tmp_check+if exist src\bin\pg_config\tmp_check rd /s /q src\bin\pg_config\tmp_check+if exist src\bin\pg_ctl\tmp_check rd /s /q src\bin\pg_ctl\tmp_check+if exist src\bin\pg_rewind\tmp_check rd /s /q src\bin\pg_rewind\tmp_check+if exist src\bin\scripts\tmp_check rd /s /q src\bin\scripts\tmp_check+
REM Clean up datafiles built with contrib
REM cd contrib
REM for /r %%f in (*.sql) do if exist %%f.in del %%f
diff --git a/src/tools/msvc/vcregress.pl b/src/tools/msvc/vcregress.plindex 6196383..b02f0e6 100644--- a/src/tools/msvc/vcregress.pl+++ b/src/tools/msvc/vcregress.pl@@ -7,7 +7,9 @@ use strict;
our $config;
use Cwd;
+use File::Basename;
use File::Copy;
+use File::Find ();
use Install qw(Install);
@@ -32,7 +34,7 @@ if (-e "src/tools/msvc/buildenv.pl")
my $what = shift || "";
if ($what =~
-/^(check|installcheck|plcheck|contribcheck|modulescheck|ecpgcheck|isolationcheck|upgradecheck)$/i+/^(check|installcheck|plcheck|contribcheck|modulescheck|ecpgcheck|isolationcheck|upgradecheck|tapcheck)$/i
)
{
$what = uc $what;
@@ -79,6 +81,7 @@ my %command = (
CONTRIBCHECK => \&contribcheck,
MODULESCHECK => \&modulescheck,
ISOLATIONCHECK => \&isolationcheck,
+ TAPCHECK => \&tapcheck,
UPGRADECHECK => \&upgradecheck,);
my $proc = $command{$what};
@@ -172,6 +175,43 @@ sub isolationcheck
exit $status if $status;
}
+sub tapcheck+{+ InstallTemp();++ my @args = ( "prove", "--verbose", "t/*.pl");++ $ENV{PATH} = "$tmp_installdir/bin;$ENV{PATH}";+ $ENV{PERL5LIB} = "$topdir/src/test/perl;$ENV{PERL5LIB}";+ $ENV{PG_REGRESS} = "$topdir/$Config/pg_regress/pg_regress";++ # Find out all the existing TAP tests by simply looking for t/+ # in the tree.+ my $tap_dirs = [];+ my @top_dir = ($topdir);+ File::Find::find(+ { wanted => sub {+ /^t\z/s+ && push(@$tap_dirs, $File::Find::name);+ }+ },+ @top_dir);++ # Process each test+ foreach my $test_path (@$tap_dirs)+ {+ next if ($test_path =~ /\/ssl\// && !defined($config->{openssl}));++ my $dir = dirname($test_path);+ chdir $dir;+ # Reset those values, they may have been changed by another test.+ $ENV{TESTDIR} = "$dir";+ system(@args);+ my $status = $? >> 8;+ exit $status if $status;+ }+}+
sub plcheck
{
chdir $startdir;
--
2.1.4
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-hackers@postgresql.org
Cc: hlinnaka@iki.fi, michael.paquier@gmail.com, noah@leadboat.com
Subject: Re: Supporting TAP tests with MSVC and Windows
In-Reply-To: <55B2758E.1010205@iki.fi>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox