]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Fix panic with markdownify/RenderString with shortcode on Page with no content file
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 1 Jun 2022 08:19:05 +0000 (10:19 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 1 Jun 2022 10:04:55 +0000 (12:04 +0200)
Fixes #9959

hugolib/content_map_page.go
hugolib/page__common.go
hugolib/page__content.go
hugolib/page__new.go
hugolib/page__per_output.go
hugolib/renderstring_test.go

index c6522809efeb06ecb0a362cb8f767b29095788a3..7e6b6e67040d21db9ca527cc8f84d07ce9c4379a 100644 (file)
@@ -163,8 +163,6 @@ func (m *pageMap) newPageFromContentNode(n *contentNode, parentBucket *pagesMapB
                },
        }
 
-       ps.shortcodeState = newShortcodeHandler(ps, ps.s)
-
        if err := ps.mapContent(parentBucket, metaProvider); err != nil {
                return nil, ps.wrapError(err)
        }
index e55bb7e253c3624c21d309780fa1b31f8bd28554..59f0bc77605f6097d4de4bab1de35d74d5ef4d19 100644 (file)
@@ -102,6 +102,9 @@ type pageCommon struct {
        // The parsed page content.
        pageContent
 
+       // Keeps track of the shortcodes on a page.
+       shortcodeState *shortcodeHandler
+
        // Set if feature enabled and this is in a Git repo.
        gitInfo    *gitmap.GitInfo
        codeowners []string
index 5871884545d01da2cd203acca877b98743bc0664..bf69fafcda4b8d83d1bc1ec76273503815660e49 100644 (file)
@@ -33,8 +33,6 @@ type pageContent struct {
 
        cmap *pageContentMap
 
-       shortcodeState *shortcodeHandler
-
        source rawPageContent
 }
 
index 897c0281b23963ba2e5d3a94029310696fa99523..e52b9476b032abcd0c11614f926c80de9e80be72 100644 (file)
@@ -66,6 +66,8 @@ func newPageBase(metaProvider *pageMeta) (*pageState, error) {
                },
        }
 
+       ps.shortcodeState = newShortcodeHandler(ps, ps.s)
+
        siteAdapter := pageSiteAdapter{s: s, p: ps}
 
        ps.pageMenus = &pageMenus{p: ps}
index 2bf16dd9ee62e9fe3663ea1df542414d477bbde1..e69d32e27a6f041016449a108c324ab768b29faf 100644 (file)
@@ -25,7 +25,6 @@ import (
 
        "errors"
 
-       "github.com/gohugoio/hugo/common/herrors"
        "github.com/gohugoio/hugo/common/text"
        "github.com/gohugoio/hugo/common/types/hstring"
        "github.com/gohugoio/hugo/identity"
@@ -334,7 +333,6 @@ func (p *pageContentOutput) WordCount() int {
 }
 
 func (p *pageContentOutput) RenderString(args ...any) (template.HTML, error) {
-       defer herrors.Recover()
        if len(args) < 1 || len(args) > 2 {
                return "", errors.New("want 1 or 2 arguments")
        }
index d2f453c3303ecf3e0154db3f7eca23b5e1221026..1be0cdffb53dafaff46c5297aa31c1d3b9ed6f79 100644 (file)
@@ -158,5 +158,35 @@ Page Type: *hugolib.pageForShortcode`,
                )
 
        })
+}
+
+// Issue 9959
+func TestRenderStringWithShortcodeInPageWithNoContentFile(t *testing.T) {
+       t.Parallel()
+
+       files := `
+-- config.toml --
+-- layouts/shortcodes/myshort.html --
+Page Kind: {{ .Page.Kind }}
+-- layouts/index.html --
+Short: {{ .RenderString "{{< myshort >}}" }}
+Has myshort: {{ .HasShortcode "myshort" }}
+Has other: {{ .HasShortcode "other" }}
+
+       `
+
+       b := NewIntegrationTestBuilder(
+               IntegrationTestConfig{
+                       T:           t,
+                       TxtarString: files,
+               },
+       ).Build()
+
+       b.AssertFileContent("public/index.html",
+               `
+Page Kind: home
+Has myshort: true
+Has other: false
+`)
 
 }