func MergeResultSets()

in interfaces/interfaces.go [307:341]


func MergeResultSets(r1, r2 ResultSet) (ResultSet, error) {
	resultSet := make(map[string]map[Backend]*Result)

	for p, m := range r1 {
		if _, exists := resultSet[p]; !exists {
			resultSet[p] = make(map[Backend]*Result)
		}

		for b, r := range m {
			if old, exists := resultSet[p][b]; exists {
				if err := old.Cmp(r); err != nil {
					return nil, errwrap.Wrapf(err, "duplicate result for %s in %s", p, b)
				}
			}
			resultSet[p][b] = r
		}
	}

	for p, m := range r2 {
		if _, exists := resultSet[p]; !exists {
			resultSet[p] = make(map[Backend]*Result)
		}

		for b, r := range m {
			if old, exists := resultSet[p][b]; exists {
				if err := old.Cmp(r); err != nil {
					return nil, errwrap.Wrapf(err, "duplicate result for %s in %s", p, b)
				}
			}
			resultSet[p][b] = r
		}
	}

	return resultSet, nil
}