First public contribution.
2 # Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
4 # This component and the accompanying materials are made available
5 # under the terms of the License "Eclipse Public License v1.0"
6 # which accompanies this distribution, and is available
7 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
9 # Initial Contributors:
10 # Nokia Corporation - initial contribution.
30 print "usage: newdigest.pl <logfile>\n";
34 my ($log_file) = $ARGV[0];
38 system ("del $log_file");
41 opendir( DIR, "." ) or die("Unable to open directory");
42 my @dirs = readdir DIR;
45 my $nTotalTestCase = 0;
46 my $nTotalPassedCase = 0;
47 my $nTotalFailedCase = 0;
48 my $nTotalPassedStep = 0;
49 my $nTotalFailedStep = 0;
51 open (SUMMARY, ">$log_file") || die "couldn't open digest file: $!";
53 foreach $entry ( sort @dirs )
55 next if ( $entry eq ".." or $entry eq "." );
56 next if ( -d $entry );
60 my $ntestcasepassed = 0;
61 my $ntestcasefailed = 0;
63 if ( $entry =~ /\.log/ || $entry =~ /\.txt/)
65 parseLog($entry, \$failed, \$passed);
66 #printf SUMMARY (" %45s: %d tests failed out of %d\r\n", $entry, $failed, $failed+$passed);
69 elsif ($entry =~ /\.htm/)
71 open (HTML_LOG, "$entry" ) or die("open failed");
81 if ($line =~ /tests failed/)
83 parseLog($entry, \$failed, \$passed);
84 #printf SUMMARY (" %45s: %d tests failed out of %d\r\n", $entry, $failed, $failed+$passed);
93 parseHtm($entry, \$failed, \$passed, \$ntestcasefailed, \$ntestcasepassed);
96 if ( $passed > 0 or $failed > 0)
99 $nTotalPassedStep += $passed;
100 $nTotalFailedStep += $failed;
102 if ( $ntestcasepassed > 0 || $ntestcasefailed > 0 )
104 $nTotalPassedCase += $ntestcasepassed;
105 $nTotalFailedCase += $ntestcasefailed;
120 my $ntestScripts = " Test Scripts Run \t";
122 print SUMMARY ($scriptsRun, $ntestScripts);
124 my $nTotalTestCases = $nTotalFailedCase+$nTotalPassedCase;
126 print SUMMARY "\r\nTest Cases\tPassed\tFailed\tTotal\r\n";
127 printf SUMMARY ("\t\t%d\t%d\t%d\n", $nTotalPassedCase, $nTotalFailedCase, $nTotalTestCases);
128 if ($nTotalTestCases > 0)
130 print SUMMARY "\r\n\t\t%Passed\t\t%Failed\r\n";
131 printf SUMMARY ("\t\t%.2f\t\t%.2f\r\n", $nTotalPassedCase/$nTotalTestCases*100, $nTotalFailedCase/$nTotalTestCases*100);
133 my $nTotalTestSteps = $nTotalPassedStep+$nTotalFailedStep;
135 print SUMMARY "\r\nTest Steps\tPassed\tFailed\tTotal\r\n";
136 printf SUMMARY ("\t\t%d\t%d\t%d\n", $nTotalPassedStep, $nTotalFailedStep, $nTotalTestSteps);
137 if ($nTotalTestSteps > 0)
139 print SUMMARY "\r\n\t\t%Passed\t\t%Failed\r\n";
140 printf SUMMARY ("\t\t%.2f\t\t%.2f\r\n", $nTotalPassedStep/$nTotalTestSteps*100, $nTotalFailedStep/$nTotalTestSteps*100);
146 my ($entry, $failed, $passed) = @_;
148 open (LOG, "$entry" ) or die("open failed");
157 if ($line =~ /tests failed/)
159 $line =~ /(\d+) tests failed out of (\d+)/;
160 printf SUMMARY (" %45s: %s\r\n", $entry, $&);
168 if ( $found eq "false" && $entry ne "buildid.txt")
170 printf SUMMARY ("WARNING: Could not parse file %s\r\n", $entry);
172 $$passed = $notests - $$failed;
175 sub parseHtm($$$$$) {
176 my ($entry, $nfailed, $npassed, $nCasesFailed, $nCasesPassed) = @_;
179 $textfile =~ s/\.htm/\.log/;
180 next if ( -f $textfile);
188 my $TEST_STEP_SECTION = 0;
189 my $TEST_CASE_SECTION = 0;
193 open (LOG, $entry) || die "couldn't open $entry: $!";
198 if ( $sLine =~ /TEST STEP SUMMARY:<\/font>/i)
200 $TEST_STEP_SECTION = 1;
201 $TEST_CASE_SECTION = 0;
203 elsif ( $sLine =~ /RUN PROGRAM SUMMARY:<\/font>/i)
205 $TEST_STEP_SECTION = 0;
207 elsif( $sLine =~ /TEST CASE SUMMARY:<\/font>/i)
209 $TEST_CASE_SECTION = 1;
210 $TEST_STEP_SECTION = 0;
212 elsif ( $sLine =~ /SUMMARY:<\/font>/i ) # To Keep Last
214 $TEST_STEP_SECTION = 1;
218 if ( $TEST_STEP_SECTION )
220 $passed += $1 if( $sLine =~ /<font.*color=00AF00> PASS = (\d+)<\/font>/i);
221 $passed += $1 if( $sLine =~ /<font.*color=00AF00>PASS = (\d+)<\/font>/i);
222 $failed += $1 if( $sLine =~ /<font.*color=FF0000>FAIL = (\d+)<\/font>/i);
223 $failed += $1 if( $sLine =~ /<font.*color=0000FF>ABORT = (\d+)<\/font>/i);
224 $failed += $1 if( $sLine =~ /<font.*color=0000FF>PANIC = (\d+)<\/font>/i);
225 $failed += $1 if( $sLine =~ /<font.*color=0000FF>INCONCLUSIVE = (\d+)<\/font>/i);
226 $failed += $1 if( $sLine =~ /<font.*color=0000FF>UNKNOWN = (\d+)<\/font>/i);
227 $failed += $1 if( $sLine =~ /<font.*color=0000FF>UNEXECUTED = (\d+)<\/font>/i);
229 if ( $TEST_CASE_SECTION )
231 $casepassed += $1 if( $sLine =~ /<font.*color=00AF00> PASS = (\d+)<\/font>/i);
232 $casepassed += $1 if( $sLine =~ /<font.*color=00AF00>PASS = (\d+)<\/font>/i);
233 $casefailed += $1 if( $sLine =~ /<font.*color=FF0000>FAIL = (\d+)<\/font>/i);
234 $casefailed += $1 if( $sLine =~ /<font.*color=0000FF>ABORT = (\d+)<\/font>/i);
235 $casefailed += $1 if( $sLine =~ /<font.*color=0000FF>PANIC = (\d+)<\/font>/i);
236 $casefailed += $1 if( $sLine =~ /<font.*color=0000FF>INCONCLUSIVE = (\d+)<\/font>/i);
237 $casefailed += $1 if( $sLine =~ /<font.*color=0000FF>UNKNOWN = (\d+)<\/font>/i);
238 $casefailed += $1 if( $sLine =~ /<font.*color=0000FF>UNEXECUTED = (\d+)<\/font>/i);
241 $ncasestotal = $casefailed + $casepassed;
242 $nstepstotal = $passed + $failed;
245 if($ncasestotal != 0 or $noTestCase == 1)
247 printf SUMMARY (" %45s: %d tests failed out of %d\r\n", $entry, $failed, $nstepstotal);
251 printf SUMMARY ("WARNING: %45s: %d tests failed out of %d\r\n", $entry, $failed, $nstepstotal);
255 $$nCasesPassed = $casepassed;
256 $$nCasesFailed = $casefailed;