From 9475f61a377fcf23f910cbfd4ddca59261326665 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Thu, 15 Aug 2019 09:47:25 +0200 Subject: [PATCH] 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 --- hugolib/pagecollections.go | 8 -------- hugolib/pages_map.go | 11 +++++++++++ hugolib/taxonomy_test.go | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 8 deletions(-) diff --git a/hugolib/pagecollections.go b/hugolib/pagecollections.go index 4b006425267..01a194ac1f8 100644 --- 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 index 26bbedec6df..c7a74c4c11c 100644 --- 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 index ccad3a2075d..294e4f1a0db 100644 --- a/hugolib/taxonomy_test.go +++ b/hugolib/taxonomy_test.go @@ -320,3 +320,35 @@ Content. b.AssertFileContent("public/tags/index.html", `
  • Rocks I say! 10
  • `) } + +// 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) + +}