func main() { flag.Parse() // Read input report, err := parser.Parse(os.Stdin, packageName) if err != nil { fmt.Printf("Error reading input: %s\n", err) os.Exit(1) } // Write xml err = JUnitReportXML(report, noXMLHeader, os.Stdout) if err != nil { fmt.Printf("Error writing XML: %s\n", err) os.Exit(1) } if setExitCode && report.Failures() > 0 { os.Exit(1) } }
func TestParser(t *testing.T) { for _, testCase := range testCases { t.Logf("Running: %s", testCase.name) file, err := os.Open("tests/" + testCase.name) if err != nil { t.Fatal(err) } report, err := parser.Parse(file, testCase.packageName) if err != nil { t.Fatalf("error parsing: %s", err) } if report == nil { t.Fatalf("Report == nil") } expected := testCase.report if len(report.Packages) != len(expected.Packages) { t.Fatalf("Report packages == %d, want %d", len(report.Packages), len(expected.Packages)) } for i, pkg := range report.Packages { expPkg := expected.Packages[i] if pkg.Name != expPkg.Name { t.Errorf("Package.Name == %s, want %s", pkg.Name, expPkg.Name) } if pkg.Time != expPkg.Time { t.Errorf("Package.Time == %d, want %d", pkg.Time, expPkg.Time) } if len(pkg.Tests) != len(expPkg.Tests) { t.Fatalf("Package Tests == %d, want %d", len(pkg.Tests), len(expPkg.Tests)) } for j, test := range pkg.Tests { expTest := expPkg.Tests[j] if test.Name != expTest.Name { t.Errorf("Test.Name == %s, want %s", test.Name, expTest.Name) } if test.Time != expTest.Time { t.Errorf("Test.Time == %d, want %d", test.Time, expTest.Time) } if test.Result != expTest.Result { t.Errorf("Test.Result == %d, want %d", test.Result, expTest.Result) } testOutput := strings.Join(test.Output, "\n") expTestOutput := strings.Join(expTest.Output, "\n") if testOutput != expTestOutput { t.Errorf("Test.Output (%s) ==\n%s\n, want\n%s", test.Name, testOutput, expTestOutput) } } if pkg.CoveragePct != expPkg.CoveragePct { t.Errorf("Package.CoveragePct == %s, want %s", pkg.CoveragePct, expPkg.CoveragePct) } } } }