aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/cover
diff options
context:
space:
mode:
authorTaras Madan <tarasmadan@google.com>2025-02-26 15:08:07 +0100
committerTaras Madan <tarasmadan@google.com>2025-02-28 13:35:55 +0000
commitf6ddb40549f2608c86bb19925ca6fa3d62c392d2 (patch)
treef476e84d4326fa696d11124f66e4839dc4a08640 /pkg/cover
parenta37f70eacae01881d3ed517cdf93f59b5a0156e1 (diff)
pkg/cover: test DoCoverPrograms
Diffstat (limited to 'pkg/cover')
-rw-r--r--pkg/cover/report_test.go58
1 files changed, 40 insertions, 18 deletions
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
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}`)