junitreport
junitreport
is a tool that allows for the consumption of test output in order to create jUnit XML.
Installation
In order to build and install junitreport
, from the root of the OpenShift Origin repository, run hack/build-go.sh tools/junitreport
.
Usage
junitreport
can read the output of different types of tests. Specify which output is being read with --type=<type>
. Supported test output types currently include 'gotest'
, for go test
output. The default test type is 'gotest'
.
junitreport
can output flat or nested test suites. To choose which type of output to use, set --suites=<type>
to either 'flat'
or 'nested'
. The default suite output structure is 'flat'
. When creating nested test suites, junitreport
will use /
as the delimeter between suite names: github.com/maintainer/repository/suite
will be parsed as a hierarchy of github.com
, github.com/maintainer
, etc. If you are requesting nested test suite output but do not want the root suite(s) to be as general as github.com
, for example, set --roots=<root suite names>
to be a comma-delimited list of the names of the suites you wish to use as roots. If the parser encounters a package outside of those roots, it will ignore it. This allows a user to provide a root suite and only collect data for children of that root from a larger data set.
Ensure that the output you are feeding junitreport
is free of extraneous text - any lines that are not test/suite declarations, metadata, or results are interpreted as test output. Text that you do not expect to see in Jenkins, for example, while looking at the output of a failed test should not be included in the input to junitreport
.
Currently, junitreport
does not support the parsing of parallel test output.
Examples
To parse the output of go test
into a flat collection of test suites:
$ go test -v -cover ./... | junitreport > report.xml
To parse the output of go test
into a nested collection of test suites rooted at github.com/maintainer
:
$ go test -v -cover ./... | junitreport --suites=nested --roots=github.com/maintainer > report.xml
Testing
junitreport
has unit tests as well as integration tests. To run the unit tests from the junitreport
root directory:
$ go test -v -cover ./...
To run the integration tests from the junitreport
root directory:
$ test/integration.sh