テキスト ファイルから読み取り、JUnit 形式に基づいて XML に変換するスクリプトを作成しようとしています。次のようなテキスト ファイルが出力されます。
TEST TITLE GROUP PRIO R-STAT R-TIME VERDICT VERDICT-TEXT
------------------------- ---------------------------------------- -------- ---- ------ ------------ -------- --------------------------------------------------
Telex Telex type GROUP1 1 PASS 00:00:02.914 PASS Over
Time Timer GROUP2 1 PASS 00:00:06.619 PASS Over
上記のテキスト ファイルに期待する出力は次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<testsuites name="HostTests for Character" tests="TestSuite" time="">
<testsuite name="GROUP1" package="GROUP1" tests="" errors="">
<testcase classname="GROUP1.Telex" name="Telex type" time="" status="">
<skipped/>
<error message="" type=""/>
<failure message="" type=""/>
<system-out/>
<system-err/>
<testcase/>
<testcase classname="GROUP2.Time" name="Timer" time="" status="">
<skipped/>
<error message="" type=""/>
<failure message="" type=""/>
<system-out/>
<system-err/>
<testcase/>
<textsuite/>
<testsuites/>
Jenkinsでこれを実行するPerlスクリプトを作成するにはどうすればよいですか?
私も試しました:
#!/usr/bin/perl
use strict;
use warnings;
my $parser = XML::LibXML->new();
my $xslt = XML::LibXSLT->new();
my $textroot = $xslt ->parse_verdict_file("\\\~/jenkins/workspace/HostTestOAM/trunk/nash/test/regression/logs/verdict.1.txt");
my $checker = 1;
my @txtfile = logj('logs/verdict*.txt');
foreach (@txtfile){
my $txtfile = $_;
$txtfile =~ s/([ ()])/\\$1/g;
$txtroot2 = "\\\~/jenkins/workspace/HostTestOAM/trunk/nash/test/regression/logs/$txtfile";
my $source = $parser->parse_file($txtroot2);
my $results = $textroot->transform($source);
my $xmlparsed = "\\\~/jenkins/workspace/HostTestOAM/trunk/nash/test/regression/logs/results$checker.xml";
unless(open FILE, '>'.$xmlparsed) {
die "\Creating failed\n";
}
$textroot -> output_file($results, FILE);
close FILE;
$checker++;
}