Actually detect errors in pure-perl test
[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..4\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( !in_global_destruction(), "not in GD" );
38
39 our $sg = Test::Scope::Guard->new(sub { ok( in_global_destruction(), "in GD" ) });