Skip to content

Commit 1807089

Browse files
committed
dashboard/app: looking for the unique coverage, hide record with zero hitcount
1 parent 2bf6861 commit 1807089

File tree

2 files changed

+45
-15
lines changed

2 files changed

+45
-15
lines changed

pkg/cover/heatmap.go

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,19 @@ func (thm *templateHeatmapRow) addParts(depth int, pathLeft []string, filePath s
7171
thm.builder[nextElement].addParts(depth+1, pathLeft[1:], filePath, instrumented, covered, timePeriod)
7272
}
7373

74-
func (thm *templateHeatmapRow) prepareDataFor(pageColumns []pageColumnTarget) {
75-
thm.Items = maps.Values(thm.builder)
74+
func (thm *templateHeatmapRow) prepareDataFor(pageColumns []pageColumnTarget, skipEmpty bool) {
75+
for _, item := range thm.builder {
76+
if !skipEmpty {
77+
thm.Items = append(thm.Items, item)
78+
continue
79+
}
80+
for _, hitCount := range item.covered {
81+
if hitCount > 0 {
82+
thm.Items = append(thm.Items, item)
83+
break
84+
}
85+
}
86+
}
7687
sort.Slice(thm.Items, func(i, j int) bool {
7788
if thm.Items[i].IsDir != thm.Items[j].IsDir {
7889
return thm.Items[i].IsDir
@@ -102,7 +113,7 @@ func (thm *templateHeatmapRow) prepareDataFor(pageColumns []pageColumnTarget) {
102113
thm.LastDayInstrumented = thm.instrumented[lastDate]
103114
}
104115
for _, item := range thm.builder {
105-
item.prepareDataFor(pageColumns)
116+
item.prepareDataFor(pageColumns, skipEmpty)
106117
}
107118
}
108119

@@ -131,7 +142,7 @@ type pageColumnTarget struct {
131142
Commit string
132143
}
133144

134-
func filesCoverageToTemplateData(fCov []*fileCoverageWithDetails) *templateHeatmap {
145+
func filesCoverageToTemplateData(fCov []*fileCoverageWithDetails, hideEmpty bool) *templateHeatmap {
135146
res := templateHeatmap{
136147
Root: &templateHeatmapRow{
137148
IsDir: true,
@@ -164,7 +175,7 @@ func filesCoverageToTemplateData(fCov []*fileCoverageWithDetails) *templateHeatm
164175
res.Periods = append(res.Periods, fmt.Sprintf("%s(%d)", tp.DateTo.String(), tp.Days))
165176
}
166177

167-
res.Root.prepareDataFor(targetDateAndCommits)
178+
res.Root.prepareDataFor(targetDateAndCommits, hideEmpty)
168179
return &res
169180
}
170181

@@ -403,7 +414,7 @@ func DoHeatMapStyleBodyJS(
403414
if err != nil {
404415
return "", "", "", fmt.Errorf("failed to filesCoverageWithDetails: %w", err)
405416
}
406-
templData := filesCoverageToTemplateData(covAndDates)
417+
templData := filesCoverageToTemplateData(covAndDates, onlyUnique)
407418
templData.Subsystems = sss
408419
templData.Managers = managers
409420
return stylesBodyJSTemplate(templData)
@@ -430,7 +441,7 @@ func DoSubsystemsHeatMapStyleBodyJS(
430441
ssCovAndDates = append(ssCovAndDates, &newRecord)
431442
}
432443
}
433-
templData := filesCoverageToTemplateData(ssCovAndDates)
444+
templData := filesCoverageToTemplateData(ssCovAndDates, onlyUnique)
434445
templData.Managers = managers
435446
return stylesBodyJSTemplate(templData)
436447
}

pkg/cover/heatmap_test.go

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -254,16 +254,16 @@ func newRowIteratorMock(t *testing.T, events []*FileCoverageWithLineInfo,
254254

255255
func TestFilesCoverageToTemplateData(t *testing.T) {
256256
tests := []struct {
257-
name string
258-
input []*fileCoverageWithDetails
259-
want *templateHeatmap
257+
name string
258+
input []*fileCoverageWithDetails
259+
hideEmpty bool
260+
want *templateHeatmap
260261
}{
261262
{
262263
name: "empty input",
263264
input: []*fileCoverageWithDetails{},
264265
want: &templateHeatmap{
265266
Root: &templateHeatmapRow{
266-
Items: []*templateHeatmapRow{},
267267
IsDir: true,
268268
},
269269
},
@@ -283,7 +283,6 @@ func TestFilesCoverageToTemplateData(t *testing.T) {
283283
Root: &templateHeatmapRow{
284284
Items: []*templateHeatmapRow{
285285
{
286-
Items: []*templateHeatmapRow{},
287286
Name: "file1",
288287
Coverage: []int64{100},
289288
IsDir: false,
@@ -332,7 +331,6 @@ func TestFilesCoverageToTemplateData(t *testing.T) {
332331
{
333332
Items: []*templateHeatmapRow{
334333
{
335-
Items: []*templateHeatmapRow{},
336334
Name: "file1",
337335
Coverage: []int64{100, 0},
338336
IsDir: false,
@@ -347,7 +345,6 @@ func TestFilesCoverageToTemplateData(t *testing.T) {
347345
"/graph/coverage/file?dateto=2024-07-02&period=day&commit=commit2&filepath=dir/file1"},
348346
},
349347
{
350-
Items: []*templateHeatmapRow{},
351348
Name: "file2",
352349
Coverage: []int64{0, 0},
353350
IsDir: false,
@@ -385,10 +382,32 @@ func TestFilesCoverageToTemplateData(t *testing.T) {
385382
Periods: []string{"2024-07-01(1)", "2024-07-02(1)"},
386383
},
387384
},
385+
{
386+
name: "hide empty",
387+
hideEmpty: true,
388+
input: []*fileCoverageWithDetails{
389+
{
390+
Filepath: "file1",
391+
Instrumented: 1,
392+
Covered: 0,
393+
TimePeriod: makeTimePeriod(t, civil.Date{Year: 2024, Month: time.July, Day: 1}, coveragedb.DayPeriod),
394+
Commit: "commit1",
395+
},
396+
},
397+
want: &templateHeatmap{
398+
Root: &templateHeatmapRow{
399+
Coverage: []int64{0},
400+
IsDir: true,
401+
LastDayInstrumented: 1,
402+
Tooltips: []string{"Instrumented:\t1 blocks\nCovered:\t0 blocks"},
403+
},
404+
Periods: []string{"2024-07-01(1)"},
405+
},
406+
},
388407
}
389408
for _, test := range tests {
390409
t.Run(test.name, func(t *testing.T) {
391-
got := filesCoverageToTemplateData(test.input)
410+
got := filesCoverageToTemplateData(test.input, test.hideEmpty)
392411
assert.EqualExportedValues(t, test.want, got)
393412
})
394413
}

0 commit comments

Comments
 (0)