X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/a7da9a42f1696505415b30f979c4f52d77a60af6..ae1c8c834e40d14abc2481f3159cae29d6d2bc25:/t/TEST diff --git a/t/TEST b/t/TEST index 0a63f0e..98fc8dc 100755 --- a/t/TEST +++ b/t/TEST @@ -5,10 +5,15 @@ $| = 1; +# Let tests know they're running in the perl core. Useful for modules +# which live dual lives on CPAN. +$ENV{PERL_CORE} = 1; + # Cheesy version of Getopt::Std. Maybe we should replace it with that. if ($#ARGV >= 0) { foreach my $idx (0..$#ARGV) { next unless $ARGV[$idx] =~ /^-(\S+)$/; + $core = 1 if $1 eq 'core'; $verbose = 1 if $1 eq 'v'; $with_utf= 1 if $1 eq 'utf8'; if ($1 =~ /^deparse(,.+)?$/) { @@ -64,15 +69,21 @@ sub _find_tests { } unless (@ARGV) { - foreach my $dir (qw(base comp cmd run io op lib)) { + foreach my $dir (qw(base comp cmd run io op)) { _find_tests($dir); } + _find_tests("lib") unless $core; my $mani = File::Spec->catdir($updir, "MANIFEST"); if (open(MANI, $mani)) { while () { # similar code in t/harness if (m!^(ext/\S+/([^/]+\.t|test\.pl)|lib/\S+?(\.t|test\.pl))\s!) { - push @ARGV, $1; - $OVER{$1} = File::Spec->catdir($updir, $1); + $t = $1; + if (!$core || $t =~ m!^lib/[a-z]!) + { + $path = File::Spec->catdir($updir, $t); + push @ARGV, $path; + $name{$path} = $t; + } } } } else { @@ -116,17 +127,18 @@ EOT $total = @tests; $files = 0; $totmax = 0; + + foreach (@tests) { + $name{$_} = File::Spec->catdir('t',$_) unless exists $name{$_}; + } my $maxlen = 0; - my $maxsuflen = 0; - foreach (@tests) { # The same code in lib/Test/Harness.pm:_run_all_tests - my $suf = /\.(\w+)$/ ? $1 : ''; - my $len = length; - my $suflen = length $suf; - $maxlen = $len if $len > $maxlen; - $maxsuflen = $suflen if $suflen > $maxsuflen; + foreach (@name{@tests}) { + s/\.\w+\z/./; + my $len = length ; + $maxlen = $len if $len > $maxlen; } # + 3 : we want three dots between the test name and the "ok" - $dotdotdot = $maxlen + 3 - $maxsuflen; + $dotdotdot = $maxlen + 3 ; while ($test = shift @tests) { if ( $infinite{$test} && $type eq 'compile' ) { @@ -146,8 +158,7 @@ EOT next; } } - $te = $test; - $te =~ s/\.\w+$/./; + $te = $name{$test}; print "$te" . '.' x ($dotdotdot - length($te)); $test = $OVER{$test} if exists $OVER{$test}; @@ -176,8 +187,6 @@ EOT close(SCRIPT); } - $test = $OVER{$test} if exists $OVER{$test}; - my $utf = $with_utf ? '-I../lib -Mutf8' : ''; my $testswitch = '-I. -MTestInit'; # -T will strict . from @INC if ($type eq 'deparse') { @@ -220,7 +229,7 @@ EOT $ok = 1; } else { - if (/^(not )?ok (\d+)(\s*#.*)?/ && + if (/^(not )?ok (\d+)[^#]*(\s*#.*)?/ && $2 == $next) { my($not, $num, $extra) = ($1, $2, $3); @@ -300,18 +309,27 @@ EOT ### Since not all tests were successful, you may want to run some ### of them individually and examine any diagnostic messages they ### produce. See the INSTALL document's section on "make test". - ### If you are testing the compiler, then ignore this message - ### and run - ### ./perl harness - ### in the directory ./t. SHRDLU warn <<'SHRDLU' if $good / $total > 0.8; - ### - ### Since most tests were successful, you have a good chance to - ### get information with better granularity by running + ### Since most tests were successful you have a good chance + ### to get information better granularity by running ### ./perl harness - ### in directory ./t. + ### in the 't' directory. SHRDLU + use Config; + if ($Config{ldlibpthname}) { + warn <