3 # Generates an XML summary of test cases from Test-kit lite output XML.
14 my $num_actual_passes=0;
19 my ($p, $elt, %attrs) = @_;
21 if($elt =~ /testcase/)
24 if($attrs{"result"} eq "PASS")
29 if($elt =~ /actual_result/)
38 if($elt =~ /actual_result/)
54 my($parser) = new XML::Parser(Handlers => {Start => \&handle_start,
56 Char => \&handle_char});
60 open SUMMARY, ">summary.xml" || die "Can't open summary.xml for writing:$!\n";
61 print SUMMARY << "EOS";
62 <?xml version="1.0" encoding="UTF-8"?>
63 <?xml-stylesheet type="text/xsl" href="./style/summary.xsl"?>
64 <result_summary plan_name="Core">
65 <other xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string" />
66 <summary test_plan_name="Empty test_plan_name">
67 <start_at>2014-03-21_18_52_41</start_at>
68 <end_at>2014-03-21_18_57_54</end_at>
72 print "\n\nSummary of all tests:\n";
73 my $output_files = `ls tct*core-tests.xml`;
75 foreach $file (split /\s+/, $output_files )
82 $parser->parsefile($file);
84 my $pass_rate = sprintf("%5.2f", $num_passes * 100.0 / $num_tests);
85 my $num_fails = $num_tests - $num_passes;
86 my $fail_rate = sprintf("%5.2f", $num_fails * 100.0 / $num_tests);
88 my $suite_name = $file;
89 $suite_name =~ s/\.xml$//;
91 print "$suite_name: $num_passes tests passed out of $num_tests ( $pass_rate% )\n";
93 print SUMMARY << "EOS2";
94 <suite name="$suite_name">
95 <total_case>$num_tests</total_case>
96 <pass_case>$num_passes</pass_case>
97 <pass_rate>$pass_rate</pass_rate>
98 <fail_case>$num_fails</fail_case>
99 <fail_rate>$fail_rate</fail_rate>
100 <block_case>0</block_case>
101 <block_rate>0.00</block_rate>
103 <na_rate>0.00</na_rate>
108 print SUMMARY "</result_summary>\n";
111 print "Summary of results written to summary.xml\n";