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 / lib / common.pl
CommitLineData
59e38755
TC
1# This code is used by lib/charnames.t, lib/croak.t, lib/feature.t,
2# lib/subs.t, lib/strict.t and lib/warnings.t
3d243db0
KW
3#
4# On input, $::local_tests is the number of tests in the caller; or
5# 'no_plan' if unknown, in which case it is the caller's responsibility
6# to call cur_test() to find out how many this executed
25ae1130
RGS
7
8BEGIN {
173ee337 9 require './test.pl'; require './charset_tools.pl';
25ae1130
RGS
10}
11
afb1190b 12use Config;
ebf2da99 13use File::Path;
11ce4a76 14use File::Spec::Functions qw(catfile curdir rel2abs);
25ae1130
RGS
15
16use strict;
742dc32d 17use warnings;
a80e93c2
NC
18my (undef, $file) = caller;
19my ($pragma_name) = $file =~ /([A-Za-z_0-9]+)\.t$/
20 or die "Can't identify pragama to test from file name '$file'";
25ae1130
RGS
21
22$| = 1;
23
375f99fd 24my @w_files;
25ae1130 25
375f99fd
NC
26if (@ARGV) {
27 print "ARGV = [@ARGV]\n";
28 @w_files = map { "./lib/$pragma_name/$_" } @ARGV;
29} else {
aebe74f4 30 @w_files = sort grep !/( \.rej | ~ | \ \(Autosaved\)\.txt ) \z/nx,
5d3908cb 31 glob catfile(curdir(), "lib", $pragma_name, "*");
375f99fd 32}
25ae1130 33
16a07156
KW
34if ($::IS_EBCDIC) { # Skip Latin1 files
35 @w_files = grep { $_ !~ / _l1 $/x } @w_files
36}
37
fdb35a63 38my ($tests, @prgs) = setup_multiple_progs(@w_files);
25ae1130 39
11ce4a76 40$^X = rel2abs($^X);
96d268e2 41@INC = map { rel2abs($_) } @INC;
463cf062
NC
42my $tempdir = tempfile;
43
44mkdir $tempdir, 0700 or die "Can't mkdir '$tempdir': $!";
45chdir $tempdir or die die "Can't chdir '$tempdir': $!";
463cf062 46my $cleanup = 1;
463cf062
NC
47
48END {
49 if ($cleanup) {
50 chdir '..' or die "Couldn't chdir .. for cleanup: $!";
ebf2da99 51 rmtree($tempdir);
463cf062
NC
52 }
53}
54
375f99fd
NC
55if ($::local_tests && $::local_tests =~ /\D/) {
56 # If input is 'no_plan', pass it on unchanged
57 plan $::local_tests;
58} else {
59 plan $tests + ($::local_tests || 0);
60}
25ae1130 61
5f7e0818 62run_multiple_progs('../..', @prgs);
25ae1130 63
25ae1130 641;