Skip to content

Commit

Permalink
Fix branch resource overlapping bundle path
Browse files Browse the repository at this point in the history
Fixes #13228
  • Loading branch information
bep committed Jan 9, 2025
1 parent 61d3d20 commit c5a63a3
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 2 deletions.
19 changes: 17 additions & 2 deletions hugolib/content_map_page.go
Original file line number Diff line number Diff line change
Expand Up @@ -509,8 +509,23 @@ func (m *pageMap) forEachResourceInPage(
// A page key points to the logical path of a page, which when sourced from the filesystem
// may represent a directory (bundles) or a single content file (e.g. p1.md).
// So, to avoid any overlapping ambiguity, we start looking from the owning directory.
ownerKey, _ := m.treePages.LongestPrefixAll(path.Dir(resourceKey))
if ownerKey != keyPage {
s := resourceKey

for {
s = path.Dir(s)
ownerKey, found := m.treePages.LongestPrefixAll(s)
if !found {
return true, nil
}
if ownerKey == keyPage {
break
}

if s != ownerKey && strings.HasPrefix(s, ownerKey) {
// Keep looking
continue
}

// Stop walking downwards, someone else owns this resource.
rw.SkipPrefix(ownerKey + "/")
return false, nil
Expand Down
29 changes: 29 additions & 0 deletions hugolib/content_map_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -361,6 +361,35 @@ p1-foo.txt
b.AssertFileExists("public/s1/p1/index.html", true)
}

// Issue 13228.
func TestBranchResourceOverlap(t *testing.T) {
t.Parallel()

files := `
-- hugo.toml --
disableKinds = ['page','rss','section','sitemap','taxonomy','term']
-- content/_index.md --
---
title: home
---
-- content/s1/_index.md --
---
title: s1
---
-- content/s1x/a.txt --
a.txt
-- layouts/index.html --
Home.
{{ range .Resources.Match "**" }}
{{ .Name }}|
{{ end }}
`

b := Test(t, files)

b.AssertFileContent("public/index.html", "s1x/a.txt|")
}

func TestSitemapOverrideFilename(t *testing.T) {
t.Parallel()

Expand Down

0 comments on commit c5a63a3

Please sign in to comment.