func Merge()

in go/metadata/metadata.go [68:132]


func Merge(m1, m2 *Metadata) (*Metadata, error) {
	capabilities := capabilities.Merge(m1.Capabilities, m2.Capabilities)

	environment := m1.Environment
	if m2.Environment != "" {
		environment = m2.Environment
	}

	label := m1.Label
	if m2.Label != "" {
		label = m2.Label
	}

	browserLabel := m1.BrowserLabel
	if m2.BrowserLabel != "" {
		browserLabel = m2.BrowserLabel
	}

	testLabel := m1.TestLabel
	if m2.TestLabel != "" {
		testLabel = m2.TestLabel
	}

	configLabel := m1.ConfigLabel
	if m2.ConfigLabel != "" {
		configLabel = m2.ConfigLabel
	}

	debuggerPort := m1.DebuggerPort
	if m2.DebuggerPort != 0 {
		debuggerPort = m2.DebuggerPort
	}

	var webTestFiles []*WebTestFiles
	webTestFiles = append(webTestFiles, m1.WebTestFiles...)
	webTestFiles = append(webTestFiles, m2.WebTestFiles...)

	webTestFiles, err := normalizeWebTestFiles(webTestFiles)
	if err != nil {
		return nil, err
	}

	extension := m1.Extension
	if extension == nil {
		extension = m2.Extension
	} else if m2.Extension != nil {
		e, err := extension.Merge(m2.Extension)
		if err != nil {
			return nil, err
		}
		extension = e
	}

	return &Metadata{
		Capabilities: capabilities,
		Environment:  environment,
		Label:        label,
		BrowserLabel: browserLabel,
		TestLabel:    testLabel,
		ConfigLabel:  configLabel,
		DebuggerPort: debuggerPort,
		WebTestFiles: webTestFiles,
		Extension:    extension,
	}, nil
}