ref: 9475f61a377fcf23f910cbfd4ddca59261326665
parent: ea9261e856c13c1d4ae05fcca08766d410b4b65c
author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
date: Thu Aug 15 05:47:25 EDT 2019
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
--- a/hugolib/pagecollections.go
+++ b/hugolib/pagecollections.go
@@ -466,14 +466,6 @@
}
}
- 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.
--- a/hugolib/pages_map.go
+++ b/hugolib/pages_map.go
@@ -100,6 +100,17 @@
}
}
}
+
+ // 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
--- a/hugolib/taxonomy_test.go
+++ b/hugolib/taxonomy_test.go
@@ -320,3 +320,35 @@
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)
+
+}