1

我正在尝试将 plist 文件转换为 JUnit 样式的 XML。我有一个将 plist 转换为 JUnit/ANT XML 的 xsl 样式表。

这是我运行以将 plist 转换为 XML 的 perl 代码:

my $parser = XML::LibXML->new();
my $xslt = XML::LibXSLT->new();
my $stylesheet = $xslt->parse_stylesheet_file("\\\~/Hudson/build/workspace/ui-automation/automation\\\ test\\\ suite/plist2junit.xsl");

my $counter = 1;
my @plistFiles = glob('Logs/*/*.plist');
foreach (@plistFiles){
    #Escape the file path and specify abosulte path
    my $plistFile = $_;
    $plistFile =~ s/([ ()])/\\$1/g;
    $path2plist = "\\\~/Hudson/build/workspace/ui-automation/automation\\\ test\\\ suite/$plistFile";
    #transform the plist file to xml
    my $source = $parser->parse_file($path2plist);
    my $results = $stylesheet->transform($source);

    my $resultsFile = "\\\~/Hudson/build/workspace/ui-automation/automation\\\ test\\\ suite/JUnit/results$counter.xml";
    #create the output file
    unless(open FILE, '>'.$resultsFile) {
    # Die with error message
    die "\nUnable to create $file\n";
    }

    # Write results to the file.
    $stylesheet->output_file($results, FILE);
    close FILE;
    $counter++;
}

在 Hudson/Jenkins 上运行 perl 脚本后,它会输出以下错误消息:

无法打开 ~/Hudson/build/workspace/ui-automation/automation\test\suite/Logs/Run\1/Automation\Results.plist:没有这样的文件或目录

该错误是由my $source = $parser->parse_file($path2plist);代码中引起的。我无法弄清楚为什么它无法找到/读取文件。

任何人都知道可能导致错误的原因是什么?

4

1 回答 1

3

错误消息中提到的路径存在三个明显的错误。

~/Hudson/build/workspace/ui-automation/automation\ test\ suite/Logs/Run\ 1/Automation\ Results.plist

那些是:

  1. 当前目录中没有指定~目录。也许你的意思是使用$ENV{HOME}那里的价值?
  2. 磁盘上的任何地方都没有命名目录automation\ test\ suite,但可能有一个名为automation test suite.
  3. 同样,Run\ 1磁盘上的任何地方都没有命名目录,但可能有一个名为Run 1.
于 2012-10-29T05:06:40.623 回答