diff --git a/merge.go b/merge.go index 3675b6e3d4073443c7948c89148f4365a2a7fb4b..64f72ed98f9fce00a4746d40068365c1b1d3d95a 100644 --- a/merge.go +++ b/merge.go @@ -14,7 +14,7 @@ func (s *Settings[C]) Merge(change C) *Settings[C] { s.Lock() defer s.Unlock() - if err := mergo.Merge(&s.config, change); err != nil { + if err := mergo.Merge(&s.config, change, mergo.WithOverride, mergo.WithTypeCheck); err != nil { s.errors = append(s.errors, err) } diff --git a/merge_test.go b/merge_test.go new file mode 100644 index 0000000000000000000000000000000000000000..006350a4727f89bfa72e30656d46439f92c5f3e8 --- /dev/null +++ b/merge_test.go @@ -0,0 +1,25 @@ +// Copyright 2022 schukai GmbH +// SPDX-License-Identifier: AGPL-3.0 + +package configuration + +import ( + "github.com/stretchr/testify/assert" + "testing" +) + +func TestMerge(t *testing.T) { + var configS, configD ConfigStruct2 + + source := New(configS) + source.config.H.HA = 2 + + dest := New(configD) + dest.config.H.HA = 1 + + assert.Equal(t, dest.config.H.HA, 1) + dest.Merge(source.config) + + assert.Equal(t, dest.config.H.HA, 2) + +}