Fix permalinks issue with repeated sections

Fixes #10377
This commit is contained in:
Bjørn Erik Pedersen 2023-01-17 11:00:38 +01:00
parent 2fb40ece5d
commit 671f64b2eb
3 changed files with 41 additions and 1 deletions

View file

@ -136,3 +136,42 @@ Sort: [éclair emma xylophone zulu]
ByWeight: alpha|émotion|zulu|
`)
}
// See #10377
func TestPermalinkExpansionSectionsRepeated(t *testing.T) {
t.Parallel()
files := `
-- hugo.toml --
disableKinds = ["home", "taxonomy", "taxonomyTerm", "sitemap"]
[outputs]
home = ["HTML"]
page = ["HTML"]
section = ["HTML"]
[outputFormats]
[permalinks]
posts = '/:sections[1]/:sections[last]/:slug'
-- content/posts/_index.md --
-- content/posts/a/_index.md --
-- content/posts/a/b/_index.md --
-- content/posts/a/b/c/_index.md --
-- content/posts/a/b/c/d.md --
---
title: "D"
slug: "d"
---
D
-- layouts/_default/single.html --
RelPermalink: {{ .RelPermalink }}
`
b := hugolib.NewIntegrationTestBuilder(
hugolib.IntegrationTestConfig{
T: t,
TxtarString: files,
}).Build()
b.AssertFileContent("public/a/c/d/index.html", "RelPermalink: /a/c/d/")
}

View file

@ -176,7 +176,7 @@ func (l PermalinkExpander) parse(patterns map[string]string) (map[string]func(Pa
// can return a string to go in that position in the page (or an error)
type pageToPermaAttribute func(Page, string) (string, error)
var attributeRegexp = regexp.MustCompile(`:\w+(\[.+\])?`)
var attributeRegexp = regexp.MustCompile(`:\w+(\[.+?\])?`)
// validate determines if a PathPattern is well-formed
func (l PermalinkExpander) validate(pp string) bool {

View file

@ -42,6 +42,7 @@ var testdataPermalinks = []struct {
{"/:2006_01_02_15_04_05.000", true, "/2012_04_06_03_01_59.000"}, // Complicated custom date format
{"/:sections/", true, "/a/b/c/"}, // Sections
{"/:sections[last]/", true, "/c/"}, // Sections
{"/:sections[0]/:sections[last]/", true, "/a/c/"}, // Sections
// Failures
{"/blog/:fred", false, ""},