2012-02-12 7 views
24

Busco un módulo perl para convertir la salida CppUnit al formato TAP. Deseo usar el comando probar después para ejecutar y verificar las pruebas.CppUnit salida al convertidor de formato TAP

+16

No sé nada de trabajo, pero CPPUnit parece estar utilizando JUnit de salida XML. Puede tener más suerte buscando un convertidor de JUnit a TAP. De lo contrario, la mejor opción podría ser escribir un [complemento CppUnit] (http://cppunit.sourceforge.net/doc/lastest/class_plug_in_manager.html) que emita TAP directamente en lugar de realizar una conversión. – Schwern

+1

Deberías mirar TAP :: Harness :: JUnit, su código puede ayudarte a escribir el convertidor inverso (que no parece existir). –

Respuesta

2

Recientemente estaba haciendo algunas conversiones desde junit xml (aunque no a formato TAP). Fue muy fácil de hacer usando el módulo XML :: Twig. código debería tener este aspecto:

use XML::Twig; 

my %hash; 

my $twig = XML::Twig->new(
    twig_handlers => { 
     testcase => sub { # this gets called per each testcase in XML 
      my ($t, $e) = @_; 
      my $testcase = $e->att("name"); 
      my $error = $e->field("error") || $e->field("failure"); 
      my $ok = defined $error ? "not ok" : "ok"; 
      # you may want to collect 
      # testcase name, result, error message, etc into hash 
      $hash{$testcase}{result} = $ok; 
      $hash{$testcase}{error} = $error; 
      # ... 
     } 
    } 
); 
$twig->parsefile("test.xml"); 
$twig->purge(); 

# Now XML processing is done, print hash out in TAP format: 
print "1..", scalar(keys(%hash)), "\n"; 
foreach my $testcase (keys %hash) { 
    # print out testcase result using info from hash 
    # don't forget to add leading space for errors 
    # ... 
} 

Esto debería ser relativamente fácil de pulir en estado