Skip to content

Commit

Permalink
tpl/collections: Fix merge vs Params
Browse files Browse the repository at this point in the history
Fixes #6633
  • Loading branch information
bep committed Dec 18, 2019
1 parent d20ca37 commit 1b785a7
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 1 deletion.
2 changes: 1 addition & 1 deletion tpl/collections/merge.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}

Expand Down
14 changes: 14 additions & 0 deletions tpl/collections/merge_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ import (
"strings"
"testing"

"github.com/gohugoio/hugo/common/maps"

"github.com/gohugoio/hugo/parser"

"github.com/gohugoio/hugo/parser/metadecoders"
Expand Down Expand Up @@ -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},
Expand Down

0 comments on commit 1b785a7

Please sign in to comment.