Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
tpl/collections: Log an error on unsupported types in IsSet
Unsupported types are currently silently ignored by IsSet.  An earlier
attempt was made to solve the issue by returning an error.  That attempt
was reverted since it broke some existing themes.

So instead, we'll log an error.  Hopefully, people will stop using IsSet
in this way, and we can eventually return an error outright.

Updates #3092
  • Loading branch information
moorereason authored and bep committed May 18, 2017
1 parent 42fbded commit 38661c1
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 1 deletion.
2 changes: 2 additions & 0 deletions tpl/collections/collections.go
Expand Up @@ -370,6 +370,8 @@ func (ns *Namespace) IsSet(a interface{}, key interface{}) (bool, error) {
if kv.Type() == av.Type().Key() {
return av.MapIndex(kv).IsValid(), nil
}
default:
ns.deps.Log.ERROR.Printf("calling IsSet with unsupported type %T will always return false", a)
}

return false, nil
Expand Down
22 changes: 21 additions & 1 deletion tpl/collections/collections_test.go
Expand Up @@ -17,12 +17,20 @@ import (
"errors"
"fmt"
"html/template"
"io/ioutil"
"log"
"math/rand"
"os"
"reflect"
"testing"
"time"

"github.com/spf13/hugo/config"
"github.com/spf13/hugo/deps"
"github.com/spf13/hugo/helpers"
"github.com/spf13/hugo/hugofs"
jww "github.com/spf13/jwalterweatherman"
"github.com/spf13/viper"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
Expand Down Expand Up @@ -320,7 +328,7 @@ func TestIntersect(t *testing.T) {
func TestIsSet(t *testing.T) {
t.Parallel()

ns := New(&deps.Deps{})
ns := New(newDeps(viper.New()))

for i, test := range []struct {
a interface{}
Expand All @@ -336,6 +344,7 @@ func TestIsSet(t *testing.T) {
{map[string]interface{}{"a": 1, "b": 2}, "bc", false, false, ""},

{time.Now(), "Day", false, false, ""},
{nil, "nil", false, false, ""},
} {
errMsg := fmt.Sprintf("[%d] %v", i, test)

Expand Down Expand Up @@ -632,3 +641,14 @@ type TstX struct {
A, B string
unexported string
}

func newDeps(cfg config.Provider) *deps.Deps {
l := helpers.NewLanguage("en", cfg)
l.Set("i18nDir", "i18n")
return &deps.Deps{
Cfg: cfg,
Fs: hugofs.NewMem(l),
ContentSpec: helpers.NewContentSpec(l),
Log: jww.NewNotepad(jww.LevelError, jww.LevelError, os.Stdout, ioutil.Discard, "", log.Ldate|log.Ltime),
}
}

0 comments on commit 38661c1

Please sign in to comment.