b1565067abb22956209671326aa47f82897900b9
[p5sagit/Devel-GlobalDestruction.git] / t / 01_basic.t
1 use strict;
2 use warnings;
3
4 BEGIN {
5   if ($ENV{DEVEL_GLOBALDESTRUCTION_PP_TEST}) {
6     require DynaLoader;
7     no warnings 'redefine';
8     my $orig = \&DynaLoader::bootstrap;
9     *DynaLoader::bootstrap = sub {
10       die 'no XS' if $_[0] eq 'Devel::GlobalDestruction';
11       goto $orig;
12     };
13   }
14 }
15
16 BEGIN {
17   package Test::Scope::Guard;
18   sub new { my ($class, $code) = @_; bless [$code], $class; }
19   sub DESTROY { my $self = shift; $self->[0]->() }
20 }
21
22 print "1..6\n";
23
24 my $had_error = 0;
25 END { $? = $had_error };
26 sub ok ($$) {
27   $had_error++, print "not " if !$_[0];
28   print "ok";
29   print " - $_[1]" if defined $_[1];
30   print "\n";
31 }
32
33 ok( eval "use Devel::GlobalDestruction; 1", "use Devel::GlobalDestruction" );
34
35 ok( defined &in_global_destruction, "exported" );
36
37 ok( defined prototype \&in_global_destruction, "defined prototype" );
38
39 ok( prototype \&in_global_destruction eq "", "empty prototype" );
40
41 ok( !in_global_destruction(), "not in GD" );
42
43 our $sg = Test::Scope::Guard->new(sub { ok( in_global_destruction(), "in GD" ) });