in internal/testrunner/coberturacoverage.go [149:200]
func (c *CoberturaCoverage) Merge(other CoverageReport) error {
b, ok := other.(*CoberturaCoverage)
if !ok {
return fmt.Errorf("not able to assert report to be merged as CoberturaCoverage")
}
// Merge source paths
for _, path := range b.Sources {
found := false
for _, existing := range c.Sources {
if found = existing.Path == path.Path; found {
break
}
}
if !found {
c.Sources = append(c.Sources, path)
}
}
// Merge packages
for _, pkg := range b.Packages {
var target *CoberturaPackage
for _, existing := range c.Packages {
if existing.Name == pkg.Name {
target = existing
break
}
}
if target != nil {
if err := target.merge(pkg); err != nil {
return err
}
} else {
c.Packages = append(c.Packages, pkg)
}
}
// Recalculate global line coverage count
c.LinesValid = 0
c.LinesCovered = 0
for _, pkg := range c.Packages {
for _, cls := range pkg.Classes {
for _, line := range cls.Lines {
c.LinesValid++
if line.Hits > 0 {
c.LinesCovered++
}
}
}
}
return nil
}