hugolib: Fix preserveTaxonomyNames regression
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Thu, 23 Feb 2017 09:03:48 +0000 (10:03 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Thu, 23 Feb 2017 09:09:42 +0000 (10:09 +0100)
Fixes #3070

hugolib/hugo_sites.go
hugolib/site.go
hugolib/taxonomy_test.go

index dbaec164483d73b56a42e5aede5ded24f788a5d8..1a7bdf901dbdf08b818708ff2f86625ff02bd325 100644 (file)
@@ -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)
                                                }
index e2aa7449fb4fbd5fca6c35b73f63bd5e8f638515..860fa071d1a69b16dead301ac81fb5852d451168 100644 (file)
@@ -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)
        }
index bafb2c3611a7d7a380f987eb976be84d3074c8a1..919c3a55848caf7f4eeb97df565d549187431acc 100644 (file)
@@ -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)
+       }
+
 }