t/op/sort.t using test.pl
[p5sagit/p5-mst-13.2.git] / ext / threads / t / end.t
CommitLineData
0f1612a7 1use strict;
2use warnings;
4e00007d 3
c3939953 4# test that END blocks are run in the thread that created them and
5# not in any child threads
6
4e00007d 7BEGIN {
0f1612a7 8 if ($ENV{'PERL_CORE'}){
9 chdir 't';
10 unshift @INC, '../lib';
11 }
12 use Config;
4e00007d 13 unless ($Config{'useithreads'}) {
14 print "1..0 # Skip: no useithreads\n";
15 exit 0;
16 }
17}
18
19use ExtUtils::testlib;
0f1612a7 20
4e00007d 21BEGIN { print "1..6\n" };
22use threads;
23use threads::shared;
24
25my $test_id = 1;
26share($test_id);
4e00007d 27
28sub ok {
29 my ($ok, $name) = @_;
30
31 # You have to do it this way or VMS will get confused.
32 print $ok ? "ok $test_id - $name\n" : "not ok $test_id - $name\n";
33
34 printf "# Failed test at line %d\n", (caller)[2] unless $ok;
35 $test_id++;
36 return $ok;
37}
0f1612a7 38ok(1,'Loaded');
4e00007d 39END { ok(1,"End block run once") }
40threads->create(sub { eval "END { ok(1,'') }"})->join();
41threads->create(sub { eval "END { ok(1,'') }"})->join();
42threads->create(\&thread)->join();
43
44sub thread {
45 eval "END { ok(1,'') }";
46 threads->create(sub { eval "END { ok(1,'') }"})->join();
47}