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
This commit is contained in:
Bjørn Erik Pedersen 2019-08-15 09:47:25 +02:00
parent ea9261e856
commit 9475f61a37
No known key found for this signature in database
GPG key ID: 330E6E2BD4859D8F
3 changed files with 43 additions and 8 deletions

View file

@ -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.

View file

@ -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

View file

@ -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)
}