Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-08-14 19:11:36 +0300
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-08-14 19:11:36 +0300
commit0dd06bdac008aa81ec2e8f29ad8110dac0227011 (patch)
tree513b6bd55150a85c888b801bab7e60285eea7eb2 /hugolib
parent5c5384916e8f954f3ea66148ecceb3732584588e (diff)
hugolib: Fix Related when called from shortcode
Fixes #5071
Diffstat (limited to 'hugolib')
-rw-r--r--hugolib/shortcode_test.go11
-rw-r--r--hugolib/site_sections.go15
2 files changed, 19 insertions, 7 deletions
diff --git a/hugolib/shortcode_test.go b/hugolib/shortcode_test.go
index f4935c6e9..d57dca82e 100644
--- a/hugolib/shortcode_test.go
+++ b/hugolib/shortcode_test.go
@@ -150,6 +150,17 @@ func TestPositionalParamIndexOutOfBounds(t *testing.T) {
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
func TestNamedParamSC(t *testing.T) {
diff --git a/hugolib/site_sections.go b/hugolib/site_sections.go
index 2a92a3424..15b96e1a7 100644
--- a/hugolib/site_sections.go
+++ b/hugolib/site_sections.go
@@ -145,15 +145,16 @@ func (p *Page) Eq(other interface{}) bool {
}
func unwrapPage(in interface{}) (*Page, error) {
- if po, ok := in.(*PageOutput); ok {
- in = po.Page
- }
-
- pp, ok := in.(*Page)
- if !ok {
+ switch v := in.(type) {
+ case *Page:
+ return v, nil
+ case *PageOutput:
+ return v.Page, nil
+ case *PageWithoutContent:
+ return v.Page, nil
+ default:
return nil, fmt.Errorf("%T not supported", in)
}
- return pp, nil
}
// Sections returns this section's subsections, if any.