diff options
Diffstat (limited to 'ext/threads/t/end.t')
-rw-r--r-- | ext/threads/t/end.t | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/ext/threads/t/end.t b/ext/threads/t/end.t new file mode 100644 index 0000000000..199ca4771a --- /dev/null +++ b/ext/threads/t/end.t @@ -0,0 +1,41 @@ + +BEGIN { + chdir 't' if -d 't'; + @INC = '../lib'; + require Config; import Config; + unless ($Config{'useithreads'}) { + print "1..0 # Skip: no useithreads\n"; + exit 0; + } +} + +use ExtUtils::testlib; +use strict; +BEGIN { print "1..6\n" }; +use threads; +use threads::shared; + +my $test_id = 1; +share($test_id); +use Devel::Peek qw(Dump); + +sub ok { + my ($ok, $name) = @_; + + # You have to do it this way or VMS will get confused. + print $ok ? "ok $test_id - $name\n" : "not ok $test_id - $name\n"; + + printf "# Failed test at line %d\n", (caller)[2] unless $ok; + $test_id++; + return $ok; +} +ok(1); +END { ok(1,"End block run once") } +threads->create(sub { eval "END { ok(1,'') }"})->join(); +threads->create(sub { eval "END { ok(1,'') }"})->join(); +threads->create(\&thread)->join(); + +sub thread { + eval "END { ok(1,'') }"; + threads->create(sub { eval "END { ok(1,'') }"})->join(); +} |