diff options
Diffstat (limited to 't/02_thread.t')
-rw-r--r-- | t/02_thread.t | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/t/02_thread.t b/t/02_thread.t new file mode 100644 index 0000000..4a7b6d0 --- /dev/null +++ b/t/02_thread.t @@ -0,0 +1,51 @@ +use Config; +BEGIN { + unless ($Config{useithreads}) { + print "1..0 # SKIP your perl does not support ithreads\n"; + exit 0; + } +} + +BEGIN { + unless (eval { require threads }) { + print "1..0 # SKIP threads.pm not installed\n"; + exit 0; + } +} + +use threads; +use threads::shared; + +our $had_error :shared; +END { $? = $had_error||0 } + +use strict; +use warnings; + +BEGIN { + if ($ENV{DEVEL_GLOBALDESTRUCTION_PP_TEST}) { + unshift @INC, sub { + die 'no XS' if $_[1] eq 'Devel/GlobalDestruction/XS.pm'; + }; + } +} + +# load it before spawning a thread, that's the whole point +require Devel::GlobalDestruction; + +sub do_test { + + # just die so we don't need to deal with testcount skew + unless ( ($_[0]||'') eq 'arg' ) { + $had_error++; + die "Argument passing failed!"; + } + + delete $INC{'t/01_basic.t'}; + do 't/01_basic.t'; + + 1; +} + +threads->create('do_test', 'arg')->join + or $had_error++; |