mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-13 06:30:10 +00:00
Fix prove2junit.pl to better catch test errors for jenkins report
This commit is contained in:
@@ -7,28 +7,50 @@ my $file = $ARGV[0];
|
|||||||
my $testcase = "";
|
my $testcase = "";
|
||||||
my $testsuite = "";
|
my $testsuite = "";
|
||||||
my $error_collect = "";
|
my $error_collect = "";
|
||||||
my $error_print = "";
|
my $open_error = 0;
|
||||||
|
|
||||||
if (not defined $file) {
|
if (not defined $file) {
|
||||||
die "Need filename as parameter!\n";
|
die "Need filename as parameter!\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub close_error {
|
||||||
|
if ( $open_error == 1 ) {
|
||||||
|
print "$error_collect ]]></system-err></testcase>\n";
|
||||||
|
$error_collect=""; $open_error=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
open (my $info, $file) or die "Could not open $file: $!";
|
open (my $info, $file) or die "Could not open $file: $!";
|
||||||
|
|
||||||
print "<testsuites name=\"PT-MySQL\">\n";
|
print "<testsuites name=\"PT-MySQL\">\n";
|
||||||
while(my $line = <$info>) {
|
while(my $line = <$info>) {
|
||||||
if ($line =~ /^(t\/)(\S+)(\/)(\S+).* (\.*) (skipped:) (.*)$/) { print "<testcase name=\"$4\"><skipped/><system-out>Skip reason:<![CDATA[ $7 ]]></system-out></testcase>\n"; }
|
if ($line =~ /^(t\/)(\S+)(\/)(\S+).* (\.*) (skipped:) (.*)$/) {
|
||||||
elsif ($line =~ /^ok (\d+) - (.*)$/) { print "<testcase name=\"$testcase - test $1\"><system-out>Test description:<![CDATA[ $2 ]]></system-out></testcase>\n"; }
|
close_error();
|
||||||
elsif ($line =~ /^not ok (\d+) - (.*)$/) { print "<testcase name=\"$testcase - test $1\"><failure/><system-out>Test description:<![CDATA[ $2 ]]></system-out><system-err><![CDATA[ $error_print ]]></system-err></testcase>\n"; }
|
print "<testcase name=\"$4\"><skipped/><system-out>Skip reason:<![CDATA[ $7 ]]></system-out></testcase>\n";
|
||||||
|
}
|
||||||
|
elsif ($line =~ /^ok (\d+) - (.*)$/) {
|
||||||
|
close_error();
|
||||||
|
print "<testcase name=\"$testcase - test $1\"><system-out>Test description:<![CDATA[ $2 ]]></system-out></testcase>\n";
|
||||||
|
}
|
||||||
|
elsif ($line =~ /^not ok (\d+) - (.*)$/) {
|
||||||
|
close_error();
|
||||||
|
print "<testcase name=\"$testcase - test $1\"><failure/><system-out>Test description:<![CDATA[ $2 ]]></system-out><system-err><![CDATA[ ";
|
||||||
|
$open_error=1;
|
||||||
|
}
|
||||||
elsif ($line =~ /^(t\/)(\S+)(\/)(\S+).* (\.*) $/) {
|
elsif ($line =~ /^(t\/)(\S+)(\/)(\S+).* (\.*) $/) {
|
||||||
|
close_error();
|
||||||
if ( "$2" eq "$testsuite" ) {
|
if ( "$2" eq "$testsuite" ) {
|
||||||
$testcase = "$4"; $error_print = $error_collect; $error_collect = "";
|
$testcase="$4"; $error_collect="";
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if ( "$testsuite" ne "" ) { print "</testsuite>\n"; }
|
if ( "$testsuite" ne "" ) { print "</testsuite>\n"; }
|
||||||
$testsuite = "$2"; $testcase = "$4"; $error_print = $error_collect; $error_collect = ""; print "<testsuite name=\"$testsuite\">\n";
|
$testsuite="$2"; $testcase="$4"; $error_collect=""; print "<testsuite name=\"$testsuite\">\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elsif ($line !~ /^ok$/ && $line !~ /^\d+..\d+$/) { $error_collect = $error_collect . $line; }
|
elsif ($line !~ /^ok$/ && $line !~ /^\d+..\d+$/) {
|
||||||
|
$error_collect=$error_collect . $line;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
print "</testsuite>\n</testsuites>\n";
|
print "</testsuite>\n</testsuites>\n";
|
||||||
|
Reference in New Issue
Block a user