diff options
author | Michael G. Schwern <schwern@pobox.com> | 2005-07-11 11:41:30 -0700 |
---|---|---|
committer | H.Merijn Brand <h.m.brand@xs4all.nl> | 2005-07-12 06:26:39 +0000 |
commit | f458b6e8d4ef066d8e0768073b3c77d2c9bf98e0 (patch) | |
tree | 84234a7a901c5183f0606231e4cfed80add95b31 /t | |
parent | 30f9da9e3831971d9eed035728db462f81862e51 (diff) | |
download | perl-f458b6e8d4ef066d8e0768073b3c77d2c9bf98e0.tar.gz |
Understand "ok" with no number
Message-ID: <20050712014130.GA20855@windhund.schwern.org>
p4raw-id: //depot/perl@25114
Diffstat (limited to 't')
-rwxr-xr-x | t/TEST | 139 |
1 files changed, 71 insertions, 68 deletions
@@ -75,14 +75,14 @@ sub _find_tests { my($dir) = @_; opendir DIR, $dir or die "Trouble opening $dir: $!"; foreach my $f (sort { $a cmp $b } readdir DIR) { - next if $f eq $curdir or $f eq $updir or + next if $f eq $curdir or $f eq $updir or $f =~ /^(?:CVS|RCS|SCCS|\.svn)$/; - my $fullpath = File::Spec->catfile($dir, $f); + my $fullpath = File::Spec->catfile($dir, $f); - _find_tests($fullpath) if -d $fullpath; - $fullpath = VMS::Filespec::unixify($fullpath) if $^O eq 'VMS'; - push @ARGV, $fullpath if $f =~ /\.t$/; + _find_tests($fullpath) if -d $fullpath; + $fullpath = VMS::Filespec::unixify($fullpath) if $^O eq 'VMS'; + push @ARGV, $fullpath if $f =~ /\.t$/; } } @@ -105,7 +105,7 @@ sub _populate_hash { unless (@ARGV) { foreach my $dir (qw(base comp cmd run io op uni)) { - _find_tests($dir); + _find_tests($dir); } _find_tests("lib") unless $::core; # Config.pm may be broken for make minitest. And this is only a refinement @@ -140,7 +140,7 @@ unless (@ARGV) { } my $mani = File::Spec->catfile($updir, "MANIFEST"); if (open(MANI, $mani)) { - while (<MANI>) { # similar code in t/harness + while (<MANI>) { # similar code in t/harness if (m!^(ext/(\S+)/+(?:[^/\s]+\.t|test\.pl)|lib/\S+?(?:\.t|test\.pl))\s!) { my $t = $1; my $extension = $2; @@ -159,7 +159,7 @@ unless (@ARGV) { } close MANI; } else { - warn "$0: cannot open $mani: $!\n"; + warn "$0: cannot open $mani: $!\n"; } unless ($::core) { _find_tests('pod'); @@ -175,7 +175,7 @@ unless (@ARGV) { if ($::deparse) { _testprogs('deparse', '', @ARGV); } -elsif( $::compile ) { +elsif( $::compile ) { _testprogs('compile', '', @ARGV); } elsif( $::bytecompile ) { @@ -234,15 +234,15 @@ TESTING BYTECODE COMPILER EOT $ENV{PERLCC_TIMEOUT} = 120 - if ($type eq 'compile' && !$ENV{PERLCC_TIMEOUT}); + if ($type eq 'compile' && !$ENV{PERLCC_TIMEOUT}); $::bad_files = 0; foreach my $t (@tests) { unless (exists $::path_to_name{$t}) { - my $tname = File::Spec->catfile('t',$t); - $tname = VMS::Filespec::unixify($tname) if $^O eq 'VMS'; - $::path_to_name{$t} = $tname; + my $tname = File::Spec->catfile('t',$t); + $tname = VMS::Filespec::unixify($tname) if $^O eq 'VMS'; + $::path_to_name{$t} = $tname; } } my $maxlen = 0; @@ -265,7 +265,7 @@ EOT if ( $::infinite{$test} && $type eq 'compile' ) { print STDERR "$test creates infinite loop! Skipping.\n"; - next; + next; } if ($test =~ /^$/) { next; @@ -291,17 +291,17 @@ EOT # XXX DAPM %OVER not defined anywhere # $test = $OVER{$test} if exists $OVER{$test}; - open(SCRIPT,"<$test") or die "Can't run $test.\n"; - $_ = <SCRIPT>; - close(SCRIPT) unless ($type eq 'deparse'); + open(SCRIPT,"<$test") or die "Can't run $test.\n"; + $_ = <SCRIPT>; + close(SCRIPT) unless ($type eq 'deparse'); if ($::with_utf16) { $_ =~ tr/\0//d; } my $switch; - if (/#!.*\bperl.*\s-\w*([tT])/) { - $switch = qq{"-$1"}; - } - else { + if (/#!.*\bperl.*\s-\w*([tT])/) { + $switch = qq{"-$1"}; + } + else { if ($::taintwarn) { # not all tests are expected to pass with this option $switch = '"-t"'; @@ -309,9 +309,9 @@ EOT else { $switch = ''; } - } + } - my $test_executable; # for 'compile' tests + my $test_executable; # for 'compile' tests my $file_opts = ""; if ($type eq 'deparse') { # Look for #line directives which change the filename @@ -335,7 +335,7 @@ EOT } elsif ($type eq 'bytecompile') { my ($pwd, $null); - if( $^O eq 'MSWin32') { + if( $^O eq 'MSWin32') { $pwd = `cd`; $null = 'nul'; } else { @@ -352,7 +352,7 @@ EOT $bswitch .= "-b," if $test =~ m(op/getpid); my $bytecompile_cmd = - "$perl $testswitch $switch -I../lib $bswitch". + "$perl $testswitch $switch -I../lib $bswitch". "-o$test.plc $test 2>$null &&". "$perl $testswitch $switch -I../lib $utf8 $test.plc |"; open(RESULTS,$bytecompile_cmd) @@ -363,8 +363,8 @@ EOT my $redir = $^O eq 'VMS' ? '2>&1' : ''; if ($ENV{PERL_VALGRIND}) { $perl = "valgrind --suppressions=perl.supp --leak-check=yes " - . "--leak-resolution=high --show-reachable=yes " - . "--num-callers=50 --logfile-fd=3 $perl"; + . "--leak-resolution=high --show-reachable=yes " + . "--num-callers=50 --logfile-fd=3 $perl"; $redir = "3>$valgrind_log"; } my $run = "$perl" . _quote_args("$testswitch $switch $utf8") @@ -373,16 +373,16 @@ EOT } else { my $compile_cmd; - my $pl2c = "$testswitch -I../lib ../utils/perlcc --testsuite " . - # -O9 for good measure, -fcog is broken ATM - "$switch -Wb=-O9,-fno-cog -L .. " . - "-I \".. ../lib/CORE\" $args $utf8 $test -o "; - - if( $^O eq 'MSWin32' ) { - $test_executable = "$test.exe"; - # hopefully unused name... - open HACK, "> xweghyz.pl"; - print HACK <<EOT; + my $pl2c = "$testswitch -I../lib ../utils/perlcc --testsuite " . + # -O9 for good measure, -fcog is broken ATM + "$switch -Wb=-O9,-fno-cog -L .. " . + "-I \".. ../lib/CORE\" $args $utf8 $test -o "; + + if( $^O eq 'MSWin32' ) { + $test_executable = "$test.exe"; + # hopefully unused name... + open HACK, "> xweghyz.pl"; + print HACK <<EOT; #!./perl open HACK, '.\\perl $pl2c $test_executable |'; @@ -391,23 +391,23 @@ while(<HACK>) {m/^\\w+\\.[cC]\$/ && next;print} open HACK, '$test_executable |'; while(<HACK>) {print} EOT - close HACK; - $compile_cmd = 'xweghyz.pl |'; - } - else { - $test_executable = "$test.plc"; - $compile_cmd + close HACK; + $compile_cmd = 'xweghyz.pl |'; + } + else { + $test_executable = "$test.plc"; + $compile_cmd = "./perl $pl2c $test_executable && $test_executable |"; - } - unlink $test_executable if -f $test_executable; + } + unlink $test_executable if -f $test_executable; open(RESULTS, $compile_cmd) or print "can't compile '$compile_cmd': $!.\n"; } - my $failure; - my $next = 0; - my $seen_leader = 0; - my $seen_ok = 0; + my $failure; + my $next = 0; + my $seen_leader = 0; + my $seen_ok = 0; my $trailing_leader = 0; my $max; my %todo; @@ -428,10 +428,10 @@ EOT last; } $max = $1; - %todo = map { $_ => 1 } split / /, $3 if $3; + %todo = map { $_ => 1 } split / /, $3 if $3; $totmax += $max; $tested_files++; - if ($seen_ok) { + if ($seen_ok) { # 1..n appears at end of file $trailing_leader = 1; if ($next != $max) { @@ -442,10 +442,10 @@ EOT else { $next = 0; } - $seen_leader = 1; + $seen_leader = 1; } else { - if (/^(not )?ok (\d+)[^\#]*(\s*\#.*)?/) { + if (/^(not )?ok(?: (\d+))?[^\#]*(\s*\#.*)?/) { unless ($seen_leader) { unless ($seen_ok) { $next = 0; @@ -453,8 +453,11 @@ EOT } $seen_ok = 1; $next++; - if ($2 == $next) { - my($not, $num, $extra, $istodo) = ($1, $2, $3, 0); + my($not, $num, $extra, $istodo) = ($1, $2, $3, 0); + $num = $next unless $num; + + if ($num == $next) { + # SKIP is essentially the same as TODO for t/TEST # this still conforms to TAP: # http://search.cpan.org/dist/Test-Harness/lib/Test/Harness/TAP.pod @@ -467,12 +470,12 @@ EOT } } else { - $failure ="FAILED--expected test $next, saw test $2"; + $failure ="FAILED--expected test $next, saw test $num"; last; } - } - elsif (/^Bail out!\s*(.*)/i) { # magic words - die "FAILED--Further testing stopped" . ($1 ? ": $1\n" : ".\n"); + } + elsif (/^Bail out!\s*(.*)/i) { # magic words + die "FAILED--Further testing stopped" . ($1 ? ": $1\n" : ".\n"); } else { $failure = "FAILED--unexpected output at test $next"; @@ -539,10 +542,10 @@ EOT rename("perl.3log", $tpp) || die "rename: perl3.log to $tpp: $!\n"; } - # test if the compiler compiled something - if( $type eq 'compile' && !-e "$test_executable" ) { - $failure = "Test did not compile"; - } + # test if the compiler compiled something + if( $type eq 'compile' && !-e "$test_executable" ) { + $failure = "Test did not compile"; + } if (not defined $failure and $next != $max) { $failure="FAILED--expected $max tests, saw $next"; } @@ -594,30 +597,30 @@ SHRDLU_1 ### ./perl harness ### in the 't' directory since most (>=80%) of the tests succeeded. SHRDLU_2 - if (eval {require Config; import Config; 1}) { + if (eval {require Config; import Config; 1}) { if ($::Config{usedl} && (my $p = $::Config{ldlibpthname})) { warn <<SHRDLU_3; ### You may have to set your dynamic library search path, ### $p, to point to the build directory: SHRDLU_3 - if (exists $ENV{$p} && $ENV{$p} ne '') { + if (exists $ENV{$p} && $ENV{$p} ne '') { warn <<SHRDLU_4a; ### setenv $p `pwd`:\$$p; cd t; ./perl harness ### $p=`pwd`:\$$p; export $p; cd t; ./perl harness ### export $p=`pwd`:\$$p; cd t; ./perl harness SHRDLU_4a - } else { + } else { warn <<SHRDLU_4b; ### setenv $p `pwd`; cd t; ./perl harness ### $p=`pwd`; export $p; cd t; ./perl harness ### export $p=`pwd`; cd t; ./perl harness SHRDLU_4b - } + } warn <<SHRDLU_5; ### for csh-style shells, like tcsh; or for traditional/modern ### Bourne-style shells, like bash, ksh, and zsh, respectively. SHRDLU_5 - } + } } } my ($user,$sys,$cuser,$csys) = times; |