From 1b785a7a6d3c264e39e4976c59b618c0ac1ba5f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Wed, 18 Dec 2019 21:31:34 +0100 Subject: [PATCH] tpl/collections: Fix merge vs Params Fixes #6633 --- tpl/collections/merge.go | 2 +- tpl/collections/merge_test.go | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/tpl/collections/merge.go b/tpl/collections/merge.go index 6916d071094..39ef932ca08 100644 --- a/tpl/collections/merge.go +++ b/tpl/collections/merge.go @@ -40,7 +40,7 @@ func (ns *Namespace) Merge(src, dst interface{}) (interface{}, error) { return nil, errors.Errorf("source must be a map, got %T", src) } - if vsrc.Type() != vdst.Type() { + if vsrc.Type().Key() != vdst.Type().Key() { return nil, errors.Errorf("incompatible map types, got %T to %T", src, dst) } diff --git a/tpl/collections/merge_test.go b/tpl/collections/merge_test.go index a08e0021bd3..57163a0d5ad 100644 --- a/tpl/collections/merge_test.go +++ b/tpl/collections/merge_test.go @@ -21,6 +21,8 @@ import ( "strings" "testing" + "github.com/gohugoio/hugo/common/maps" + "github.com/gohugoio/hugo/parser" "github.com/gohugoio/hugo/parser/metadecoders" @@ -57,6 +59,18 @@ func TestMerge(t *testing.T) { map[string]interface{}{"a": 1, "b": map[string]interface{}{"d": 1, "e": 2}}, map[string]interface{}{"a": 42, "c": 3, "b": map[string]interface{}{"d": 55, "e": 66, "f": 3}}, map[string]interface{}{"a": 1, "b": map[string]interface{}{"d": 1, "e": 2, "f": 3}, "c": 3}, false}, + { + // https://github.com/gohugoio/hugo/issues/6633 + "params dst", + maps.Params{"a": 1, "b": 2}, + map[string]interface{}{"a": 42, "c": 3}, + maps.Params{"a": int(1), "b": int(2), "c": int(3)}, false}, + { + // https://github.com/gohugoio/hugo/issues/6633 + "params src", + map[string]interface{}{"a": 1, "c": 2}, + maps.Params{"a": 42, "c": 3}, + map[string]interface{}{"a": int(1), "c": int(2)}, false}, {"src nil", simpleMap, nil, simpleMap, false}, // Error cases. {"dst not a map", "not a map", nil, nil, true},