]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
hugolib: Fix a .Page.GetPage from bundle case
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 23 Feb 2024 08:37:05 +0000 (09:37 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 23 Feb 2024 13:40:29 +0000 (14:40 +0100)
Fixes #12120

hugolib/pagecollections.go
hugolib/pagecollections_test.go

index 3783dadab889133094d5dd8d7260d46e03480cd8..fe7c2f1e77ae0c1c1eff8e3371e688a73bfff908 100644 (file)
@@ -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)
 
index eaa80a10995f343c3e9a55e2d13f4fe0ed67e0a1..1cb1cbd70e9849abbaf79239086ee5652a6c5419 100644 (file)
@@ -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 --