Improve handling of <nil> Params

Fixes #8825
This commit is contained in:
Bjørn Erik Pedersen
2021-07-30 10:56:45 +02:00
parent 268065cb2d
commit e3dc5240f0
6 changed files with 74 additions and 11 deletions

View File

@@ -17,6 +17,8 @@ import (
"fmt"
"strings"
"github.com/gohugoio/hugo/common/types"
"github.com/gobwas/glob"
"github.com/spf13/cast"
)
@@ -39,8 +41,12 @@ func ToStringMapE(in interface{}) (map[string]interface{}, error) {
}
// ToParamsAndPrepare converts in to Params and prepares it for use.
// If in is nil, an empty map is returned.
// See PrepareParams.
func ToParamsAndPrepare(in interface{}) (Params, bool) {
if types.IsNil(in) {
return Params{}, true
}
m, err := ToStringMapE(in)
if err != nil {
return nil, false

View File

@@ -114,6 +114,16 @@ func TestToSliceStringMap(t *testing.T) {
}
}
func TestToParamsAndPrepare(t *testing.T) {
c := qt.New(t)
_, ok := ToParamsAndPrepare(map[string]interface{}{"A": "av"})
c.Assert(ok, qt.IsTrue)
params, ok := ToParamsAndPrepare(nil)
c.Assert(ok, qt.IsTrue)
c.Assert(params, qt.DeepEquals, Params{})
}
func TestRenameKeys(t *testing.T) {
c := qt.New(t)