|
Packit |
0848f5 |
#! @PERL@
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
$debug = 1;
|
|
Packit |
0848f5 |
$verbose = 1;
|
|
Packit |
0848f5 |
$ignoreBogusOutput = 0;
|
|
Packit |
0848f5 |
$filePattern = "runtests.*.status";
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
$testsPassed = 0;
|
|
Packit |
0848f5 |
$testsFailed = 0;
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
foreach $_ (@ARGV) {
|
|
Packit |
0848f5 |
if (/^--?ignorebogus/) {
|
|
Packit |
0848f5 |
$ignoreBogusOutput = 1;
|
|
Packit |
0848f5 |
}
|
|
Packit |
0848f5 |
else {
|
|
Packit |
0848f5 |
print STDERR "checktests [ -ignorebogus ]\n";
|
|
Packit |
0848f5 |
exit(1);
|
|
Packit |
0848f5 |
}
|
|
Packit |
0848f5 |
}
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
open( RESULTS, "ls -1 $filePattern |" ) || die "Cannot list directory using ls -1 $filePattern\n";
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
while (<RESULTS>) {
|
|
Packit |
0848f5 |
chop;
|
|
Packit |
0848f5 |
$statusFile = $_;
|
|
Packit |
0848f5 |
$resultsFile = $statusFile;
|
|
Packit |
0848f5 |
$resultsFile =~ s/\.status/.out/;
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
if ($resultsFile =~ /runtests\.([0-9]+)\.out/) {
|
|
Packit |
0848f5 |
$count = $1;
|
|
Packit |
0848f5 |
}
|
|
Packit |
0848f5 |
else {
|
|
Packit |
0848f5 |
$count = -1;
|
|
Packit |
0848f5 |
print STDERR "Unable to determine test number from $resultsFile!\n";
|
|
Packit |
0848f5 |
$testsFailed ++;
|
|
Packit |
0848f5 |
next;
|
|
Packit |
0848f5 |
}
|
|
Packit |
0848f5 |
open (SFD, "<$statusFile" );
|
|
Packit |
0848f5 |
while (<SFD>) {
|
|
Packit |
0848f5 |
chop;
|
|
Packit |
0848f5 |
$testStatus = $_;
|
|
Packit |
0848f5 |
}
|
|
Packit |
0848f5 |
close (SFD);
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
if (-s $resultsFile) {
|
|
Packit |
0848f5 |
open (RFD, "<$resultsFile");
|
|
Packit |
0848f5 |
$runLine = <RFD>;
|
|
Packit |
0848f5 |
$sawNoerrors = 0;
|
|
Packit |
0848f5 |
# Successful output should contain ONLY the line No Errors
|
|
Packit |
0848f5 |
while (<RFD>) {
|
|
Packit |
0848f5 |
chop;
|
|
Packit |
0848f5 |
$outLine = $_;
|
|
Packit |
0848f5 |
if ($outLine =~ /^\s+No [Ee]rrors\s*$/) {
|
|
Packit |
0848f5 |
$sawNoerrors = 1;
|
|
Packit |
0848f5 |
}
|
|
Packit |
0848f5 |
else {
|
|
Packit |
0848f5 |
# To filter out output that may be added to STDOUT
|
|
Packit |
0848f5 |
# by a badly behaved runtime system, you can either
|
|
Packit |
0848f5 |
# add a specific filter here (preferred) or set the
|
|
Packit |
0848f5 |
# -ignorebogus option (considered a workaround)
|
|
Packit |
0848f5 |
# The following is an example that accepts certain
|
|
Packit |
0848f5 |
# kinds of output once "No Errors" is seen.
|
|
Packit |
0848f5 |
if ($sawNoerrors) {
|
|
Packit |
0848f5 |
if ( /^Application [0-9]+ resources: utime .*/) {
|
|
Packit |
0848f5 |
last;
|
|
Packit |
0848f5 |
}
|
|
Packit |
0848f5 |
}
|
|
Packit |
0848f5 |
if (!$ignoreBogusOutput) {
|
|
Packit |
0848f5 |
# Any extraneous output is an error
|
|
Packit |
0848f5 |
$sawNoerrors = 0;
|
|
Packit |
0848f5 |
}
|
|
Packit |
0848f5 |
}
|
|
Packit |
0848f5 |
}
|
|
Packit |
0848f5 |
close (RFD);
|
|
Packit |
0848f5 |
if ($sawNoerrors == 1 && $testStatus == 0) {
|
|
Packit |
0848f5 |
$testsPassed ++;
|
|
Packit |
0848f5 |
}
|
|
Packit |
0848f5 |
else {
|
|
Packit |
0848f5 |
# Test wrote No Errors but then exited with a non-zero status
|
|
Packit |
0848f5 |
$testsFailed ++;
|
|
Packit |
0848f5 |
# Output the errors
|
|
Packit |
0848f5 |
if ($verbose) {
|
|
Packit |
0848f5 |
print STDOUT "Test $count failed:\n";
|
|
Packit |
0848f5 |
print STDOUT "Test status: $testStatus\n";
|
|
Packit |
0848f5 |
print STDOUT "Test output:\n";
|
|
Packit |
0848f5 |
system ("cat $resultsFile" );
|
|
Packit |
0848f5 |
}
|
|
Packit |
0848f5 |
}
|
|
Packit |
0848f5 |
}
|
|
Packit |
0848f5 |
else {
|
|
Packit |
0848f5 |
print STDERR "No $resultsFile\n" if $debug;
|
|
Packit |
0848f5 |
$testsFailed ++;
|
|
Packit |
0848f5 |
}
|
|
Packit |
0848f5 |
}
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
print "Tests passed: $testsPassed; test failed: $testsFailed\n";
|