mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
parent
6738a3e79d
commit
983b8d537c
2 changed files with 46 additions and 2 deletions
|
@ -489,12 +489,17 @@ func (m *pageMap) forEachResourceInPage(
|
||||||
|
|
||||||
rw.Handle = func(resourceKey string, n contentNodeI, match doctree.DimensionFlag) (bool, error) {
|
rw.Handle = func(resourceKey string, n contentNodeI, match doctree.DimensionFlag) (bool, error) {
|
||||||
if isBranch {
|
if isBranch {
|
||||||
ownerKey, _ := m.treePages.LongestPrefixAll(resourceKey)
|
// A resourceKey always represents a filename with extension.
|
||||||
if ownerKey != keyPage && path.Dir(ownerKey) != path.Dir(resourceKey) {
|
// 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 {
|
||||||
// Stop walking downwards, someone else owns this resource.
|
// Stop walking downwards, someone else owns this resource.
|
||||||
rw.SkipPrefix(ownerKey + "/")
|
rw.SkipPrefix(ownerKey + "/")
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return handle(resourceKey, n, match)
|
return handle(resourceKey, n, match)
|
||||||
}
|
}
|
||||||
|
|
|
@ -919,3 +919,42 @@ GetMatch: {{ with .Resources.GetMatch "f1.*" }}{{ .Name }}: {{ .Content }}|{{ en
|
||||||
|
|
||||||
b.AssertFileContent("public/mybundle/index.html", "GetMatch: f1.en.txt: F1.|")
|
b.AssertFileContent("public/mybundle/index.html", "GetMatch: f1.en.txt: F1.|")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestBundleBranchIssue12320(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
files := `
|
||||||
|
-- hugo.toml --
|
||||||
|
disableKinds = ['rss','sitemap','taxonomy','term']
|
||||||
|
defaultContentLanguage = 'en'
|
||||||
|
defaultContentLanguageInSubdir = true
|
||||||
|
[languages.en]
|
||||||
|
baseURL = "https://en.example.org/"
|
||||||
|
contentDir = "content/en"
|
||||||
|
[languages.fr]
|
||||||
|
baseURL = "https://fr.example.org/"
|
||||||
|
contentDir = "content/fr"
|
||||||
|
-- content/en/s1/p1.md --
|
||||||
|
---
|
||||||
|
title: p1
|
||||||
|
---
|
||||||
|
-- content/en/s1/p1.txt --
|
||||||
|
---
|
||||||
|
p1.txt
|
||||||
|
---
|
||||||
|
-- layouts/_default/single.html --
|
||||||
|
{{ .Title }}|
|
||||||
|
-- layouts/_default/list.html --
|
||||||
|
{{ .Title }}|
|
||||||
|
`
|
||||||
|
|
||||||
|
b := Test(t, files)
|
||||||
|
|
||||||
|
b.AssertFileExists("public/en/s1/index.html", true)
|
||||||
|
b.AssertFileExists("public/en/s1/p1/index.html", true)
|
||||||
|
b.AssertFileExists("public/en/s1/p1.txt", true)
|
||||||
|
|
||||||
|
b.AssertFileExists("public/fr/s1/index.html", false)
|
||||||
|
b.AssertFileExists("public/fr/s1/p1/index.html", false)
|
||||||
|
b.AssertFileExists("public/fr/s1/p1.txt", false) // failing test
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue