hugolib: Fix Related when called from shortcode

Fixes #5071
This commit is contained in:
Bjørn Erik Pedersen 2018-08-14 18:11:36 +02:00
parent 5c5384916e
commit 0dd06bdac0
No known key found for this signature in database
GPG key ID: 330E6E2BD4859D8F
2 changed files with 19 additions and 7 deletions

View file

@ -150,6 +150,17 @@ func TestPositionalParamIndexOutOfBounds(t *testing.T) {
CheckShortCodeMatch(t, "{{< video 47238zzb >}}", "Playing Video Missing", wt) CheckShortCodeMatch(t, "{{< video 47238zzb >}}", "Playing Video Missing", wt)
} }
// #5071
func TestShortcodeRelated(t *testing.T) {
t.Parallel()
wt := func(tem tpl.TemplateHandler) error {
tem.AddTemplate("_internal/shortcodes/a.html", `{{ len (.Site.RegularPages.Related .Page) }}`)
return nil
}
CheckShortCodeMatch(t, "{{< a >}}", "0", wt)
}
// some repro issues for panics in Go Fuzz testing // some repro issues for panics in Go Fuzz testing
func TestNamedParamSC(t *testing.T) { func TestNamedParamSC(t *testing.T) {

View file

@ -145,15 +145,16 @@ func (p *Page) Eq(other interface{}) bool {
} }
func unwrapPage(in interface{}) (*Page, error) { func unwrapPage(in interface{}) (*Page, error) {
if po, ok := in.(*PageOutput); ok { switch v := in.(type) {
in = po.Page case *Page:
} return v, nil
case *PageOutput:
pp, ok := in.(*Page) return v.Page, nil
if !ok { case *PageWithoutContent:
return v.Page, nil
default:
return nil, fmt.Errorf("%T not supported", in) return nil, fmt.Errorf("%T not supported", in)
} }
return pp, nil
} }
// Sections returns this section's subsections, if any. // Sections returns this section's subsections, if any.