diff --git a/hugolib/hugo_sites.go b/hugolib/hugo_sites.go index dbaec1644..1a7bdf901 100644 --- a/hugolib/hugo_sites.go +++ b/hugolib/hugo_sites.go @@ -326,6 +326,8 @@ func (h *HugoSites) createMissingPages() error { foundTaxonomyTermsPage := false for key := range tax { foundTaxonomyPage := false + origKey := key + if s.Info.preserveTaxonomyNames { key = s.PathSpec.MakePathSanitized(key) } @@ -344,7 +346,7 @@ func (h *HugoSites) createMissingPages() error { if s.isEnabled(KindTaxonomy) { if !foundTaxonomyPage { - n := s.newTaxonomyPage(plural, key) + n := s.newTaxonomyPage(plural, origKey) s.Pages = append(s.Pages, n) newPages = append(newPages, n) } diff --git a/hugolib/site.go b/hugolib/site.go index e2aa7449f..860fa071d 100644 --- a/hugolib/site.go +++ b/hugolib/site.go @@ -2097,12 +2097,11 @@ func (s *Site) newTaxonomyPage(plural, key string) *Page { p.sections = []string{plural, key} if s.Info.preserveTaxonomyNames { + // Keep (mostly) as is in the title + // We make the first character upper case, mostly because + // it is easier to reason about in the tests. + p.Title = helpers.FirstUpper(key) key = s.PathSpec.MakePathSanitized(key) - } - - if s.Info.preserveTaxonomyNames { - // keep as is in the title - p.Title = key } else { p.Title = strings.Replace(strings.Title(key), "-", " ", -1) } diff --git a/hugolib/taxonomy_test.go b/hugolib/taxonomy_test.go index bafb2c361..919c3a558 100644 --- a/hugolib/taxonomy_test.go +++ b/hugolib/taxonomy_test.go @@ -49,12 +49,21 @@ func TestByCountOrderOfTaxonomies(t *testing.T) { } } -// Issue #2992 func TestTaxonomiesWithAndWithoutContentFile(t *testing.T) { + for _, preserveTaxonomyNames := range []bool{false, true} { + t.Run(fmt.Sprintf("preserveTaxonomyNames %t", preserveTaxonomyNames), func(t *testing.T) { + doTestTaxonomiesWithAndWithoutContentFile(t, preserveTaxonomyNames) + }) + + } +} + +func doTestTaxonomiesWithAndWithoutContentFile(t *testing.T, preserveTaxonomyNames bool) { t.Parallel() siteConfig := ` baseURL = "http://example.com/blog" +preserveTaxonomyNames = %t paginate = 1 defaultContentLanguage = "en" @@ -77,6 +86,8 @@ others: # Doc ` + siteConfig = fmt.Sprintf(siteConfig, preserveTaxonomyNames) + th, h := newTestSitesFromConfigWithDefaultTemplates(t, siteConfig) require.Len(t, h.Sites, 1) @@ -85,6 +96,7 @@ others: writeSource(t, fs, "content/p1.md", fmt.Sprintf(pageTemplate, "t1/c1", "- tag1", "- cat1", "- o1")) writeSource(t, fs, "content/p2.md", fmt.Sprintf(pageTemplate, "t2/c1", "- tag2", "- cat1", "- o1")) writeSource(t, fs, "content/p3.md", fmt.Sprintf(pageTemplate, "t2/c12", "- tag2", "- cat2", "- o1")) + writeSource(t, fs, "content/p4.md", fmt.Sprintf(pageTemplate, "Hello World", "", "", "- \"Hello Hugo world\"")) 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) @@ -122,4 +134,15 @@ others: require.Len(t, cat.Data["Pages"], 3) require.Equal(t, "t1/c1", cat.Pages[0].Title) + // Issue #3070 preserveTaxonomyNames + if preserveTaxonomyNames { + helloWorld := s.getPage(KindTaxonomy, "others", "Hello Hugo world") + require.NotNil(t, helloWorld) + require.Equal(t, "Hello Hugo world", helloWorld.Title) + } else { + helloWorld := s.getPage(KindTaxonomy, "others", "hello-hugo-world") + require.NotNil(t, helloWorld) + require.Equal(t, "Hello Hugo World", helloWorld.Title) + } + }