Author: turnstep
Date: Tue Jul 22 21:32:20 2008
New Revision: 11575

Modified:
   DBD-Pg/trunk/t/01connect.t
   DBD-Pg/trunk/t/dbdpg_test_setup.pl

Log:
During test, fully commit to testuser, which may fix the odd testing error 
sometimes seen.


Modified: DBD-Pg/trunk/t/01connect.t
==============================================================================
--- DBD-Pg/trunk/t/01connect.t  (original)
+++ DBD-Pg/trunk/t/01connect.t  Tue Jul 22 21:32:20 2008
@@ -36,9 +36,9 @@
 ok ($dbh->disconnect(), 'Disconnect from the database');
 
 # Connect two times. From this point onward, do a simpler connection check
-$dbh = connect_database();
-
-pass ('Connected with first database handle');
+$t=q{Second database connection attempt worked};
+(undef,$connerror,$dbh) = connect_database();
+is ($connerror, '', $t);
 
 ## Grab some important values used for debugging
 my @vals = qw/array_nulls backslash_quote server_encoding client_encoding 
standard_conforming_strings/;
@@ -134,6 +134,9 @@
                if ($helpconnect & 4) {
                        $extra .= 'DBI_USER';
                }
+               if ($helpconnect & 8) {
+                       $extra .= 'DBI_USERx2';
+               }
                if ($helpconnect & 16) {
                        $extra .= 'initdb';
                }

Modified: DBD-Pg/trunk/t/dbdpg_test_setup.pl
==============================================================================
--- DBD-Pg/trunk/t/dbdpg_test_setup.pl  (original)
+++ DBD-Pg/trunk/t/dbdpg_test_setup.pl  Tue Jul 22 21:32:20 2008
@@ -312,46 +312,39 @@
                        unshift @userlist, $username if defined $username and 
$username ne getpwent;
 
                        my %doneuser;
-                       for my $user (@userlist) {
-                               next if $doneuser{$user}++;
-                               $uid = (getpwnam $user)[2];
+                       for $testuser (@userlist) {
+                               next if $doneuser{$testuser}++;
+                               $uid = (getpwnam $testuser)[2];
                                next if !defined $uid;
 
                                next unless chown $uid, -1, $testdir;
                                next unless chown $uid, -1, $readme;
-                               $su = $user;
+                               $su = $testuser;
                                $founduser++;
                                $info = '';
                                my $olddir = getcwd;
                                eval {
                                        chdir $testdir;
-                                       $info = qx{su -m $user -c "$initdb 
--locale=C -E UTF8 -D $testdir/data 2>&1"};
+                                       $info = qx{su -m $testuser -c "$initdb 
--locale=C -E UTF8 -D $testdir/data 2>&1"};
                                };
                                my $err = $@;
                                chdir $olddir;
-                               if (!$err and $info =~ /owned by user "$user"/) 
{
-                                       $testuser = $user;
-                                       last;
-                               }
+                               last if !$err;
                        }
                        if (!$founduser) {
                                $@ = 'Unable to find a user to run initdb as';
-                               last GETHANDLE;
-                       }
-                       if (!$testuser) {
-                               $@ = "Failed to run initdb as user $su: $@";
-                               last GETHANDLE;
+                               last GETHANDLE; ## Fail - no user
                        }
                        if (! -e "$testdir/data") {
                                $@ = 'Could not create a test database via 
initdb';
-                               last GETHANDLE;
+                               last GETHANDLE; ## Fail - no datadir created
                        }
                        ## At this point, both $su and $testuser are set
                }
 
                if ($info =~ /FATAL/) {
                        $@ = "initdb gave a FATAL error: $info";
-                       last GETHANDLE;
+                       last GETHANDLE; ## Fail - FATAL
                }
 
                if ($info =~ /but is not empty/) {
@@ -359,7 +352,7 @@
                }
                elsif ($info !~ /pg_ctl/) {
                        $@ = "initdb did not give a pg_ctl string: $info";
-                       last GETHANDLE;
+                       last GETHANDLE; ## Fail - bad output
                }
 
                ## Which user do we connect as?
@@ -389,7 +382,7 @@
                        }
                        if ($testport >= $maxport) {
                                $@ = "No free ports found for testing: tried 
5440 to $maxport\n";
-                               last GETHANDLE;
+                               last GETHANDLE; ## Fail - no free ports
                        }
                }
                $@ = '';
@@ -398,7 +391,7 @@
                my $cfh;
                if (! open $cfh, '>>', $conf) {
                        $@ = qq{Could not open "$conf": $!};
-                       last GETHANDLE;
+                       last GETHANDLE; ## Fail - no conf file
                }
                print $cfh "\n\n## DBD::Pg testing 
parameters\nport=$testport\nmax_connections=4\n";
                print $cfh "listen_addresses='localhost'\n" if $^O =~ /Win32/;
@@ -437,7 +430,7 @@
                        $su and chdir $olddir;
                        if ($err or $info !~ /\w/) {
                                $@ = "Could not startup new database ($COM) 
($err) ($info)";
-                               last GETHANDLE;
+                               last GETHANDLE; ## Fail - startup failed
                        }
                        sleep 1;
                }
@@ -462,7 +455,7 @@
                                        redo STARTUP;
                                }
                        }
-                       last GETHANDLE;
+                       last GETHANDLE; ## Made it!
                }
 
        } ## end of GETHANDLE

Reply via email to