This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
re-fix leak in Devel-PPPort
[perl5.git] / t / thread_it.pl
CommitLineData
e3faa678
NC
1#!perl
2use strict;
3use warnings;
4
dd249ef4
NC
5# As perlfunc.pod says:
6# Note that the file will not be included twice under the same specified name.
7# So ensure that this, textually, is the same name as all the loaded tests use.
8# Otherwise if we require 'test.pl' and they require './test.pl', it is loaded
9# twice.
10require './test.pl';
11skip_all_without_config('useithreads');
12skip_all_if_miniperl("no dynamic loading on miniperl, no threads");
e3faa678
NC
13
14require threads;
15
4f018ed0
NC
16# Which file called us?
17my $caller = (caller)[1];
18
19die "Can't figure out which test to run from filename '$caller'"
20 unless $caller =~ m!((?:op|re)/[-_a-z0-9A-Z]+)_thr\.t\z!;
21
5051ccfe 22my $file = "./$1.t";
4f018ed0
NC
23
24$::running_as_thread = "running tests in a new thread";
25require $file;
26
27note('running tests in a new thread');
28
66478a1b
NC
29# Currently 59*4096 is the minimum stack size to just get t/re/pat_thr.t to
30# pass on HP-UX 64bit PA-RISC. The test for capture buffers (eg \87)
31# recurses heavily, and busts the default stack size (65536 on PA-RISC)
c534a167 32# On Mac OS X under gcc and g++, the default stack size is also too small.
20c29910 33# Ditto on VMS, although threshold varies by platform and -Dusevmsdebug.
a5ba4541 34# Same on AIX
66478a1b 35my $curr = threads->create({
c534a167 36 stack_size => $^O eq 'hpux' ? 524288 :
8ebda0e9 37 $^O eq 'darwin' ? 2000000:
a5ba4541 38 $^O eq 'VMS' ? 150000 :
a92866ae 39 $^O eq 'aix' ? 1500000 : 0,
66478a1b 40 }, sub {
4f018ed0
NC
41 run_tests();
42 return defined &curr_test ? curr_test() : ()
43 })->join();
44
45curr_test($curr) if defined $curr;
e3faa678
NC
46
471;