From 02cf2b2406312c14d45061d2cb7e7c5d0ebc57e7 Mon Sep 17 00:00:00 2001
From: Illarion Kovalchuk <illarion.kovalchuk@gmail.com>
Date: Thu, 14 Oct 2021 16:29:39 +0300
Subject: [PATCH] Added test case for merging configs, where target is null,
 and source is not null

---
 viper.go      | 2 +-
 viper_test.go | 6 ++++++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/viper.go b/viper.go
index 3432533..3481d1d 100644
--- a/viper.go
+++ b/viper.go
@@ -1808,7 +1808,7 @@ func mergeMaps(
 			v.logger.Trace("merging maps")
 			tsv, ok := sv.(map[string]interface{})
 			if !ok {
-				jww.ERROR.Printf(
+				v.logger.Error(
 					"Could not cast sv to map[string]interface{}; key=%s, st=%v, tt=%v, sv=%v, tv=%v",
 					sk, svType, tvType, sv, tv)
 				continue
diff --git a/viper_test.go b/viper_test.go
index f882fdc..8a5dec6 100644
--- a/viper_test.go
+++ b/viper_test.go
@@ -1915,6 +1915,7 @@ fu: bar
 var jsonMergeExampleTgt = []byte(`
 {
 	"hello": {
+		"foo": null,
 		"pop": 123456
 	}
 }
@@ -1923,6 +1924,7 @@ var jsonMergeExampleTgt = []byte(`
 var jsonMergeExampleSrc = []byte(`
 {
 	"hello": {
+		"foo": "foo str",
 		"pop": "pop str"
 	}
 }
@@ -2014,6 +2016,10 @@ func TestMergeConfigOverrideType(t *testing.T) {
 	if pop := v.GetString("hello.pop"); pop != "pop str" {
 		t.Fatalf("pop != \"pop str\", = %s", pop)
 	}
+
+	if foo := v.GetString("hello.foo"); foo != "foo str" {
+		t.Fatalf("foo != \"foo str\", = %s", foo)
+	}
 }
 
 func TestMergeConfigNoMerge(t *testing.T) {