mirror of
https://github.com/jstemmer/go-junit-report.git
synced 2025-07-03 12:42:47 -05:00
Merge branch 'jstemmer:master' into master
This commit is contained in:
@ -120,6 +120,11 @@ func (b *reportBuilder) Build() gtr.Report {
|
||||
}
|
||||
b.packages = append(b.packages, b.CreatePackage(name, b.packageName, "", 0, ""))
|
||||
}
|
||||
|
||||
// Create packages for any leftover build errors.
|
||||
for _, buildErr := range b.buildErrors {
|
||||
b.packages = append(b.packages, b.CreatePackage("", buildErr.Name, "", 0, ""))
|
||||
}
|
||||
return gtr.Report{Packages: b.packages}
|
||||
}
|
||||
|
||||
@ -145,7 +150,7 @@ func (b *reportBuilder) CreatePackage(packageName, newPackageName, result string
|
||||
// First check if this package contained a build error. If that's the case,
|
||||
// we won't find any tests in this package.
|
||||
for id, buildErr := range b.buildErrors {
|
||||
if buildErr.Name == newPackageName {
|
||||
if buildErr.Name == newPackageName || strings.TrimSuffix(buildErr.Name, "_test") == newPackageName {
|
||||
pkg.BuildError = buildErr
|
||||
pkg.BuildError.ID = id
|
||||
pkg.BuildError.Duration = duration
|
||||
@ -164,7 +169,16 @@ func (b *reportBuilder) CreatePackage(packageName, newPackageName, result string
|
||||
delete(b.packageBuilders, packageName)
|
||||
pb.output.SetActiveID(0)
|
||||
|
||||
// If the packageBuilder is empty, we never received any events for this
|
||||
// package so there's no need to continue.
|
||||
if pb.IsEmpty() {
|
||||
// However, we should at least report an error if the result says we
|
||||
// failed.
|
||||
if parseResult(result) == gtr.Fail {
|
||||
pkg.RunError = gtr.Error{
|
||||
Name: newPackageName,
|
||||
}
|
||||
}
|
||||
return pkg
|
||||
}
|
||||
|
||||
|
@ -121,7 +121,7 @@ func TestReport(t *testing.T) {
|
||||
}
|
||||
got := rb.Build()
|
||||
if diff := cmp.Diff(want, got); diff != "" {
|
||||
t.Errorf("FromEvents report incorrect, diff (-want, +got):\n%v", diff)
|
||||
t.Errorf("Incorrect report created, diff (-want, +got):\n%v", diff)
|
||||
}
|
||||
}
|
||||
|
||||
@ -181,7 +181,7 @@ func TestBuildReportMultiplePackages(t *testing.T) {
|
||||
}
|
||||
got := rb.Build()
|
||||
if diff := cmp.Diff(want, got); diff != "" {
|
||||
t.Errorf("FromEvents report incorrect, diff (-want, +got):\n%v", diff)
|
||||
t.Errorf("Incorrect report created, diff (-want, +got):\n%v", diff)
|
||||
}
|
||||
}
|
||||
|
||||
@ -349,3 +349,82 @@ func TestGroupBenchmarksByName(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestReportSpecialCases(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
events []Event
|
||||
want gtr.Report
|
||||
}{
|
||||
{
|
||||
"failed-summary-only",
|
||||
[]Event{{Type: "summary", Result: "FAIL", Name: "package/name", Duration: 1 * time.Millisecond}},
|
||||
gtr.Report{
|
||||
Packages: []gtr.Package{
|
||||
{
|
||||
Name: "package/name",
|
||||
Duration: 1 * time.Millisecond,
|
||||
Timestamp: testTimestamp,
|
||||
RunError: gtr.Error{
|
||||
Name: "package/name",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"leftover-builderror",
|
||||
[]Event{
|
||||
{Type: "build_output", Name: "package/name"},
|
||||
{Type: "output", Data: "error message"},
|
||||
},
|
||||
gtr.Report{
|
||||
Packages: []gtr.Package{
|
||||
{
|
||||
Name: "package/name",
|
||||
Timestamp: testTimestamp,
|
||||
BuildError: gtr.Error{
|
||||
ID: 1,
|
||||
Name: "package/name",
|
||||
Output: []string{"error message"},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"build error in package with _test suffix",
|
||||
[]Event{
|
||||
{Type: "build_output", Name: "package/name_test"},
|
||||
{Type: "summary", Name: "package/name", Result: "FAIL", Data: "[build failed]"},
|
||||
},
|
||||
gtr.Report{
|
||||
Packages: []gtr.Package{
|
||||
{
|
||||
Name: "package/name",
|
||||
Timestamp: testTimestamp,
|
||||
BuildError: gtr.Error{
|
||||
ID: 1,
|
||||
Name: "package/name_test",
|
||||
Cause: "[build failed]",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
rb := newReportBuilder()
|
||||
rb.timestampFunc = testTimestampFunc
|
||||
for _, ev := range test.events {
|
||||
rb.ProcessEvent(ev)
|
||||
}
|
||||
got := rb.Build()
|
||||
if diff := cmp.Diff(test.want, got); diff != "" {
|
||||
t.Errorf("Incorrect report created, diff (-want, +got):\n%v\n", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user