Skip to content
Permalink
Browse files

common/maps: Do not return error on params dot access on incompatible…

… types

This error was introduced in 0.56 and has shown some site breakage in the wild.

Fixes #6121
  • Loading branch information...
bep committed Jul 28, 2019
1 parent 93d02aa commit e393c6290e827111a8a2e486791dc21f63a92b55
Showing with 62 additions and 3 deletions.
  1. +1 −3 common/maps/params.go
  2. +6 −0 common/maps/params_test.go
  3. +55 −0 hugolib/page_test.go
@@ -16,8 +16,6 @@ package maps
import (
"strings"

"github.com/pkg/errors"

"github.com/spf13/cast"
)

@@ -72,7 +70,7 @@ func traverseNestedParams(keySegments []string, lookupFn func(key string) interf
v, key, owner := traverseParams(rest, m)
return v, key, owner, nil
default:
return nil, "", nil, errors.Errorf("unsupported Params type: %T", result)
return nil, "", nil, nil
}
}

@@ -22,10 +22,14 @@ import (
func TestGetNestedParam(t *testing.T) {

m := map[string]interface{}{
"string": "value",
"first": 1,
"with_underscore": 2,
"nested": map[string]interface{}{
"color": "blue",
"nestednested": map[string]interface{}{
"color": "green",
},
},
}

@@ -41,5 +45,7 @@ func TestGetNestedParam(t *testing.T) {
assert.Equal(1, must("First", "_", m))
assert.Equal(2, must("with_underscore", "_", m))
assert.Equal("blue", must("nested_color", "_", m))
assert.Equal("green", must("nested.nestednested.color", ".", m))
assert.Nil(must("string.name", ".", m))

}
@@ -1543,3 +1543,58 @@ title: Scratch Me!
b.AssertFileContent("public/index.html", "B: bv")
b.AssertFileContent("public/scratchme/index.html", "C: cv")
}

func TestPageParam(t *testing.T) {
t.Parallel()

b := newTestSitesBuilder(t).WithConfigFile("toml", `
baseURL = "https://example.org"
[params]
[params.author]
name = "Kurt Vonnegut"
`)
b.WithTemplatesAdded("index.html", `
{{ $withParam := .Site.GetPage "withparam" }}
{{ $noParam := .Site.GetPage "noparam" }}
{{ $withStringParam := .Site.GetPage "withstringparam" }}
Author page: {{ $withParam.Param "author.name" }}
Author page string: {{ $withStringParam.Param "author.name" }}|
Author site config: {{ $noParam.Param "author.name" }}
`,
)

b.WithContent("withparam.md", `
+++
title = "With Param!"
[author]
name = "Ernest Miller Hemingway"
+++
`,

"noparam.md", `
---
title: "No Param!"
---
`, "withstringparam.md", `
+++
title = "With string Param!"
author = "Jo Nesbø"
+++
`)
b.Build(BuildCfg{})

b.AssertFileContent("public/index.html", "Author page: Ernest Miller Hemingway")
b.AssertFileContent("public/index.html", "Author page string: |")
b.AssertFileContent("public/index.html", "Author site config: Kurt Vonnegut")

}

0 comments on commit e393c62

Please sign in to comment.
You can’t perform that action at this time.