diff options
| author | Taras Madan <tarasmadan@google.com> | 2024-12-20 20:10:53 +0100 |
|---|---|---|
| committer | Taras Madan <tarasmadan@google.com> | 2024-12-22 07:34:28 +0000 |
| commit | b4fbdbd43bfd6a8d0392238f019dc602335346d0 (patch) | |
| tree | 780a550e20cac1441a7687d7c5f61816dc603d53 | |
| parent | d7f584ee3c24504bb07d04526a23b7d8df38b8ed (diff) | |
pkg/covermerger: more tests
| -rw-r--r-- | pkg/covermerger/covermerger_test.go | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/pkg/covermerger/covermerger_test.go b/pkg/covermerger/covermerger_test.go index 3d1b2d71a..36f42fdc1 100644 --- a/pkg/covermerger/covermerger_test.go +++ b/pkg/covermerger/covermerger_test.go @@ -10,6 +10,7 @@ import ( "io" "os" "path/filepath" + "sort" "strings" "testing" "time" @@ -72,6 +73,105 @@ func TestMergeCSVWriteJSONL_and_coveragedb_SaveMergeResult(t *testing.T) { assert.NoError(t, eg.Wait()) } +func TestMergerdCoverageRecords(t *testing.T) { + tests := []struct { + name string + input *FileMergeResult + wantRecords []*coveragedb.MergedCoverageRecord + }{ + { + name: "file doesn't exist", + input: &FileMergeResult{ + FilePath: "deleted.c", + MergeResult: &MergeResult{ + FileExists: false, + }, + }, + wantRecords: nil, + }, + { + name: "two managers merge", + input: &FileMergeResult{ + FilePath: "file.c", + MergeResult: &MergeResult{ + FileExists: true, + HitCounts: map[int]int{ + 1: 5, + 2: 7, + }, + LineDetails: map[int][]*FileRecord{ + 1: { + { + FilePath: "file.c", + RepoCommit: RepoCommit{ + Repo: "repo1", + Commit: "commit1", + }, + StartLine: 10, + HitCount: 5, + Manager: "manager1", + }, + }, + 2: { + { + FilePath: "file.c", + RepoCommit: RepoCommit{ + Repo: "repo2", + Commit: "commit2", + }, + StartLine: 20, + HitCount: 7, + Manager: "manager2", + }, + }, + }, + }, + }, + wantRecords: []*coveragedb.MergedCoverageRecord{ + { + Manager: "*", + FilePath: "file.c", + FileData: &coveragedb.Coverage{ + Instrumented: 2, + Covered: 2, + LinesInstrumented: []int64{1, 2}, + HitCounts: []int64{5, 7}, + }, + }, + { + Manager: "manager1", + FilePath: "file.c", + FileData: &coveragedb.Coverage{ + Instrumented: 1, + Covered: 1, + LinesInstrumented: []int64{1}, + HitCounts: []int64{5}, + }, + }, + { + Manager: "manager2", + FilePath: "file.c", + FileData: &coveragedb.Coverage{ + Instrumented: 1, + Covered: 1, + LinesInstrumented: []int64{2}, + HitCounts: []int64{7}, + }, + }, + }, + }, + } + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + gotRecords := mergedCoverageRecords(test.input) + sort.Slice(gotRecords, func(i, j int) bool { + return gotRecords[i].Manager < gotRecords[j].Manager + }) + assert.Equal(t, test.wantRecords, gotRecords, "records are not equal") + }) + } +} + // nolint: lll func TestAggregateStreamData(t *testing.T) { type Test struct { |
