Commit | Line | Data |
09b12813 |
1 | use strict; |
2 | use warnings; |
3 | |
4 | BEGIN { |
5 | if ($ENV{DEVEL_GLOBALDESTRUCTION_PP_TEST}) { |
b1bee216 |
6 | unshift @INC, sub { |
7 | die 'no XS' if $_[1] eq 'Devel/GlobalDestruction/XS.pm'; |
8 | }; |
09b12813 |
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 | |
5629eb97 |
30 | print "1..3\n"; |
09b12813 |
31 | ok( $^C, "Test properly running under minus-c" ); |
32 | } |
33 | |
34 | use Devel::GlobalDestruction; |
35 | |
5629eb97 |
36 | BEGIN { |
37 | ok !in_global_destruction(), "BEGIN is not GD with -c"; |
38 | } |
39 | |
09b12813 |
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 | } |