hugolib: Fix a .Page.GetPage from bundle case - hugo - [fork] hugo port for 9front
(HTM) git clone git@git.drkhsh.at/hugo.git
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) Submodules
(DIR) README
(DIR) LICENSE
---
(DIR) commit f521336c8147d00e9caa0b4ba4ab64bc43c69101
(DIR) parent c4fe45ff4cb9080ee968ecc4e80e09df6c366608
(HTM) Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date: Fri, 23 Feb 2024 09:37:05 +0100
hugolib: Fix a .Page.GetPage from bundle case
Fixes #12120
Diffstat:
M hugolib/pagecollections.go | 9 ++-------
M hugolib/pagecollections_test.go | 27 +++++++++++++++++++++++++++
2 files changed, 29 insertions(+), 7 deletions(-)
---
(DIR) diff --git a/hugolib/pagecollections.go b/hugolib/pagecollections.go
@@ -166,19 +166,14 @@ func (c *pageFinder) getContentNodeForRef(context page.Page, isReflink, hadExten
// Given the above, for regular pages we use the containing folder.
var baseDir string
if pi := context.PathInfo(); pi != nil {
- if pi.IsBranchBundle() || (hadExtension) {
+ if pi.IsBranchBundle() || (hadExtension && strings.HasPrefix(ref, "../")) {
baseDir = pi.Dir()
} else {
baseDir = pi.ContainerDir()
}
}
- rel := path.Join(baseDir, inRef)
-
- if !hadExtension && !paths.HasExt(rel) {
- // See comment above.
- rel += defaultContentExt
- }
+ rel := path.Join(baseDir, ref)
relPath := contentPathParser.Parse(files.ComponentFolderContent, rel)
(DIR) diff --git a/hugolib/pagecollections_test.go b/hugolib/pagecollections_test.go
@@ -386,6 +386,33 @@ Home. {{ with .Page.GetPage "p1.xyz" }}{{ else }}OK 1{{ end }} {{ with .Site.Get
b.AssertFileContent("public/index.html", "Home. OK 1 OK 2")
}
+func TestGetPageIssue12120(t *testing.T) {
+ t.Parallel()
+
+ files := `
+-- hugo.toml --
+disableKinds = ['home','rss','section','sitemap','taxonomy','term']
+-- content/s1/p1/index.md --
+---
+title: p1
+layout: p1
+---
+-- content/s1/p2.md --
+---
+title: p2
+layout: p2
+---
+-- layouts/_default/p1.html --
+{{ (.GetPage "p2.md").Title }}|
+-- layouts/_default/p2.html --
+{{ (.GetPage "p1").Title }}|
+`
+
+ b := Test(t, files)
+ b.AssertFileContent("public/s1/p1/index.html", "p2") // failing test
+ b.AssertFileContent("public/s1/p2/index.html", "p1")
+}
+
func TestGetPageBundleToRegular(t *testing.T) {
files := `
-- hugo.toml --