File: prove2junit.pl

package info (click to toggle)
percona-toolkit 3.2.1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, sid, trixie
  • size: 68,916 kB
  • sloc: perl: 241,287; sql: 22,868; sh: 19,746; javascript: 6,799; makefile: 353; awk: 38; python: 30; sed: 1
file content (56 lines) | stat: -rwxr-xr-x 1,605 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/usr/bin/env perl

use strict;
use warnings;

my $file = $ARGV[0];
my $testcase = "";
my $testsuite = "";
my $error_collect = "";
my $open_error = 0;

if (not defined $file) {
  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: $!";

print "<testsuites name=\"PT-MySQL\">\n";
while(my $line = <$info>) {
  if ($line =~ /^(t\/)(\S+)(\/)(\S+).* (\.*) (skipped:) (.*)$/) {
    close_error();
    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+).* (\.*) $/) {
    close_error();
    if ( "$2" eq "$testsuite" ) {
      $testcase="$4"; $error_collect="";
    }
    else {
      if ( "$testsuite" ne "" ) { print "</testsuite>\n"; }
      $testsuite="$2"; $testcase="$4"; $error_collect=""; print "<testsuite name=\"$testsuite\">\n";
    }
  }
  elsif ($line !~ /^ok$/ && $line !~ /^\d+..\d+$/) {
    $error_collect=$error_collect . $line;
  }
}
print "</testsuite>\n</testsuites>\n";