func()

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
}