From f6ddb40549f2608c86bb19925ca6fa3d62c392d2 Mon Sep 17 00:00:00 2001 From: Taras Madan Date: Wed, 26 Feb 2025 15:08:07 +0100 Subject: pkg/cover: test DoCoverPrograms --- pkg/cover/report_test.go | 58 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 18 deletions(-) (limited to 'pkg') diff --git a/pkg/cover/report_test.go b/pkg/cover/report_test.go index 40fcb7034..808990642 100644 --- a/pkg/cover/report_test.go +++ b/pkg/cover/report_test.go @@ -176,7 +176,8 @@ func testReportGenerator(t *testing.T, target *targets.Target, test Test) { t.Fatalf("got no error, but expected %q", test.Result) } checkCSVReport(t, reps.csv) - checkJSONLReport(t, reps.jsonl) + checkJSONLReport(t, reps.jsonl, sampleCoverJSON) + checkJSONLReport(t, reps.jsonlPrograms, sampleJSONLlProgs) } const kcovCode = ` @@ -291,9 +292,9 @@ func buildTestBinary(t *testing.T, target *targets.Target, test *Test, dir strin } type reports struct { - html []byte - csv []byte - jsonl []byte + csv []byte + jsonl []byte + jsonlPrograms []byte } func generateReport(t *testing.T, target *targets.Target, test *Test) (*reports, error) { @@ -380,35 +381,34 @@ func generateReport(t *testing.T, target *targets.Target, test *Test) (*reports, } progs = append(progs, Prog{Data: "main", PCs: pcs}) } - html := new(bytes.Buffer) params := HandlerParams{ Progs: progs, } - if err := rg.DoHTML(html, params); err != nil { + if err := rg.DoHTML(new(bytes.Buffer), params); err != nil { return nil, err } - htmlTable := new(bytes.Buffer) - if err := rg.DoSubsystemCover(htmlTable, params); err != nil { + if err := rg.DoSubsystemCover(new(bytes.Buffer), params); err != nil { return nil, err } - _ = htmlTable csv := new(bytes.Buffer) if err := rg.DoFuncCover(csv, params); err != nil { return nil, err } - csvFiles := new(bytes.Buffer) - if err := rg.DoFileCover(csvFiles, params); err != nil { + if err := rg.DoFileCover(new(bytes.Buffer), params); err != nil { return nil, err } - _ = csvFiles jsonl := new(bytes.Buffer) if err := rg.DoCoverJSONL(jsonl, params); err != nil { return nil, err } + jsonlProgs := new(bytes.Buffer) + if err := rg.DoCoverPrograms(jsonlProgs, params); err != nil { + return nil, err + } return &reports{ - html: html.Bytes(), - csv: csv.Bytes(), - jsonl: jsonl.Bytes(), + csv: csv.Bytes(), + jsonl: jsonl.Bytes(), + jsonlPrograms: jsonlProgs.Bytes(), }, nil } @@ -438,15 +438,37 @@ func checkCSVReport(t *testing.T, CSVReport []byte) { } // nolint:lll -func checkJSONLReport(t *testing.T, r []byte) { +func checkJSONLReport(t *testing.T, gotBytes, wantBytes []byte) { compacted := new(bytes.Buffer) - if err := json.Compact(compacted, sampleCoverJSON); err != nil { + if err := json.Compact(compacted, wantBytes); err != nil { t.Errorf("failed to prepare compacted json: %v", err) } compacted.Write([]byte("\n")) // PC is hard to predict here. Let's fix it. actualString := regexp.MustCompile(`"pc":[0-9]*`).ReplaceAllString( - string(r), `"pc":12345`) + string(gotBytes), `"pc":12345`) assert.Equal(t, compacted.String(), actualString) } + +var sampleJSONLlProgs = []byte(`{ + "program": "main", + "coverage": [ + { + "file_path": "main.c", + "functions": [ + { + "func_name": "main", + "covered_blocks": [ + { + "from_line": 1, + "from_column": 0, + "to_line": 1, + "to_column": -1 + } + ] + } + ] + } + ] +}`) -- cgit mrf-deployment