4a7b6d018d7a9ee466674203298ef869e65a45d0
[p5sagit/Devel-GlobalDestruction.git] / t / 02_thread.t
1 use Config;
2 BEGIN {
3   unless ($Config{useithreads}) {
4     print "1..0 # SKIP your perl does not support ithreads\n";
5     exit 0;
6   }
7 }
8
9 BEGIN {
10   unless (eval { require threads }) {
11     print "1..0 # SKIP threads.pm not installed\n";
12     exit 0;
13   }
14 }
15
16 use threads;
17 use threads::shared;
18
19 our $had_error :shared;
20 END { $? = $had_error||0 }
21
22 use strict;
23 use warnings;
24
25 BEGIN {
26   if ($ENV{DEVEL_GLOBALDESTRUCTION_PP_TEST}) {
27     unshift @INC, sub {
28       die 'no XS' if $_[1] eq 'Devel/GlobalDestruction/XS.pm';
29     };
30   }
31 }
32
33 # load it before spawning a thread, that's the whole point
34 require Devel::GlobalDestruction;
35
36 sub do_test {
37
38   # just die so we don't need to deal with testcount skew
39   unless ( ($_[0]||'') eq 'arg' ) {
40     $had_error++;
41     die "Argument passing failed!";
42   }
43
44   delete $INC{'t/01_basic.t'};
45   do 't/01_basic.t';
46
47   1;
48 }
49
50 threads->create('do_test', 'arg')->join
51   or $had_error++;