2012-10-29 5 views
1

Я пытаюсь преобразовать файлы plist в XML-стиль JUnit. У меня есть таблица стилей xsl, которая преобразует plist в JUnit/ANT XML.Не удалось открыть файл perl

Вот Perl код, который я бегу, чтобы преобразовать PLIST в XML:

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++; 
} 

После запуска скрипта PERL на Hudson/Jenkins, он выводит сообщение об ошибке:

не мог» т открытым ~/Hudson/сборки/рабочее пространство/UI-автоматизация/автоматизация \ тест \ люкс/Logs/Run \ 1/Автоматизация \ Results.plist: Нет такого файл или каталог

Ошибка вызвана my $source = $parser->parse_file($path2plist); в коде. Я не могу понять, почему он не может найти/прочитать файл.

Кто-нибудь знает, что может вызвать ошибку?

+0

Действительно? С именем файла, например '~/Hudson/build/workspace/ui-automation/automation \ test \ suite/Logs/Run \ 1/Automation \ Results.plist:' вы не можете понять, почему он не может найти файл ? – friedo

+0

@friedo Что? он не может взять путь к файлу ??? – stackErr

+0

@friedo Я не уверен, что вы подразумеваете под своим комментарием, можете ли вы объяснить? – stackErr

ответ

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.
+0

Ничего себе, я чувствую себя глупо сейчас! – stackErr

+0

Escaping используется при вставке одной вещи в другую. У вас было два уровня экранирования, но только один уровень внедрения (строка в исходном коде Perl). – ikegami

Смежные вопросы