|
Packit |
f32316 |
use strict;
|
|
Packit |
f32316 |
use warnings;
|
|
Packit |
f32316 |
|
|
Packit |
f32316 |
BEGIN {
|
|
Packit |
f32316 |
if ($ENV{DEVEL_GLOBALDESTRUCTION_PP_TEST}) {
|
|
Packit |
f32316 |
unshift @INC, sub {
|
|
Packit |
f32316 |
die 'no XS' if $_[1] eq 'Devel/GlobalDestruction/XS.pm';
|
|
Packit |
f32316 |
};
|
|
Packit |
f32316 |
}
|
|
Packit |
f32316 |
}
|
|
Packit |
f32316 |
|
|
Packit |
f32316 |
{
|
|
Packit |
f32316 |
package Test::Scope::Guard;
|
|
Packit |
f32316 |
sub new { my ($class, $code) = @_; bless [$code], $class; }
|
|
Packit |
f32316 |
sub DESTROY { my $self = shift; $self->[0]->() }
|
|
Packit |
f32316 |
}
|
|
Packit |
f32316 |
|
|
Packit |
f32316 |
sub ok ($$) {
|
|
Packit |
f32316 |
print "not " if !$_[0];
|
|
Packit |
f32316 |
print "ok";
|
|
Packit |
f32316 |
print " - $_[1]" if defined $_[1];
|
|
Packit |
f32316 |
print "\n";
|
|
Packit |
f32316 |
!!$_[0]
|
|
Packit |
f32316 |
}
|
|
Packit |
f32316 |
|
|
Packit |
f32316 |
BEGIN {
|
|
Packit |
f32316 |
require B;
|
|
Packit |
f32316 |
B::minus_c();
|
|
Packit |
f32316 |
|
|
Packit |
f32316 |
print "1..3\n";
|
|
Packit |
f32316 |
ok( $^C, "Test properly running under minus-c" );
|
|
Packit |
f32316 |
}
|
|
Packit |
f32316 |
|
|
Packit |
f32316 |
use Devel::GlobalDestruction;
|
|
Packit |
f32316 |
|
|
Packit |
f32316 |
BEGIN {
|
|
Packit |
f32316 |
ok !in_global_destruction(), "BEGIN is not GD with -c";
|
|
Packit |
f32316 |
}
|
|
Packit |
f32316 |
|
|
Packit |
f32316 |
our $foo;
|
|
Packit |
f32316 |
BEGIN {
|
|
Packit |
f32316 |
$foo = Test::Scope::Guard->new( sub {
|
|
Packit |
f32316 |
ok( in_global_destruction(), "Final cleanup object destruction properly in GD" ) or do {
|
|
Packit |
f32316 |
require POSIX;
|
|
Packit |
f32316 |
POSIX::_exit(1);
|
|
Packit |
f32316 |
};
|
|
Packit |
f32316 |
});
|
|
Packit |
f32316 |
}
|