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