Make tap tests store postmaster logs and handle vpaths correctly
authorAndrew Dunstan
Tue, 28 Jul 2015 20:04:54 +0000 (16:04 -0400)
committerAndrew Dunstan
Tue, 28 Jul 2015 20:04:54 +0000 (16:04 -0400)
Given this it is possible that the buildfarm animals running these tests
will be able to capture adequate logging to allow diagnosis of failures.

src/Makefile.global.in
src/test/perl/TestLib.pm

index d321dc7450697bb6263b4e7a128b2b74508ec222..18c653bd210a692a95fdb03228be61e2456d5f4f 100644 (file)
@@ -322,7 +322,7 @@ cd $(srcdir) && TESTDIR='$(CURDIR)' PATH="$(bindir):$$PATH" PGPORT='6$(DEF_PGPOR
 endef
 
 define prove_check
-rm -rf $(srcdir)/tmp_check/log
+rm -rf $(CURDIR)/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
 endef
 
index 37a1bc16208310fbc44bdb1961fcd4a36d08980e..5a34ce04b75afcc61407eb845d2742fe59fe494e 100644 (file)
@@ -23,6 +23,9 @@ our @EXPORT = qw(
   program_options_handling_ok
   command_like
   issues_sql_like
+
+  $tmp_check
+  $log_path
 );
 
 use Cwd;
@@ -37,8 +40,10 @@ use Test::More;
 
 # Open log file. For each test, the log file name uses the name of the
 # file launching this module, without the .pl suffix.
-my $log_path = 'tmp_check/log';
-mkdir 'tmp_check';
+our ($tmp_check, $log_path);
+$tmp_check = $ENV{TESTDIR} ? "$ENV{TESTDIR}/tmp_check" : "tmp_check";
+$log_path = "$tmp_check/log";
+mkdir $tmp_check;
 mkdir $log_path;
 my $test_logfile = basename($0);
 $test_logfile =~ s/\.[^.]+$//;
@@ -128,19 +133,19 @@ sub start_test_server
    print("### Starting test server in $tempdir\n");
    standard_initdb "$tempdir/pgdata";
    $ret = system_log('pg_ctl', '-D', "$tempdir/pgdata", '-w', '-l',
-     "$tempdir/logfile", '-o',
+     "$log_path/postmaster.log", '-o',
 "--fsync=off -k \"$tempdir_short\" --listen-addresses='' --log-statement=all",
                    'start');
    if ($ret != 0)
    {
        print "# pg_ctl failed; logfile:\n";
-       system('cat', "$tempdir/logfile");
+       system('cat', "$log_path/postmaster.log");
        BAIL_OUT("pg_ctl failed");
    }
 
    $ENV{PGHOST}         = $tempdir_short;
    $test_server_datadir = "$tempdir/pgdata";
-   $test_server_logfile = "$tempdir/logfile";
+   $test_server_logfile = "$log_path/postmaster.log";
 }
 
 sub restart_test_server