BEGIN {
unless ($ENV{RELEASE_TESTING}) {
require Test::More;
Test::More::plan(skip_all => 'these tests are for release candidate testing');
}
}
use strict;
use warnings;
use Test::Exception;
use Test::More;
use Fey::DBIManager::Source;
{
my $dbh = DBI->connect(
'dbi:Pg:dbname=template1', undef, undef,
{ RaiseError => 1 }
);
$dbh->do('SET CLIENT_MIN_MESSAGES = ERROR');
$dbh->do('DROP DATABASE IF EXISTS fey_dbimanager_testing');
$dbh->do('CREATE DATABASE fey_dbimanager_testing');
$dbh->disconnect();
$dbh = DBI->connect(
'dbi:Pg:dbname=fey_dbimanager_testing', undef, undef,
{ RaiseError => 1 }
);
$dbh->do('SET CLIENT_MIN_MESSAGES = ERROR');
$dbh->do('CREATE TABLE test ( test_id SERIAL8 PRIMARY KEY )');
}
my $source = Fey::DBIManager::Source->new( dsn => 'dbi:Pg:dbname=fey_dbimanager_testing' );
lives_ok { $source->dbh()->selectcol_arrayref('SELECT * FROM test') }
'Can select from test table';
my $pid;
if ( $pid = fork ) {
lives_ok { $source->dbh()->selectcol_arrayref('SELECT * FROM test') }
'Can select from test table in parent';
}
else {
eval { $source->dbh()->selectcol_arrayref('SELECT * FROM test') };
if ( my $e = $@ ) {
diag("Error in child:\n$e");
exit 1;
}
else {
exit 0;
}
}
waitpid( $pid, 0 );
ok( !$?, 'child exited cleanly' );
lives_ok { $source->dbh()->selectcol_arrayref('SELECT * FROM test') }
'Can select from test table in parent after child exits';
done_testing();