X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Flib%2FDBICTest%2FUtil.pm;h=f747210c050daba548ae2152a547df2afaf457ea;hb=bbf6a9a5d39cbf1c9d22cccd298ae95ac0fef694;hp=74ba0684efe495054819ec38d588dd81f669a16d;hpb=1f99022a59628403ab2db026216ed890f55b8d90;p=dbsrgits%2FDBIx-Class.git diff --git a/t/lib/DBICTest/Util.pm b/t/lib/DBICTest/Util.pm index 74ba068..f747210 100644 --- a/t/lib/DBICTest/Util.pm +++ b/t/lib/DBICTest/Util.pm @@ -24,10 +24,10 @@ use constant DEBUG_TEST_CONCURRENCY_LOCKS => ; use Config; -use Carp 'confess'; +use Carp qw(cluck confess croak); use Fcntl ':flock'; use Scalar::Util qw(blessed refaddr); -use DBIx::Class::_Util; +use DBIx::Class::_Util 'scope_guard'; use base 'Exporter'; our @EXPORT_OK = qw( @@ -90,27 +90,26 @@ sub await_flock ($$) { return $res; } -sub local_umask { + +sub local_umask ($) { return unless defined $Config{d_umask}; - die 'Calling local_umask() in void context makes no sense' + croak 'Calling local_umask() in void context makes no sense' if ! defined wantarray; - my $old_umask = umask(shift()); + my $old_umask = umask($_[0]); die "Setting umask failed: $!" unless defined $old_umask; - return bless \$old_umask, 'DBICTest::Util::UmaskGuard'; -} -{ - package DBICTest::Util::UmaskGuard; - sub DESTROY { - &DBIx::Class::_Util::detected_reinvoked_destructor; - - local ($@, $!); - eval { defined (umask ${$_[0]}) or die }; - warn ( "Unable to reset old umask ${$_[0]}: " . ($!||'Unknown error') ) - if ($@ || $!); - } + scope_guard(sub { + local ($@, $!, $?); + + eval { + defined(umask $old_umask) or die "nope"; + 1; + } or cluck ( + "Unable to reset old umask '$old_umask': " . ($! || 'Unknown error') + ); + }); } sub stacktrace {