1package bzltestutil 2 3import ( 4 "strings" 5 "testing" 6) 7 8func TestConvertCoverToLcov(t *testing.T) { 9 var tests = []struct { 10 name string 11 goCover string 12 expectedLcov string 13 }{ 14 { 15 "empty", 16 "", 17 "", 18 }, 19 { 20 "mode only", 21 "mode: set\n", 22 "", 23 }, 24 { 25 "single file", 26 `mode: count 27file.go:0.4,2.10 0 0 28`, 29 `SF:file.go 30DA:0,0 31DA:1,0 32DA:2,0 33LH:0 34LF:3 35end_of_record 36`, 37 }, 38 { 39 "narrow ranges", 40 `mode: atomic 41path/to/pkg/file.go:0.1,0.2 5 1 42path/to/pkg/file2.go:1.2,1.2 4 2 43`, 44 `SF:path/to/pkg/file.go 45DA:0,1 46LH:1 47LF:1 48end_of_record 49SF:path/to/pkg/file2.go 50DA:1,2 51LH:1 52LF:1 53end_of_record 54`, 55 }, 56 } 57 for _, tt := range tests { 58 t.Run(tt.name, func(t *testing.T) { 59 in := strings.NewReader(tt.goCover) 60 var out strings.Builder 61 err := convertCoverToLcov(in, &out) 62 if err != nil { 63 t.Errorf("convertCoverToLcov returned unexpected error: %+v", err) 64 } 65 actualLcov := out.String() 66 if actualLcov != tt.expectedLcov { 67 t.Errorf("covertCoverToLcov returned:\n%q\n, expected:\n%q\n", actualLcov, tt.expectedLcov) 68 } 69 }) 70 } 71} 72