summaryrefslogtreecommitdiffstats
path: root/hugolib
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2024-01-30 22:26:55 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2024-01-31 10:06:04 +0100
commitbd66d30295e5454bb076d3108a89f6c3ad9bcde8 (patch)
treeeb243a8de3d9da8cb96049fb06fc4e7bdc6e55b7 /hugolib
parent7caa5b3e501b81ecf78554db287b7762200c2728 (diff)
Filter out duplicate content resource files
We do a slight normalisation of the content paths (lower case, replacing " " with "-") and remove andy language identifier before inserting them into the content tree. This means that, given that that the default content language is `en`: ``` index.md index.html Foo Bar.txt foo-bar.txt foo-bar.en.txt Foo-Bar.txt ``` The bundle above will be reduced to one content file with one resource (`foo-bar.txt`). Before this commit, what version of the `foo-bar.txt` you ended up with was undeterministic. No we pick the first determined by sort order. Note that the sort order is stable, but we recommend avoiding situations like the above. Closes #11946
Diffstat (limited to 'hugolib')
-rw-r--r--hugolib/content_map_test.go27
1 files changed, 27 insertions, 0 deletions
diff --git a/hugolib/content_map_test.go b/hugolib/content_map_test.go
index 7843ad285..c666e2a45 100644
--- a/hugolib/content_map_test.go
+++ b/hugolib/content_map_test.go
@@ -299,3 +299,30 @@ R: {{ with $r }}{{ .Content }}{{ end }}|
b.AssertFileContent("public/index.html", "R: Data.")
}
+
+// Issue #11946.
+func TestBundleResourcesGetDuplicateSortOrder(t *testing.T) {
+ files := `
+-- hugo.toml --
+baseURL = "https://example.com"
+-- content/bundle/index.md --
+-- content/bundle/data-1.txt --
+data-1.txt
+-- content/bundle/data 1.txt --
+data 1.txt
+-- content/bundle/Data 1.txt --
+Data 1.txt
+-- content/bundle/Data-1.txt --
+Data-1.txt
+-- layouts/index.html --
+{{ $bundle := site.GetPage "bundle" }}
+{{ $r := $bundle.Resources.Get "data-1.txt" }}
+R: {{ with $r }}{{ .Content }}{{ end }}|Len: {{ len $bundle.Resources }}|$
+
+`
+
+ for i := 0; i < 3; i++ {
+ b := Test(t, files)
+ b.AssertFileContent("public/index.html", "R: Data 1.txt|", "Len: 1|")
+ }
+}