logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

TAP::Harness::JUnit - Generate JUnit compatible output from TAP results

Acknowledgements

       This  module was partly inspired by Michael Peters's TAP::Harness::Archive.  It was originally written by
       Lubomir Rintel (GoodData) "<lubo.rintel@gooddata.com>" and includes code from several contributors.

       The  following  people  (in  no  specific  order)  have  reported  problems  or   contributed   code   to
       TAP::Harness::JUnit:

       David Ritter
       Jeff Lavallee
       Andreas Pohl
       Ton Voon
       Kevin Goess
       Richard Huxton
       David E. Wheeler
       Malcolm Parsons
       Finn Smith
       Toby Broyles

Bugs

       The  comments  that  are  above  the "ok" or "not ok" are considered the output of the test. This, though
       being more logical, is against TAP specification.

       XML::Simple is used to generate the output. This is suboptimal and involves some hacks.

       During testing the resulting files are not tested against the schema. This would be a good thing to do.

Contributing

       Source   code   for   TAP::Harness::JUnit   is   kept   in    a    public    Git    repository.     Visit
       <https://github.com/jlavallee/tap-harness-junit>.

       Bug       reports       and       feature       enhancement       requests       are      tracked      at
       <https://rt.cpan.org/Public/Dist/Display.html?Name=TAP-Harness-JUnit>.

Description

       The only difference between this module and TAP::Harness is that this module adds the optional arguments
       'xmlfile', 'package', and 'namemangle' that cause the output to be formatted into XML in a format similar
       to the one that is produced by the JUnit testing framework.

Environment Variables

       The name of the output file can be specified in the $JUNIT_OUTPUT_FILE environment variable

       The package name that Hudson/Jenkins use to categorise test results can be specified in $JUNIT_PACKAGE.

       The  name  mangling  mechanism  used  to  rewrite test names can be specified in $JUNIT_NAME_MANGLE. (See
       namemangle documentation for available values.)

Methods

       This module inherits all functions from TAP::Harness.

   new
       These options are added (compared to TAP::Harness):

       xmlfile
           Name  of  the  file  XML  output  will  be  saved  to.  If  this  argument is omitted, the default of
           "junit_output.xml" is used and a warning is issued.

           Alternatively, the name of the output file can be specified  in  the  $JUNIT_OUTPUT_FILE  environment
           variable

       package
           The Hudson/Jenkins continuous-integration systems support separating test results into "packages". By
           default any number of output xml files will be merged into the default package "(root)".

           Setting  a  package  name will place all test results from the current run into that package. You can
           also set the environment variable $JUNIT_PACKAGE to do the same.

       notimes (DEPRECATED)
           If provided (and true), test case times will not be recorded.

       namemangle
           Specify how to mangle testcase names. This  is  sometimes  required  to  interact  with  buggy  JUnit
           consumers that lack sufficient validation.

           Alternatively, this value can be set in the environment variable $JUNIT_NAME_MANGLE.

           Available values are:

           hudson
               Replace  anything  but alphanumeric characters with underscores. This is the default for historic
               reasons.

           perl (RECOMMENDED)
               Replace slashes in the directory hierarchy with dots so that the filesystem  layout  resembles  a
               Java class hierarchy.

               This is the recommended setting and may become the default in future.

           none
               Do not perform any transformations.

Name

       TAP::Harness::JUnit - Generate JUnit compatible output from TAP results

See Also

TAP::Formatter::JUnit at <https://metacpan.org/pod/TAP::Formatter::JUnit>

       The            JUnit            XML            schema            was            obtained             from
       <http://jra1mw.cvs.cern.ch:8180/cgi-bin/jra1mw.cgi/org.glite.testing.unit/config/JUnitXSchema.xsd?view=markup>.

Synopsis

           use TAP::Harness::JUnit;
           my $harness = TAP::Harness::JUnit->new({
               xmlfile => 'output.xml',
               package => 'database',
               # ...
           });
           $harness->runtests(@tests);

See Also