hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
commit 9475f61a377fcf23f910cbfd4ddca59261326665
parent ea9261e856c13c1d4ae05fcca08766d410b4b65c
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date:   Thu, 15 Aug 2019 09:47:25 +0200

hugolib: Fix taxonomies vs expired

In Hugo 0.57 we needed to delay the page metadata initialization until we had built the page graph.

This introduced a regression in that we now created taxonomy entries for expired pages.

This fixes that by moving the "should not build" filter before we assemble the taxonomies.

Fixes #6213

Diffstat:
Mhugolib/pagecollections.go | 8--------
Mhugolib/pages_map.go | 11+++++++++++
Mhugolib/taxonomy_test.go | 32++++++++++++++++++++++++++++++++
3 files changed, 43 insertions(+), 8 deletions(-)
diff --git a/hugolib/pagecollections.go b/hugolib/pagecollections.go
@@ -466,14 +466,6 @@ func (c *PageCollections) createWorkAllPages() error {
 			}
 		}
 
-		tmp := bucket.pages[:0]
-		for _, x := range bucket.pages {
-			if c.pagesMap.s.shouldBuild(x) {
-				tmp = append(tmp, x)
-			}
-		}
-		bucket.pages = tmp
-
 		if bucket.isEmpty() {
 			if bucket.owner.IsSection() && bucket.owner.File().IsZero() {
 				// Check for any nested section.
diff --git a/hugolib/pages_map.go b/hugolib/pages_map.go
@@ -100,6 +100,17 @@ func (m *pagesMap) initPageMetaFor(prefix string, bucket *pagesMapBucket) error 
 				}
 			}
 		}
+
+		// Now that the metadata is initialized (with dates, draft set etc.)
+		// we can remove the pages that we for some reason should not include
+		// in this build.
+		tmp := bucket.pages[:0]
+		for _, x := range bucket.pages {
+			if m.s.shouldBuild(x) {
+				tmp = append(tmp, x)
+			}
+		}
+		bucket.pages = tmp
 	}
 
 	return nil
diff --git a/hugolib/taxonomy_test.go b/hugolib/taxonomy_test.go
@@ -320,3 +320,35 @@ Content.
 	b.AssertFileContent("public/tags/index.html", `<li><a href="http://example.com/tags/rocks-i-say/">Rocks I say!</a> 10</li>`)
 
 }
+
+// Issue 6213
+func TestTaxonomiesNotForDrafts(t *testing.T) {
+	t.Parallel()
+
+	b := newTestSitesBuilder(t)
+	b.WithContent("draft.md", `---
+title: "Draft"
+draft: true
+categories: ["drafts"]
+---
+
+`,
+		"regular.md", `---
+title: "Not Draft"
+categories: ["regular"]
+---
+
+`)
+
+	b.Build(BuildCfg{})
+	s := b.H.Sites[0]
+
+	b.Assert(b.CheckExists("public/categories/regular/index.html"), qt.Equals, true)
+	b.Assert(b.CheckExists("public/categories/drafts/index.html"), qt.Equals, false)
+
+	reg, _ := s.getPageNew(nil, "categories/regular")
+	dra, _ := s.getPageNew(nil, "categories/draft")
+	b.Assert(reg, qt.Not(qt.IsNil))
+	b.Assert(dra, qt.IsNil)
+
+}