3 # Reads summary.xml and produces human readable output
18 my ($p, $elt, %attrs) = @_;
22 $module=$attrs{"name"};
33 if($elt =~ /pass_case/)
35 $modules{$module}->{"pass"}=$text;
38 elsif($elt =~ /fail_case/)
40 $modules{$module}->{"fail"}=$text;
51 my($parser) = new XML::Parser(Handlers => {Start => \&handle_start,
53 Char => \&handle_char});
54 $parser->parsefile("summary.xml");
56 my $RED_COLOR="\e[1;31m";
57 my $GREEN_COLOR="\e[1;32m";
58 my $ASCII_RESET="\e[0m";
59 my $ASCII_BOLD="\e[1m";
63 foreach $module (keys(%modules))
65 my $result_colour = $GREEN_COLOR;
66 if( $modules{$module}->{"fail"} )
68 $result_colour = $RED_COLOR;
70 my $numPasses = $modules{$module}->{"pass"};
71 my $numFailures = $modules{$module}->{"fail"};
72 $totalFailures += $numFailures;
73 print( "$ASCII_BOLD$module results:$ASCII_RESET\n" );
74 printf("Number of test passes: %s%4d (%5.2f%%)%s\n", $ASCII_BOLD, $numPasses, 100.0 * $numPasses / ($numPasses+$numFailures), $ASCII_RESET);
75 printf("%sNumber of test failures:%s %s%4d%s\n\n", $result_colour, $ASCII_RESET, $ASCII_BOLD, $numFailures, $ASCII_RESET);
78 exit $totalFailures == 0;