Make sure the pure-perl test *is* pure-perl
Peter Rabbitson [Wed, 8 Aug 2012 17:02:11 +0000 (19:02 +0200)]
t/01_basic.t
t/02_thread.t

index 3c3ffbd..b93496a 100644 (file)
@@ -3,13 +3,19 @@ use warnings;
 
 BEGIN {
   if ($ENV{DEVEL_GLOBALDESTRUCTION_PP_TEST}) {
-    require DynaLoader;
+    no strict 'refs';
     no warnings 'redefine';
-    my $orig = \&DynaLoader::bootstrap;
-    *DynaLoader::bootstrap = sub {
-      die 'no XS' if $_[0] eq 'Devel::GlobalDestruction';
-      goto $orig;
-    };
+
+    for my $f (qw(DynaLoader::bootstrap XSLoader::load)) {
+      my ($mod) = $f =~ /^ (.+) \:\: [^:]+ $/x;
+      eval "require $mod" or die $@;
+
+      my $orig = \&$f;
+      *$f = sub {
+        die 'no XS' if ($_[0]||'') eq 'Devel::GlobalDestruction';
+        goto $orig;
+      };
+    }
   }
 }
 
index 9032546..bcf4878 100644 (file)
@@ -24,13 +24,19 @@ use warnings;
 
 BEGIN {
   if ($ENV{DEVEL_GLOBALDESTRUCTION_PP_TEST}) {
-    require DynaLoader;
+    no strict 'refs';
     no warnings 'redefine';
-    my $orig = \&DynaLoader::bootstrap;
-    *DynaLoader::bootstrap = sub {
-      die 'no XS' if $_[0] eq 'Devel::GlobalDestruction';
-      goto $orig;
-    };
+
+    for my $f (qw(DynaLoader::bootstrap XSLoader::load)) {
+      my ($mod) = $f =~ /^ (.+) \:\: [^:]+ $/x;
+      eval "require $mod" or die $@;
+
+      my $orig = \&$f;
+      *$f = sub {
+        die 'no XS' if ($_[0]||'') eq 'Devel::GlobalDestruction';
+        goto $orig;
+      };
+    }
   }
 }