go-junit-report.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "os"
  6. "github.com/jstemmer/go-junit-report/formatter"
  7. "github.com/jstemmer/go-junit-report/parser"
  8. )
  9. var (
  10. noXMLHeader bool
  11. packageName string
  12. goVersionFlag string
  13. setExitCode bool
  14. )
  15. func init() {
  16. flag.BoolVar(&noXMLHeader, "no-xml-header", false, "do not print xml header")
  17. flag.StringVar(&packageName, "package-name", "", "specify a package name (compiled test have no package name in output)")
  18. flag.StringVar(&goVersionFlag, "go-version", "", "specify the value to use for the go.version property in the generated XML")
  19. flag.BoolVar(&setExitCode, "set-exit-code", false, "set exit code to 1 if tests failed")
  20. }
  21. func main() {
  22. flag.Parse()
  23. if flag.NArg() != 0 {
  24. fmt.Println("go-junit-report does not accept positional arguments")
  25. os.Exit(1)
  26. }
  27. // Read input
  28. report, err := parser.Parse(os.Stdin, packageName)
  29. if err != nil {
  30. fmt.Printf("Error reading input: %s\n", err)
  31. os.Exit(1)
  32. }
  33. // Write xml
  34. err = formatter.JUnitReportXML(report, noXMLHeader, goVersionFlag, os.Stdout)
  35. if err != nil {
  36. fmt.Printf("Error writing XML: %s\n", err)
  37. os.Exit(1)
  38. }
  39. if setExitCode && report.Failures() > 0 {
  40. os.Exit(1)
  41. }
  42. }