From bc0743ed8eafc3c2d9b21a1e8f1b05d64b85e8ba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?=
 <bjorn.erik.pedersen@gmail.com>
Date: Thu, 19 Aug 2021 11:30:50 +0200
Subject: [PATCH] Prevent minifier from removing quoutes around post-processed
 attributes

Fixes #8884
---
 hugolib/resource_chain_test.go | 7 +++++++
 resources/postpub/postpub.go   | 6 +++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/hugolib/resource_chain_test.go b/hugolib/resource_chain_test.go
index 834fe43570f..d40d4c02edd 100644
--- a/hugolib/resource_chain_test.go
+++ b/hugolib/resource_chain_test.go
@@ -457,8 +457,10 @@ func TestResourceChainPostProcess(t *testing.T) {
 
 	b := newTestSitesBuilder(t)
 	b.WithConfigFile("toml", `[minify]
+  minifyOutput = true
   [minify.tdewolff]
     [minify.tdewolff.html]
+      keepQuotes = false
       keepWhitespace = false`)
 	b.WithContent("page1.md", "---\ntitle: Page1\n---")
 	b.WithContent("page2.md", "---\ntitle: Page2\n---")
@@ -473,6 +475,9 @@ HELLO: {{ $hello.RelPermalink }}
 HELLO: {{ $hello.RelPermalink }}|Integrity: {{ $hello.Data.Integrity }}|MediaType: {{ $hello.MediaType.Type }}
 HELLO2: Name: {{ $hello.Name }}|Content: {{ $hello.Content }}|Title: {{ $hello.Title }}|ResourceType: {{ $hello.ResourceType }}
 
+// Issue #8884
+<a href="hugo.rocks">foo</a>
+<a href="{{ $hello.RelPermalink }}" integrity="{{ $hello.Data.Integrity}}">Hello</a>
 `+strings.Repeat("a b", rnd.Intn(10)+1)+`
 
 
@@ -484,6 +489,8 @@ End.`)
 		`Start.
 HELLO: /hello.min.a2d1cb24f24b322a7dad520414c523e9.html|Integrity: md5-otHLJPJLMip9rVIEFMUj6Q==|MediaType: text/html
 HELLO2: Name: hello.html|Content: <h1>Hello World!</h1>|Title: hello.html|ResourceType: text
+<a href=hugo.rocks>foo</a>
+<a href="/hello.min.a2d1cb24f24b322a7dad520414c523e9.html" integrity="md5-otHLJPJLMip9rVIEFMUj6Q==">Hello</a>
 End.`)
 
 	b.AssertFileContent("public/page1/index.html", `HELLO: /hello.min.a2d1cb24f24b322a7dad520414c523e9.html`)
diff --git a/resources/postpub/postpub.go b/resources/postpub/postpub.go
index 85b4221fdfb..c11dda5773a 100644
--- a/resources/postpub/postpub.go
+++ b/resources/postpub/postpub.go
@@ -39,7 +39,11 @@ type PostPublishedResource interface {
 
 const (
 	PostProcessPrefix = "__h_pp_l1"
-	PostProcessSuffix = "__e"
+
+	// The suffix has an '=' in it to prevent the minifier to remove any enclosing
+	// quoutes around the attribute values.
+	// See issue #8884.
+	PostProcessSuffix = "__e="
 )
 
 func NewPostPublishResource(id int, r resource.Resource) PostPublishedResource {