Repository: gohugoio/hugo (language: go)

Issue:
.Page.GetPage from within a page bundle is unable to find another page if extension included in target
```text
content/
└── s1/
    ├── p1/
    │   └── index.md   <-- .Page.GetPage "p2.md" from here fails **
    └── p2.md          <-- .Page.GetPage "p1" from here works
```

** But `.Page.GetPage "p2" ` (no extension) works

<details>
<summary>failing test cast</summary>

```go
func TestFoo(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 := hugolib.Test(t, files)
	b.AssertFileContent("public/s1/p1/index.html", "p2") // failing test
	b.AssertFileContent("public/s1/p2/index.html", "p1")
}

```
</details>
<br>

Reference: <https://discourse.gohugo.io/t/hugo-0-123-0-1-breaks-page-getpage/48403>


Discussion / hints:

Fix patch:
diff --git a/hugolib/pagecollections.go b/hugolib/pagecollections.go
index 3783dadab88..fe7c2f1e77a 100644
--- 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)
 


Test patch:
diff --git a/hugolib/pagecollections_test.go b/hugolib/pagecollections_test.go
index eaa80a10995..1cb1cbd70e9 100644
--- 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 --