From 8c9190ef9ef69993519136740a4e67c74f45fdb3 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Wed, 2 Dec 2020 12:03:36 +0100 Subject: pkg/cover: fix file coverage percent calculation If coverage contains some PCs that's don't map to coverage callbacks, we can get file coverage >100% because total PCs are filtered against all coverage callbacks, while actual coverage is not. Filter actual coverage as well. --- pkg/cover/report.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/cover/report.go b/pkg/cover/report.go index 5cf753738..53184955b 100644 --- a/pkg/cover/report.go +++ b/pkg/cover/report.go @@ -263,13 +263,14 @@ func (rg *ReportGenerator) prepareFileMap(progs []Prog) (map[string]*file, error } } for _, s := range rg.symbols { + f := files[s.unit.name] covered := 0 for _, pc := range s.pcs { if coveredPCs[pc] { covered++ + f.covered++ } } - f := files[s.unit.name] f.functions = append(f.functions, &function{ name: s.name, pcs: len(s.pcs), @@ -298,7 +299,6 @@ func (rg *ReportGenerator) lazySymbolize(files map[string]*file, progs []Prog) e if s == nil { continue } - files[s.unit.name].covered++ if !s.symbolized && !symbolizeSymbols[s] { symbolizeSymbols[s] = true symbolizePCs = append(symbolizePCs, s.pcs...) -- cgit mrf-deployment