fix detection if loaded during global destruction
[p5sagit/Devel-GlobalDestruction.git] / t / 03_minusc.t
1 use strict;
2 use warnings;
3
4 BEGIN {
5   if ($ENV{DEVEL_GLOBALDESTRUCTION_PP_TEST}) {
6     unshift @INC, sub {
7       die 'no XS' if $_[1] eq 'Devel/GlobalDestruction/XS.pm';
8     };
9   }
10 }
11
12 {
13   package Test::Scope::Guard;
14   sub new { my ($class, $code) = @_; bless [$code], $class; }
15   sub DESTROY { my $self = shift; $self->[0]->() }
16 }
17
18 sub ok ($$) {
19   print "not " if !$_[0];
20   print "ok";
21   print " - $_[1]" if defined $_[1];
22   print "\n";
23   !!$_[0]
24 }
25
26 BEGIN {
27   require B;
28   B::minus_c();
29
30   print "1..3\n";
31   ok( $^C, "Test properly running under minus-c" );
32 }
33
34 use Devel::GlobalDestruction;
35
36 BEGIN {
37     ok !in_global_destruction(), "BEGIN is not GD with -c";
38 }
39
40 our $foo;
41 BEGIN {
42   $foo = Test::Scope::Guard->new( sub {
43     ok( in_global_destruction(), "Final cleanup object destruction properly in GD" ) or do {
44       require POSIX;
45       POSIX::_exit(1);
46     };
47   });
48 }