aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/cover/html.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/cover/html.go')
-rw-r--r--pkg/cover/html.go25
1 files changed, 24 insertions, 1 deletions
diff --git a/pkg/cover/html.go b/pkg/cover/html.go
index ae4aa6c4b..042d28b40 100644
--- a/pkg/cover/html.go
+++ b/pkg/cover/html.go
@@ -537,8 +537,12 @@ func groupCoverByFilePrefixes(datas []fileStats, subsystems []mgrconfig.Subsyste
var percentCoveredFunc float64
for _, path := range subsystem.Paths {
+ if strings.HasPrefix(path, "-") {
+ continue
+ }
+ excludes := buildExcludePaths(path, subsystem.Paths)
for _, data := range datas {
- if !strings.HasPrefix(data.Name, path) {
+ if !strings.HasPrefix(data.Name, path) || isExcluded(data.Name, excludes) {
continue
}
coveredLines += data.CoveredLines
@@ -582,6 +586,25 @@ func groupCoverByFilePrefixes(datas []fileStats, subsystems []mgrconfig.Subsyste
return d
}
+func buildExcludePaths(prefix string, paths []string) []string {
+ var excludes []string
+ for _, path := range paths {
+ if strings.HasPrefix(path, "-") && strings.HasPrefix(path[1:], prefix) {
+ excludes = append(excludes, path[1:])
+ }
+ }
+ return excludes
+}
+
+func isExcluded(path string, excludes []string) bool {
+ for _, exclude := range excludes {
+ if strings.HasPrefix(path, exclude) {
+ return true
+ }
+ }
+ return false
+}
+
func (rg *ReportGenerator) DoSubsystemCover(w io.Writer, params HandlerParams) error {
var progs = fixUpPCs(params.Progs, params.Filter)
data, err := rg.convertToStats(progs)