---
name: "go-junit-report"
section: "1"
platform: "linux"
package: "go-junit-report"
version: "2.1.0-1.1+b2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/go-junit-report"
---

# go-junit-report(1)

convert Go test output to JUnit XML

## NAME

go-junit-report - convert Go test output to JUnit XML

## SYNOPSIS

**go-junit-report** \[**-in** *file*\] \[**-out** *file*\] \[*options...*\]

**go-junit-report** **-version**

**go-junit-report** **-help**

## DESCRIPTION

**go-junit-report** is a tool that converts **go test** output to a JUnit compatible XML report, suitable for use with applications such as Jenkins or GitLab CI.

By default, **go-junit-report** reads **go test -v** output generated by the standard library testing package from stdin and writes a JUnit XML report to stdout.

Go build and runtime errors are also supported, but this requires that stderr is redirected to **go-junit-report** as well.

Typical use looks like this:

```
    go test -v 2E<gt>&1 ./... | go-junit-report -set-exit-code E<gt> report.xml
```

Alternatively, **go-junit-report** can consume JSON output of **go test**. In this case, stderr still needs to be redirected for build errors to be detected.

```
    go test -json 2E<gt>&1 | go-junit-report -parser gojson E<gt> report.xml
```

The **-iocopy** flag copies stdin directly to stdout, which is useful to still be able to see the **go test** output.

```
    go test -v 2E<gt>&1 ./... | go-junit-report -set-exit-code -iocopy -out report.xml
```

## OPTIONS

- **-in** *file*

  Read the log from file. If not specified, stdin is used.

- **-out** *file*

  Write XML report to file. If not specified, stdout is used.

- **-iocopy**

  Copy input to stdout. Can only be used in conjunction with **-out**. This is useful if you want to see what was sent to **go-junit-report**.

- **-no-xml-header**

  Do not print the XML header.

- **-p** *key***=***value*

  Add a *key*=*value* property to generated report. Repeat this flag to add multiple properties.

- **-package-name** *name*

  Specify a default package name to use if test log does not contain a package name.

- **-parser** *string*

  Set input parser type: **gotest** or **gojson** (default: **gotest**).

- **-set-exit-code**

  Set exit code to 1 if tests failed.

- **-subtest-mode** *mode*

  Set subtest mode: **ignore-parent-results** (subtest parents always pass), **exclude-parents** (subtest parents are excluded from the report).

- **-help**

  Print a summary of command-line options.

- **-version**

  Print the **go-junit-report** version.

- **-debug.print-events**

  print events generated by the go test parser

- **-go-version** *string*

  (deprecated, use **-prop**) the value to use for the go.version property in the generated XML

## EXIT STATUS

If **go-junit-report** encounters an error during its operation, or doesn’t understand its command-line options, 2 is returned.

If the input logs indicate the tests failed, and **-set-exit-code** is specified, 1 is returned.

Otherwise, 0 is returned.

## COPYRIGHT

Copyright (C) 2025 Andrej Shadura.
