in dev/coverage/coverage.go [109:143]
func MergeGenericCoverageFiles(paths []string, output string) error {
f, err := os.Create(output)
if err != nil {
return fmt.Errorf("cannot open file %s to write merged coverage: %w", output, err)
}
defer f.Close()
var coverage *GenericCoverage
for _, path := range paths {
c, err := ReadGenericCoverage(path)
if err != nil {
return fmt.Errorf("failed to read coverage from %s: %w", path, err)
}
if coverage == nil {
coverage = c
continue
}
err = coverage.Merge(c)
if err != nil {
return fmt.Errorf("failed to merge coverage from %s: %w", path, err)
}
}
d, err := coverage.Bytes()
if err != nil {
return fmt.Errorf("failed to encode merged coverage: %w", err)
}
_, err = f.Write(d)
if err != nil {
return fmt.Errorf("cannot write merged coverage to %s: %w", output, err)
}
return nil
}