now writing each TestSuite to a separate file

This commit is contained in:
Erik Brakkee 2024-11-20 22:15:44 +01:00
parent d97ffd7fea
commit 220b73dc49
2 changed files with 28 additions and 18 deletions

View File

@ -6,6 +6,7 @@ import (
"encoding/xml" "encoding/xml"
"fmt" "fmt"
"os" "os"
"path/filepath"
) )
func main() { func main() {
@ -64,21 +65,17 @@ func main() {
testsuites := Testsuites{} testsuites := Testsuites{}
if len(os.Args) != 2 { if len(os.Args) != 2 {
fmt.Fprintf(os.Stderr, "Usage: go2junit <gotest.json>\n") fmt.Fprintf(os.Stderr, "Usage: go2junit <outputdir>\n")
os.Exit(1) os.Exit(1)
} }
filename := os.Args[1] path := os.Args[1]
var file *os.File path = filepath.Clean(path)
if filename != "-" { err := os.MkdirAll(path, 0755)
file2, err := os.Open(filename)
file = file2
if err != nil { if err != nil {
panic(err) panic(err)
} }
defer file.Close()
} else { var file = os.Stdin
file = os.Stdin
}
scanner := bufio.NewScanner(file) scanner := bufio.NewScanner(file)
lineno := 0 lineno := 0
@ -102,7 +99,7 @@ func main() {
testsuites.Test(item.Time, item.Package, item.Test) testsuites.Test(item.Time, item.Package, item.Test)
case "output": case "output":
testsuites.Output(item.Time, item.Package, item.Test, item.Output) testsuites.Output(item.Time, item.Package, item.Test, item.Output)
fmt.Fprintf(os.Stderr, "%s", item.Output) fmt.Printf("%s", item.Output)
case "pause": case "pause":
testsuites.Output(item.Time, item.Package, item.Test, "PAUSED") testsuites.Output(item.Time, item.Package, item.Test, "PAUSED")
case "cont": case "cont":
@ -119,9 +116,22 @@ func main() {
} }
testsuites.Complete() testsuites.Complete()
xml, err := xml.MarshalIndent(testsuites, "", " ") for _, suite := range testsuites.Suites {
xml, err := xml.MarshalIndent(suite, "", " ")
if err != nil { if err != nil {
panic(err) panic(err)
} }
fmt.Printf("%s", xml) fname := path + "/" + suite.Name + ".xml"
dir := filepath.Dir(fname)
err = os.MkdirAll(dir, 0755)
if err != nil {
panic(err)
}
fmt.Fprintf(os.Stderr, "Writing %s\n", fname)
err = os.WriteFile(fname, xml, 0644)
if err != nil {
panic(err)
}
}
} }

View File

@ -8,7 +8,7 @@ import (
) )
type Testsuites struct { type Testsuites struct {
XMLName xml.Name `xml:"testsuite"` XMLName xml.Name `xml:"testsuites"`
Tests int `xml:"tests,attr"` Tests int `xml:"tests,attr"`
Failures int `xml:"failures,attr"` Failures int `xml:"failures,attr"`