Skip to content

Commit af3c962

Browse files
committed
pkg/covermerger: more tests
1 parent d7f584e commit af3c962

File tree

1 file changed

+100
-0
lines changed

1 file changed

+100
-0
lines changed

pkg/covermerger/covermerger_test.go

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"io"
1111
"os"
1212
"path/filepath"
13+
"sort"
1314
"strings"
1415
"testing"
1516
"time"
@@ -72,6 +73,105 @@ func TestMergeCSVWriteJSONL_and_coveragedb_SaveMergeResult(t *testing.T) {
7273
assert.NoError(t, eg.Wait())
7374
}
7475

76+
func TestMergerdCoverageRecords(t *testing.T) {
77+
tests := []struct {
78+
name string
79+
input *FileMergeResult
80+
wantRecords []*coveragedb.MergedCoverageRecord
81+
}{
82+
{
83+
name: "file doesn't exist",
84+
input: &FileMergeResult{
85+
FilePath: "deleted.c",
86+
MergeResult: &MergeResult{
87+
FileExists: false,
88+
},
89+
},
90+
wantRecords: nil,
91+
},
92+
{
93+
name: "two managers merge",
94+
input: &FileMergeResult{
95+
FilePath: "file.c",
96+
MergeResult: &MergeResult{
97+
FileExists: true,
98+
HitCounts: map[int]int{
99+
1: 5,
100+
2: 7,
101+
},
102+
LineDetails: map[int][]*FileRecord{
103+
1: {
104+
{
105+
FilePath: "file.c",
106+
RepoCommit: RepoCommit{
107+
Repo: "repo1",
108+
Commit: "commit1",
109+
},
110+
StartLine: 10,
111+
HitCount: 5,
112+
Manager: "manager1",
113+
},
114+
},
115+
2: {
116+
{
117+
FilePath: "file.c",
118+
RepoCommit: RepoCommit{
119+
Repo: "repo2",
120+
Commit: "commit2",
121+
},
122+
StartLine: 20,
123+
HitCount: 7,
124+
Manager: "manager2",
125+
},
126+
},
127+
},
128+
},
129+
},
130+
wantRecords: []*coveragedb.MergedCoverageRecord{
131+
{
132+
Manager: "*",
133+
FilePath: "file.c",
134+
FileData: &coveragedb.Coverage{
135+
Instrumented: 2,
136+
Covered: 2,
137+
LinesInstrumented: []int64{1, 2},
138+
HitCounts: []int64{5, 7},
139+
},
140+
},
141+
{
142+
Manager: "manager1",
143+
FilePath: "file.c",
144+
FileData: &coveragedb.Coverage{
145+
Instrumented: 1,
146+
Covered: 1,
147+
LinesInstrumented: []int64{1},
148+
HitCounts: []int64{5},
149+
},
150+
},
151+
{
152+
Manager: "manager2",
153+
FilePath: "file.c",
154+
FileData: &coveragedb.Coverage{
155+
Instrumented: 1,
156+
Covered: 1,
157+
LinesInstrumented: []int64{2},
158+
HitCounts: []int64{7},
159+
},
160+
},
161+
},
162+
},
163+
}
164+
for _, test := range tests {
165+
t.Run(test.name, func(t *testing.T) {
166+
gotRecords := mergedCoverageRecords(test.input)
167+
sort.Slice(gotRecords, func(i, j int) bool {
168+
return gotRecords[i].Manager < gotRecords[j].Manager
169+
})
170+
assert.Equal(t, test.wantRecords, gotRecords, "records are not equal")
171+
})
172+
}
173+
}
174+
75175
// nolint: lll
76176
func TestAggregateStreamData(t *testing.T) {
77177
type Test struct {

0 commit comments

Comments
 (0)