]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Fix cascade with overlapping sections
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 24 Jan 2025 12:33:36 +0000 (13:33 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 24 Jan 2025 14:25:54 +0000 (15:25 +0100)
Fixes #12465

hugolib/cascade_test.go
hugolib/content_map_page.go

index 47e53d9277f92184a4949c39d9af6c993bc5efc8..f3060814c0054c0f9ade28922a9b0ad8dc2a7bf9 100644 (file)
@@ -876,3 +876,44 @@ Background: {{ .Params.background }}|
                b.AssertFileContent("public/p1/index.html", "Background: yosemite.jpg")
        }
 }
+
+// Issue #12465.
+func TestCascadeOverlap(t *testing.T) {
+       t.Parallel()
+
+       files := `
+-- hugo.toml --
+disableKinds = ['home','rss','sitemap','taxonomy','term']
+-- layouts/_default/list.html --
+{{ .Title }}
+-- layouts/_default/single.html --
+{{ .Title }}
+-- content/s/_index.md --
+---
+title: s
+cascade:
+  _build:
+    render: never
+---
+-- content/s/p1.md --
+---
+title: p1
+---
+-- content/sx/_index.md --
+---
+title: sx
+---
+-- content/sx/p2.md --
+---
+title: p2
+---
+`
+
+       b := Test(t, files)
+
+       b.AssertFileExists("public/s/index.html", false)
+       b.AssertFileExists("public/s/p1/index.html", false)
+
+       b.AssertFileExists("public/sx/index.html", true)    // failing
+       b.AssertFileExists("public/sx/p2/index.html", true) // failing
+}
index 6927562f1276cde789792b808559e73bcbec77cc..b930845e58b2ea9175300e3ca2db63028796318c 100644 (file)
@@ -1397,7 +1397,7 @@ func (sa *sitePagesAssembler) applyAggregates() error {
                                pw.WalkContext.Data().Insert(keyPage, cascade)
                        }
                } else {
-                       _, data := pw.WalkContext.Data().LongestPrefix(keyPage)
+                       _, data := pw.WalkContext.Data().LongestPrefix(paths.Dir(keyPage))
                        if data != nil {
                                cascade = data.(*maps.Ordered[page.PageMatcher, maps.Params])
                        }