aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorTaras Madan <tarasmadan@google.com>2025-01-24 18:12:48 +0100
committerTaras Madan <tarasmadan@google.com>2025-01-27 10:05:21 +0000
commit180708967e9f2cb26bc15973d46e3cd9cf3d2d80 (patch)
tree658628ba062b4d5a95f1b7186404ae91961561c1 /pkg
parent2bf68614de1620ef12f086d9e86d5c8b334bf32d (diff)
dashboard/app: looking for the unique coverage, hide record with zero hitcount
Diffstat (limited to 'pkg')
-rw-r--r--pkg/cover/heatmap.go25
-rw-r--r--pkg/cover/heatmap_test.go35
2 files changed, 45 insertions, 15 deletions
diff --git a/pkg/cover/heatmap.go b/pkg/cover/heatmap.go
index 4cc212fad..ce98113cf 100644
--- a/pkg/cover/heatmap.go
+++ b/pkg/cover/heatmap.go
@@ -71,8 +71,19 @@ func (thm *templateHeatmapRow) addParts(depth int, pathLeft []string, filePath s
thm.builder[nextElement].addParts(depth+1, pathLeft[1:], filePath, instrumented, covered, timePeriod)
}
-func (thm *templateHeatmapRow) prepareDataFor(pageColumns []pageColumnTarget) {
- thm.Items = maps.Values(thm.builder)
+func (thm *templateHeatmapRow) prepareDataFor(pageColumns []pageColumnTarget, skipEmpty bool) {
+ for _, item := range thm.builder {
+ if !skipEmpty {
+ thm.Items = append(thm.Items, item)
+ continue
+ }
+ for _, hitCount := range item.covered {
+ if hitCount > 0 {
+ thm.Items = append(thm.Items, item)
+ break
+ }
+ }
+ }
sort.Slice(thm.Items, func(i, j int) bool {
if thm.Items[i].IsDir != thm.Items[j].IsDir {
return thm.Items[i].IsDir
@@ -102,7 +113,7 @@ func (thm *templateHeatmapRow) prepareDataFor(pageColumns []pageColumnTarget) {
thm.LastDayInstrumented = thm.instrumented[lastDate]
}
for _, item := range thm.builder {
- item.prepareDataFor(pageColumns)
+ item.prepareDataFor(pageColumns, skipEmpty)
}
}
@@ -131,7 +142,7 @@ type pageColumnTarget struct {
Commit string
}
-func filesCoverageToTemplateData(fCov []*fileCoverageWithDetails) *templateHeatmap {
+func filesCoverageToTemplateData(fCov []*fileCoverageWithDetails, hideEmpty bool) *templateHeatmap {
res := templateHeatmap{
Root: &templateHeatmapRow{
IsDir: true,
@@ -164,7 +175,7 @@ func filesCoverageToTemplateData(fCov []*fileCoverageWithDetails) *templateHeatm
res.Periods = append(res.Periods, fmt.Sprintf("%s(%d)", tp.DateTo.String(), tp.Days))
}
- res.Root.prepareDataFor(targetDateAndCommits)
+ res.Root.prepareDataFor(targetDateAndCommits, hideEmpty)
return &res
}
@@ -403,7 +414,7 @@ func DoHeatMapStyleBodyJS(
if err != nil {
return "", "", "", fmt.Errorf("failed to filesCoverageWithDetails: %w", err)
}
- templData := filesCoverageToTemplateData(covAndDates)
+ templData := filesCoverageToTemplateData(covAndDates, onlyUnique)
templData.Subsystems = sss
templData.Managers = managers
return stylesBodyJSTemplate(templData)
@@ -430,7 +441,7 @@ func DoSubsystemsHeatMapStyleBodyJS(
ssCovAndDates = append(ssCovAndDates, &newRecord)
}
}
- templData := filesCoverageToTemplateData(ssCovAndDates)
+ templData := filesCoverageToTemplateData(ssCovAndDates, onlyUnique)
templData.Managers = managers
return stylesBodyJSTemplate(templData)
}
diff --git a/pkg/cover/heatmap_test.go b/pkg/cover/heatmap_test.go
index 0f66256e4..3a90dba10 100644
--- a/pkg/cover/heatmap_test.go
+++ b/pkg/cover/heatmap_test.go
@@ -254,16 +254,16 @@ func newRowIteratorMock(t *testing.T, events []*FileCoverageWithLineInfo,
func TestFilesCoverageToTemplateData(t *testing.T) {
tests := []struct {
- name string
- input []*fileCoverageWithDetails
- want *templateHeatmap
+ name string
+ input []*fileCoverageWithDetails
+ hideEmpty bool
+ want *templateHeatmap
}{
{
name: "empty input",
input: []*fileCoverageWithDetails{},
want: &templateHeatmap{
Root: &templateHeatmapRow{
- Items: []*templateHeatmapRow{},
IsDir: true,
},
},
@@ -283,7 +283,6 @@ func TestFilesCoverageToTemplateData(t *testing.T) {
Root: &templateHeatmapRow{
Items: []*templateHeatmapRow{
{
- Items: []*templateHeatmapRow{},
Name: "file1",
Coverage: []int64{100},
IsDir: false,
@@ -332,7 +331,6 @@ func TestFilesCoverageToTemplateData(t *testing.T) {
{
Items: []*templateHeatmapRow{
{
- Items: []*templateHeatmapRow{},
Name: "file1",
Coverage: []int64{100, 0},
IsDir: false,
@@ -347,7 +345,6 @@ func TestFilesCoverageToTemplateData(t *testing.T) {
"/graph/coverage/file?dateto=2024-07-02&period=day&commit=commit2&filepath=dir/file1"},
},
{
- Items: []*templateHeatmapRow{},
Name: "file2",
Coverage: []int64{0, 0},
IsDir: false,
@@ -385,10 +382,32 @@ func TestFilesCoverageToTemplateData(t *testing.T) {
Periods: []string{"2024-07-01(1)", "2024-07-02(1)"},
},
},
+ {
+ name: "hide empty",
+ hideEmpty: true,
+ input: []*fileCoverageWithDetails{
+ {
+ Filepath: "file1",
+ Instrumented: 1,
+ Covered: 0,
+ TimePeriod: makeTimePeriod(t, civil.Date{Year: 2024, Month: time.July, Day: 1}, coveragedb.DayPeriod),
+ Commit: "commit1",
+ },
+ },
+ want: &templateHeatmap{
+ Root: &templateHeatmapRow{
+ Coverage: []int64{0},
+ IsDir: true,
+ LastDayInstrumented: 1,
+ Tooltips: []string{"Instrumented:\t1 blocks\nCovered:\t0 blocks"},
+ },
+ Periods: []string{"2024-07-01(1)"},
+ },
+ },
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
- got := filesCoverageToTemplateData(test.input)
+ got := filesCoverageToTemplateData(test.input, test.hideEmpty)
assert.EqualExportedValues(t, test.want, got)
})
}