From af94fc2a52820094abc5f6026f4d7c0b84221815 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Mon, 8 Jan 2018 10:03:07 +0100 Subject: [PATCH] hugolib: Fix handling of mixed-case taxonomy folders with content file * We match by path vs taxonomy to determine if we have a content page for that taxonomy * The taxonomy name is (if `preserveTaxonomyNames` is not set) normalized to `maxmustermann` while you have the disk folder called `MaxMustermann`. * This isn't a new issue, but I suspect most people will just name the folder `authors/maxmustermann` and it will just work. * The inconsistent behaviour you see here is that you will end up with two pages with the same target filename, so it is a little random who will win. This fixes that by also normalizing the taxonomy path when doing the comparison. Fixes #4238 --- hugolib/hugo_sites.go | 6 +++++- hugolib/taxonomy_test.go | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/hugolib/hugo_sites.go b/hugolib/hugo_sites.go index 4211e91f665..fbaf27aa466 100644 --- a/hugolib/hugo_sites.go +++ b/hugolib/hugo_sites.go @@ -440,7 +440,11 @@ func (h *HugoSites) createMissingPages() error { key = s.PathSpec.MakePathSanitized(key) } for _, p := range taxonomyPages { - if p.sections[0] == plural && p.sections[1] == key { + // Some people may have /authors/MaxMustermann etc. as paths. + // p.sections contains the raw values from the file system. + // See https://github.com/gohugoio/hugo/issues/4238 + singularKey := s.PathSpec.MakePathSanitized(p.sections[1]) + if p.sections[0] == plural && singularKey == key { foundTaxonomyPage = true break } diff --git a/hugolib/taxonomy_test.go b/hugolib/taxonomy_test.go index 7d8d50aba6f..646fdd44f79 100644 --- a/hugolib/taxonomy_test.go +++ b/hugolib/taxonomy_test.go @@ -116,7 +116,7 @@ permalinkeds: writeSource(t, fs, "content/p4.md", fmt.Sprintf(pageTemplate, "Hello World", "", "", "- \"Hello Hugo world\"", "- pl1")) writeNewContentFile(t, fs, "Category Terms", "2017-01-01", "content/categories/_index.md", 10) - writeNewContentFile(t, fs, "Tag1 List", "2017-01-01", "content/tags/tag1/_index.md", 10) + writeNewContentFile(t, fs, "Tag1 List", "2017-01-01", "content/tags/Tag1/_index.md", 10) err := h.Build(BuildCfg{})