From e4ad0c52713f228397e37416060f78f08a9265cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Wed, 16 Oct 2024 16:59:12 +0200 Subject: [PATCH] Never sanitize when url set in front matter Fixes #12954 --- resources/page/page_paths.go | 2 +- resources/page/permalinks_integration_test.go | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/resources/page/page_paths.go b/resources/page/page_paths.go index 4826ed5f9b1..ea22eab8198 100644 --- a/resources/page/page_paths.go +++ b/resources/page/page_paths.go @@ -254,7 +254,7 @@ func CreateTargetPaths(d TargetPathDescriptor) (tp TargetPaths) { // if page URL is explicitly set in frontmatter, // preserve its value without sanitization - if d.Kind != kinds.KindPage || d.URL == "" { + if d.URL == "" { // Note: MakePathSanitized will lower case the path if // disablePathToLower isn't set. pb.Sanitize() diff --git a/resources/page/permalinks_integration_test.go b/resources/page/permalinks_integration_test.go index 4188c70ca0c..52bcd686080 100644 --- a/resources/page/permalinks_integration_test.go +++ b/resources/page/permalinks_integration_test.go @@ -235,6 +235,7 @@ slug: custom-recipe-2 } // Issue 12948. +// Issue 12954. func TestPermalinksWithEscapedColons(t *testing.T) { t.Parallel() @@ -244,9 +245,14 @@ func TestPermalinksWithEscapedColons(t *testing.T) { files := ` -- hugo.toml -- -disableKinds = ['home','rss','section','sitemap','taxonomy','term'] +disableKinds = ['home','rss','sitemap','taxonomy','term'] [permalinks.page] s2 = "/c\\:d/:slug/" +-- content/s1/_index.md -- +--- +title: s1 +url: "/a\\:b/:slug/" +--- -- content/s1/p1.md -- --- title: p1 @@ -258,13 +264,16 @@ title: p2 --- -- layouts/_default/single.html -- {{ .Title }} +-- layouts/_default/list.html -- +{{ .Title }} ` b := hugolib.Test(t, files) b.AssertFileExists("public/a:b/p1/index.html", true) + b.AssertFileExists("public/a:b/s1/index.html", true) - // The above URL comes from the URL front matter field where everything is allowed. + // The above URLs come from the URL front matter field where everything is allowed. // We strip colons from paths constructed by Hugo (they are not supported on Windows). b.AssertFileExists("public/cd/p2/index.html", true) }