t/TEST shouldn't use -M options until we've tested that they work.
[p5sagit/p5-mst-13.2.git] / t / TEST
diff --git a/t/TEST b/t/TEST
index c466d0e..6d8020a 100755 (executable)
--- a/t/TEST
+++ b/t/TEST
@@ -14,9 +14,6 @@ $| = 1;
 #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
@@ -70,7 +67,6 @@ $ENV{PERL_DESTRUCT_LEVEL} = 2 unless exists $ENV{PERL_DESTRUCT_LEVEL};
 $ENV{EMXSHELL} = 'sh';        # For OS/2
 
 # Roll your own File::Find!
-use TestInit;
 if ($show_elapsed_time) { require Time::HiRes }
 
 my %skip = (
@@ -133,27 +129,41 @@ sub _scan_test {
     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}) {
@@ -166,7 +176,7 @@ sub _run_test {
             $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";
     }