Skip to content

Commit 81e5aaa

Browse files
committed
parser/gotest: Make sure every build error is processed
Make sure we don't ignore any build error that did not belong to a package. This isn't expected to normally happen, but we need to handle it anyway to prevent accidentally ignoring potential errors. Refs #145
1 parent cb3436f commit 81e5aaa

File tree

2 files changed

+56
-20
lines changed

2 files changed

+56
-20
lines changed

parser/gotest/report_builder.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,11 @@ func (b *reportBuilder) Build() gtr.Report {
120120
}
121121
b.packages = append(b.packages, b.CreatePackage(name, b.packageName, "", 0, ""))
122122
}
123+
124+
// Create packages for any leftover build errors.
125+
for _, buildErr := range b.buildErrors {
126+
b.packages = append(b.packages, b.CreatePackage("", buildErr.Name, "", 0, ""))
127+
}
123128
return gtr.Report{Packages: b.packages}
124129
}
125130

parser/gotest/report_builder_test.go

Lines changed: 51 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -350,30 +350,61 @@ func TestGroupBenchmarksByName(t *testing.T) {
350350
}
351351
}
352352

353-
func TestReportFailedSummary(t *testing.T) {
354-
events := []Event{
355-
{Type: "summary", Result: "FAIL", Name: "package/name", Duration: 1 * time.Millisecond},
356-
}
357-
want := gtr.Report{
358-
Packages: []gtr.Package{
359-
{
360-
Name: "package/name",
361-
Duration: 1 * time.Millisecond,
362-
Timestamp: testTimestamp,
363-
RunError: gtr.Error{
364-
Name: "package/name",
353+
func TestReportSpecialCases(t *testing.T) {
354+
tests := []struct {
355+
name string
356+
events []Event
357+
want gtr.Report
358+
}{
359+
{
360+
"failed-summary-only",
361+
[]Event{{Type: "summary", Result: "FAIL", Name: "package/name", Duration: 1 * time.Millisecond}},
362+
gtr.Report{
363+
Packages: []gtr.Package{
364+
{
365+
Name: "package/name",
366+
Duration: 1 * time.Millisecond,
367+
Timestamp: testTimestamp,
368+
RunError: gtr.Error{
369+
Name: "package/name",
370+
},
371+
},
372+
},
373+
},
374+
},
375+
{
376+
"leftover-builderror",
377+
[]Event{
378+
{Type: "build_output", Name: "package/name"},
379+
{Type: "output", Data: "error message"},
380+
},
381+
gtr.Report{
382+
Packages: []gtr.Package{
383+
{
384+
Name: "package/name",
385+
Timestamp: testTimestamp,
386+
BuildError: gtr.Error{
387+
ID: 1,
388+
Name: "package/name",
389+
Output: []string{"error message"},
390+
},
391+
},
365392
},
366393
},
367394
},
368395
}
369396

370-
rb := newReportBuilder()
371-
rb.timestampFunc = testTimestampFunc
372-
for _, ev := range events {
373-
rb.ProcessEvent(ev)
374-
}
375-
got := rb.Build()
376-
if diff := cmp.Diff(want, got); diff != "" {
377-
t.Errorf("Incorrect report created, diff (-want, +got):\n%v\n", diff)
397+
for _, test := range tests {
398+
t.Run(test.name, func(t *testing.T) {
399+
rb := newReportBuilder()
400+
rb.timestampFunc = testTimestampFunc
401+
for _, ev := range test.events {
402+
rb.ProcessEvent(ev)
403+
}
404+
got := rb.Build()
405+
if diff := cmp.Diff(test.want, got); diff != "" {
406+
t.Errorf("Incorrect report created, diff (-want, +got):\n%v\n", diff)
407+
}
408+
})
378409
}
379410
}

0 commit comments

Comments
 (0)