keys := slices.Collect(maps.Keys(cs.cov))
maxPathLen := len(slices.MaxFunc(keys, func(a, b string) int {
return cmp.Compare(len(a), len(b))
}))
maxPathLen = max(maxPathLen, 5)
divider := strings.Repeat("—", maxPathLen + 9) + "\n"
ew := newErrorWriter(w)
ew.write("File")
ew.write(strings.Repeat(" ", maxPathLen - 4 + 1))
ew.write("Coverage\n")
ew.write(divider)
for _, path := range cs.sort() {
cov := cs.cov[path]
percent := 0.0
if cov.total > 0 {
percent = float64(cov.covered) / float64(cov.total) * 100
}
writeRow(ew, path, percent, maxPathLen)
}
totalPercent := 0.0
totalCovered := cs.totalCovered.Load()
totalStatements := cs.totalStatements.Load()
if totalStatements > 0 {
totalPercent = float64(totalCovered) / float64(totalStatements) * 100
}
ew.write(divider)
writeRow(ew, "Total", totalPercent, maxPathLen)
return ew.err()
}