Skip to content

Commit

Permalink
Stop using Sys::SigAction in pg tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ribasushi committed Sep 8, 2014
1 parent 2a78753 commit bb96193
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 12 deletions.
1 change: 0 additions & 1 deletion lib/DBIx/Class/Optional/Dependencies.pm
Original file line number Diff line number Diff line change
Expand Up @@ -453,7 +453,6 @@ my $reqs = {
? (
# when changing this list make sure to adjust xt/optional_deps.t
%$rdbms_pg,
($^O ne 'MSWin32' ? ('Sys::SigAction' => '0') : ()),
'DBD::Pg' => '2.009002',
) : ()
},
Expand Down
30 changes: 20 additions & 10 deletions t/72pg.t
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@ use warnings;
use Test::More;
use Test::Exception;
use Sub::Name;
use Config;
use DBIx::Class::Optional::Dependencies ();
use lib qw(t/lib);
use DBICTest;
use SQL::Abstract 'is_literal_value';
use DBIx::Class::_Util 'is_exception';

plan skip_all => 'Test needs ' . DBIx::Class::Optional::Dependencies->req_missing_for ('test_rdbms_pg')
unless DBIx::Class::Optional::Dependencies->req_ok_for ('test_rdbms_pg');
Expand Down Expand Up @@ -339,14 +341,9 @@ my $cds = $artist->cds_unordered->search({
lives_ok { $cds->update({ year => '2010' }) } 'Update on prefetched rs';

## Test SELECT ... FOR UPDATE

SKIP: {
if(eval { require Sys::SigAction }) {
Sys::SigAction->import( 'set_sig_handler' );
}
else {
skip "Sys::SigAction is not available", 6;
}
skip "Your system does not support unsafe signals (d_sigaction) - unable to run deadlock test", 1
unless eval { $Config{d_sigaction} and require POSIX };

my ($timed_out, $artist2);

Expand Down Expand Up @@ -385,15 +382,28 @@ lives_ok { $cds->update({ year => '2010' }) } 'Update on prefetched rs';
is($artist->artistid, 1, "select returns artistid = 1");

$timed_out = 0;

eval {
my $h = set_sig_handler( 'ALRM', sub { die "DBICTestTimeout" } );
# can not use %SIG assignment directly - we need sigaction below
# localization to a block still works however
local $SIG{ALRM};

POSIX::sigaction( POSIX::SIGALRM() => POSIX::SigAction->new(
sub { die "DBICTestTimeout" },
));

alarm(2);
$artist2 = $schema2->resultset('Artist')->find(1);
$artist2->name('fooey');
$artist2->update;
alarm(0);
};
$timed_out = $@ =~ /DBICTestTimeout/;

alarm(0);

if (is_exception($@)) {
$timed_out = $@ =~ /DBICTestTimeout/
or die $@;
}
});

$t->{test_sub}->();
Expand Down
1 change: 0 additions & 1 deletion xt/optional_deps.t
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,6 @@ is_deeply(
is_deeply(
DBIx::Class::Optional::Dependencies->req_list_for('test_rdbms_pg'),
{
$^O ne 'MSWin32' ? ('Sys::SigAction' => '0') : (),
'DBD::Pg' => '2.009002',
}, 'optional dependencies for testing Postgres with ENV var ok');

Expand Down

0 comments on commit bb96193

Please sign in to comment.