// profileToReport is a helper function that converts the merged coverage // report to the Report JSON format expected by the coverage server. func profileToReport(profiles []*cover.Profile) *client.Report { report := client.Report{} report.Files = make([]*client.File, len(profiles), len(profiles)) for i, profile := range profiles { file := client.File{ Mode: profile.Mode, FileName: profile.FileName, } file.Blocks = make([]*client.Block, len(profile.Blocks), len(profile.Blocks)) for ii, block := range profile.Blocks { file.Blocks[ii] = &client.Block{ StartLine: block.StartLine, StartCol: block.StartCol, EndLine: block.EndLine, EndCol: block.EndCol, NumStmt: block.NumStmt, Count: block.Count, } } covered, total, percent := percentCovered(profile) file.Lines = total file.Covered = covered file.Coverage = percent report.Files[i] = &file report.Lines += file.Lines report.Covered += file.Covered } if report.Lines != 0 { report.Coverage = float64(report.Covered) / float64(report.Lines) * float64(100) } return &report }