From 1b4021d0dacaacc8c8670ead0a535c84279cc96b Mon Sep 17 00:00:00 2001
From: Volker Schukai <volker.schukai@schukai.com>
Date: Mon, 24 Oct 2022 00:07:55 +0200
Subject: [PATCH] fix allow override

---
 merge.go      |  2 +-
 merge_test.go | 25 +++++++++++++++++++++++++
 2 files changed, 26 insertions(+), 1 deletion(-)
 create mode 100644 merge_test.go

diff --git a/merge.go b/merge.go
index 3675b6e..64f72ed 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 0000000..006350a
--- /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)
+
+}
-- 
GitLab