Repository: gohugoio/hugo (language: go)

Issue:
Add warning (using Warnidf) on Goldmark <!-- raw HTML omitted -->
With a link to https://gohugo.io/getting-started/configuration-markup/#rendererunsafe




Discussion / hints:

Fix patch:
diff --git a/common/constants/constants.go b/common/constants/constants.go
index 752aef72c3c..48813e79b99 100644
--- a/common/constants/constants.go
+++ b/common/constants/constants.go
@@ -22,6 +22,7 @@ const (
 
 	WarnFrontMatterParamsOverrides = "warning-frontmatter-params-overrides"
 	WarnRenderShortcodesInHTML     = "warning-rendershortcodes-in-html"
+	WarnGoldmarkRawHTML            = "warning-goldmark-raw-html"
 )
 
 // Field/method names with special meaning.
diff --git a/markup/goldmark/hugocontext/hugocontext.go b/markup/goldmark/hugocontext/hugocontext.go
index 223c30c912e..912e9eb3c8b 100644
--- a/markup/goldmark/hugocontext/hugocontext.go
+++ b/markup/goldmark/hugocontext/hugocontext.go
@@ -159,6 +159,14 @@ func (r *hugoContextRenderer) renderHTMLBlock(
 	w util.BufWriter, source []byte, node ast.Node, entering bool,
 ) (ast.WalkStatus, error) {
 	n := node.(*ast.HTMLBlock)
+	var p any
+	ctx, ok := w.(*render.Context)
+	if ok {
+		p, _ = render.GetPageAndPageInner(ctx)
+	}
+	if !r.Unsafe {
+		r.logger.Warnidf(constants.WarnGoldmarkRawHTML, "Raw HTML omitted from %q; see https://gohugo.io/getting-started/configuration-markup/#rendererunsafe", p)
+	}
 	if entering {
 		if r.Unsafe {
 			l := n.Lines().Len()
@@ -168,11 +176,6 @@ func (r *hugoContextRenderer) renderHTMLBlock(
 				var stripped bool
 				linev, stripped = r.stripHugoCtx(linev)
 				if stripped {
-					var p any
-					ctx, ok := w.(*render.Context)
-					if ok {
-						p, _ = render.GetPageAndPageInner(ctx)
-					}
 					r.logger.Warnidf(constants.WarnRenderShortcodesInHTML, ".RenderShortcodes detected inside HTML block in %q; this may not be what you intended, see https://gohugo.io/methods/page/rendershortcodes/#limitations", p)
 				}
 


Test patch:
diff --git a/markup/goldmark/goldmark_integration_test.go b/markup/goldmark/goldmark_integration_test.go
index 19b18692e28..8b7cc5a5432 100644
--- a/markup/goldmark/goldmark_integration_test.go
+++ b/markup/goldmark/goldmark_integration_test.go
@@ -802,3 +802,28 @@ H~2~0
 		"<p>1<sup>st</sup></p>",
 	)
 }
+
+// Issue 12997.
+func TestGoldmarkRawHTMLWarning(t *testing.T) {
+	files := `
+-- hugo.toml --
+disableKinds = ['home','rss','section','sitemap','taxonomy','term']
+markup.goldmark.renderer.unsafe = false
+-- content/p1.md --
+---
+title: "p1"
+---
+<div>Some raw HTML</div>
+-- layouts/_default/single.html --
+{{ .Content }}
+`
+
+	b := hugolib.Test(t, files, hugolib.TestOptWarn())
+
+	b.AssertFileContent("public/p1/index.html", "<!-- raw HTML omitted -->")
+	b.AssertLogContains("WARN  Raw HTML omitted from \"/content/p1.md\"; see https://gohugo.io/getting-started/configuration-markup/#rendererunsafe\nYou can suppress this warning by adding the following to your site configuration:\nignoreLogs = ['warning-goldmark-raw-html']")
+
+	b = hugolib.Test(t, strings.ReplaceAll(files, "markup.goldmark.renderer.unsafe = false", "markup.goldmark.renderer.unsafe = true"), hugolib.TestOptWarn())
+	b.AssertFileContent("public/p1/index.html", "! <!-- raw HTML omitted -->")
+	b.AssertLogContains("! WARN")
+}