#BEGIN { require '../lib/strict.pm'; "strict"->import() };
#BEGIN { require '../lib/warnings.pm'; "warnings"->import() };
-# Let tests know they're running in the perl core. Useful for modules
-# which live dual lives on CPAN.
-$ENV{PERL_CORE} = 1;
delete $ENV{PERL5LIB};
# remove empty elements due to insertion of empty symbols via "''p1'" syntax
return { file => $file_opts, switch => $switch };
}
+# directories with special sets of test switches
+my %dir_to_switch =
+ (base => '',
+ comp => '',
+ run => '',
+ );
sub _run_test {
my($test, $type) = @_;
my $options = _scan_test($test, $type);
- my $utf8 = $::with_utf8 ? '-I../lib -Mutf8' : '';
- my $testswitch = '-I. -MTestInit'; # -T will strict . from @INC
+ my $perl = './perl';
+ my $lib = '../lib';
+ $test =~ /^([^\/]+)/;
+
+ my $testswitch = $dir_to_switch{$1};
+ if (!defined $testswitch) {
+ $testswitch = '-I. -MTestInit'; # -T will remove . from @INC
+ }
+
+ my $utf8 = $::with_utf8 ? '-I$lib -Mutf8' : '';
my $results;
if ($type eq 'deparse') {
my $deparse_cmd =
- "./perl $testswitch $options->{switch} -I../lib -MO=-qq,Deparse,-sv1.,".
+ "$perl $testswitch $options->{switch} -I$lib -MO=-qq,Deparse,-sv1.,".
"-l$::deparse_opts$options->{file} ".
"$test > $test.dp ".
- "&& ./perl $testswitch $options->{switch} -I../lib $test.dp |";
+ "&& $perl $testswitch $options->{switch} -I$lib $test.dp |";
open($results, $deparse_cmd)
or print "can't deparse '$deparse_cmd': $!.\n";
}
elsif ($type eq 'perl') {
- my $perl = $ENV{PERL} || './perl';
+ my $perl = $ENV{PERL} || $perl;
my $redir = $^O eq 'VMS' ? '2>&1' : '';
if ($ENV{PERL_VALGRIND}) {
$redir = "3>$Valgrind_Log";
}
- my $run = "$perl" . _quote_args("$testswitch $options->{switch} $utf8")
+ my $run = $perl . _quote_args("$testswitch $options->{switch} $utf8")
. " $test $redir|";
open($results, $run) or print "can't run '$run': $!.\n";
}