]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Fix multihost processed image not copied to non-default content languages
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 27 Feb 2024 08:15:47 +0000 (09:15 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 27 Feb 2024 09:43:23 +0000 (10:43 +0100)
Fixes #12163

hugolib/hugo_sites_multihost_test.go
resources/image_cache.go

index a9aad67b22de9528d7222565941978aa9fb3ce9f..4b779ee92164847b276d3e285b7992bc3b14754a 100644 (file)
@@ -162,6 +162,52 @@ title: "Mybundle fr"
        b.AssertFileContent("public/fr/section/mybundle/styles.min.css", ".body{color:french}")
 }
 
+func TestResourcePerLanguageIssue12163(t *testing.T) {
+       files := `
+-- hugo.toml --
+defaultContentLanguage = 'de'
+disableKinds = ['rss','sitemap','taxonomy','term']
+
+[languages.de]
+baseURL = 'https://de.example.org/'
+contentDir = 'content/de'
+weight = 1
+
+[languages.en]
+baseURL = 'https://en.example.org/'
+contentDir = 'content/en'
+weight = 2
+-- content/de/mybundle/index.md --
+---
+title: mybundle-de
+---
+-- content/de/mybundle/pixel.png --
+iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==
+-- content/en/mybundle/index.md --
+---
+title: mybundle-en
+---
+-- layouts/_default/single.html --
+{{ with .Resources.Get "pixel.png" }}
+  {{ with .Resize "2x2" }}
+    {{ .RelPermalink }}|
+  {{ end }}
+{{ end }}
+`
+
+       b := Test(t, files)
+
+       b.AssertFileExists("public/de/mybundle/index.html", true)
+       b.AssertFileExists("public/en/mybundle/index.html", true)
+
+       b.AssertFileExists("public/de/mybundle/pixel.png", true)
+       b.AssertFileExists("public/en/mybundle/pixel.png", true)
+
+       b.AssertFileExists("public/de/mybundle/pixel_hu8aa3346827e49d756ff4e630147c42b5_70_2x2_resize_box_3.png", true)
+       // failing test below
+       b.AssertFileExists("public/en/mybundle/pixel_hu8aa3346827e49d756ff4e630147c42b5_70_2x2_resize_box_3.png", true)
+}
+
 func TestMultihostResourceOneBaseURLWithSuPath(t *testing.T) {
        files := `
 -- hugo.toml --
index f9770ffc111703e5498d1b34ebd885cae64ffc02..d824c5d1a066066a84fede1df1b9e6defb94f798 100644 (file)
@@ -39,7 +39,16 @@ func (c *ImageCache) getOrCreate(
 ) (*resourceAdapter, error) {
        relTarget := parent.relTargetPathFromConfig(conf)
        relTargetPath := relTarget.TargetPath()
-       memKey := dynacache.CleanKey(relTargetPath)
+       memKey := relTargetPath
+
+       // For multihost sites, we duplicate language versions of the same resource,
+       // so we need to include the language in the key.
+       // Note that we don't need to include the language in the file cache key,
+       // as the hash will take care of any different content.
+       if c.pathSpec.Cfg.IsMultihost() {
+               memKey = c.pathSpec.Lang() + memKey
+       }
+       memKey = dynacache.CleanKey(memKey)
 
        v, err := c.mcache.GetOrCreate(memKey, func(key string) (*resourceAdapter, error) {
                var img *imageResource