diff options
author | Gurusamy Sarathy <gsar@cpan.org> | 1999-05-12 10:36:02 +0000 |
---|---|---|
committer | Gurusamy Sarathy <gsar@cpan.org> | 1999-05-12 10:36:02 +0000 |
commit | 45c0de28763808112fd2f46ea311b6bb0c6050b3 (patch) | |
tree | db4c1322c63791429e59356ffdf46c9d8fde321d /lib/Test | |
parent | aa854799af20b80973df4e295167b2fda1fc7a9c (diff) | |
download | perl-45c0de28763808112fd2f46ea311b6bb0c6050b3.tar.gz |
more testsuite smarts (many of them courtesy Ilya)
p4raw-id: //depot/perl@3399
Diffstat (limited to 'lib/Test')
-rw-r--r-- | lib/Test/Harness.pm | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/lib/Test/Harness.pm b/lib/Test/Harness.pm index 866551328c..8804cbd8b8 100644 --- a/lib/Test/Harness.pm +++ b/lib/Test/Harness.pm @@ -74,9 +74,10 @@ sub runtests { $te = $test; chop($te); if ($^O eq 'VMS') { $te =~ s/^.*\.t\./[.t./; } + my $blank = (' ' x 77); my $leader = "$te" . '.' x (20 - length($te)); my $ml = ""; - $ml = "\r$leader" if -t STDOUT and not $ENV{HARNESS_NOTTY}; + $ml = "\r$blank\r$leader" if -t STDOUT and not $ENV{HARNESS_NOTTY}; print $leader; my $fh = new FileHandle; $fh->open($test) or print "can't open $test. $!\n"; @@ -105,16 +106,17 @@ sub runtests { $totmax += $max; $files++; $next = 1; - } elsif (/^1\.\.([0-9]+)/) { + } elsif (/^1\.\.([0-9]+)(\s*\#\s*[Ss]kip\S*(?>\s+)(.+))?/) { $max = $1; $totmax += $max; $files++; $next = 1; + $skip_reason = $3 if not $max and defined $3; } elsif ($max && /^(not\s+)?ok\b/) { my $this = $next; if (/^not ok\s*(\d*)/){ $this = $1 if $1 > 0; - print "${ml}NOK $this \n" if $ml; + print "${ml}NOK $this\n" if $ml; if (!$todo{$this}) { push @failed, $this; } else { @@ -123,7 +125,7 @@ sub runtests { } } elsif (/^ok\s*(\d*)(\s*\#\s*[Ss]kip\S*(?:(?>\s+)(.+))?)?/) { $this = $1 if $1 > 0; - print "${ml}ok $this " if $ml; + print "${ml}ok $this/$max" if $ml; $ok++; $totok++; $skipped++ if defined $2; @@ -191,16 +193,18 @@ sub runtests { } elsif ($ok == $max && $next == $max+1) { if ($max and $skipped + $bonus) { my @msg; - push(@msg, "$skipped/$max subtest".($skipped>1?'s':'')." skipped: $skip_reason") + push(@msg, "$skipped/$max skipped: $skip_reason") if $skipped; - push(@msg, "$bonus subtest".($bonus>1?'s':''). - " unexpectedly succeeded") + push(@msg, "$bonus/$max unexpectedly succeeded") if $bonus; - print "${ml}ok, ".join(', ', @msg)." \n"; + print "${ml}ok, ".join(', ', @msg)."\n"; } elsif ($max) { - print "${ml}ok \n"; + print "${ml}ok\n"; + } elsif (defined $skip_reason) { + print "skipped: $skip_reason\n"; + $tests_skipped++; } else { - print "skipping test on this platform\n"; + print "skipped test on this platform\n"; $tests_skipped++; } $good++; @@ -429,6 +433,12 @@ variations in spacing and case) after C<ok> or C<ok NUMBER>, it is counted as a skipped test. If the whole testscript succeeds, the count of skipped tests is included in the generated output. +C<Test::Harness> reports the text after C< # Skip(whatever)> as a +reason for skipping. Similarly, one can include a similar explanation +in a C<1..0> line emitted if the test is skipped completely: + + 1..0 # Skipped: no leverage found + =head1 EXPORT C<&runtests> is exported by Test::Harness per default. |