From fd0185a84a677c836fbe4defec040b77e6deea49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Wed, 21 Feb 2024 15:42:00 +0100 Subject: [PATCH] Fix relref regression with trailing slash Fixes #12096 --- hugolib/pagecollections.go | 3 ++- hugolib/site_test.go | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/hugolib/pagecollections.go b/hugolib/pagecollections.go index 58c646334..3783dadab 100644 --- a/hugolib/pagecollections.go +++ b/hugolib/pagecollections.go @@ -56,7 +56,7 @@ func (c *pageFinder) getPageRef(context page.Page, ref string) (page.Page, error } func (c *pageFinder) getPage(context page.Page, ref string) (page.Page, error) { - n, err := c.getContentNode(context, false, paths.ToSlashTrimTrailing(ref)) + n, err := c.getContentNode(context, false, ref) if err != nil { return nil, err } @@ -121,6 +121,7 @@ func (c *pageFinder) getPageForRefs(ref ...string) (page.Page, error) { const defaultContentExt = ".md" func (c *pageFinder) getContentNode(context page.Page, isReflink bool, ref string) (contentNodeI, error) { + ref = paths.ToSlashTrimTrailing(ref) inRef := ref if ref == "" { ref = "/" diff --git a/hugolib/site_test.go b/hugolib/site_test.go index 63088ee88..1de1d688a 100644 --- a/hugolib/site_test.go +++ b/hugolib/site_test.go @@ -992,6 +992,28 @@ func TestRefLinking(t *testing.T) { // TODO: and then the failure cases. } +func TestRelRefWithTrailingSlash(t *testing.T) { + files := ` +-- hugo.toml -- +-- content/docs/5.3/examples/_index.md -- +--- +title: "Examples" +--- +-- content/_index.md -- +--- +title: "Home" +--- + +Examples: {{< relref "/docs/5.3/examples/" >}} +-- layouts/home.html -- +Content: {{ .Content }}| +` + + b := Test(t, files) + + b.AssertFileContent("public/index.html", "Examples: /docs/5.3/examples/") +} + func checkLinkCase(site *Site, link string, currentPage page.Page, relative bool, outputFormat string, expected string, t *testing.T, i int) { t.Helper() if out, err := site.refLink(link, currentPage, relative, outputFormat); err != nil || out != expected {