shithub: hugo

Download patch

ref: 6a30874f19610a38e846e120aac03c68e12f9b7b
parent: 15ec031d9818d239bfbff525c00cd99cc3118a96
author: Bjørn Erik Pedersen <[email protected]>
date: Fri Oct 13 06:21:28 EDT 2017

Make sure Date and PublishDate is always set to a value if one is available

Fixes #3854

--- a/hugolib/page.go
+++ b/hugolib/page.go
@@ -1147,6 +1147,14 @@
 	}
 	p.Params["draft"] = p.Draft
 
+	if p.Date.IsZero() {
+		p.Date = p.PublishDate
+	}
+
+	if p.PublishDate.IsZero() {
+		p.PublishDate = p.Date
+	}
+
 	if p.Date.IsZero() && p.s.Cfg.GetBool("useModTimeAsFallback") {
 		fi, err := p.s.Fs.Source.Stat(filepath.Join(p.s.PathSpec.AbsPathify(p.s.Cfg.GetString("contentDir")), p.File.Path()))
 		if err == nil {
--- a/hugolib/page_test.go
+++ b/hugolib/page_test.go
@@ -714,6 +714,42 @@
 	}
 }
 
+// Issue #3854
+func TestPageWithDateFields(t *testing.T) {
+	assert := require.New(t)
+	pageWithDate := `---
+title: P%d
+weight: %d
+%s: 2017-10-13
+---
+Simple Page With Some Date`
+
+	hasBothDates := func(p *Page) bool {
+		return p.Date.Year() == 2017 && p.PublishDate.Year() == 2017
+	}
+
+	datePage := func(field string, weight int) string {
+		return fmt.Sprintf(pageWithDate, weight, weight, field)
+	}
+
+	t.Parallel()
+	assertFunc := func(t *testing.T, ext string, pages Pages) {
+		assert.True(len(pages) > 0)
+		for _, p := range pages {
+			assert.True(hasBothDates(p))
+		}
+
+	}
+
+	fields := []string{"date", "publishdate", "pubdate", "published"}
+	pageContents := make([]string, len(fields))
+	for i, field := range fields {
+		pageContents[i] = datePage(field, i+1)
+	}
+
+	testAllMarkdownEnginesForPages(t, assertFunc, nil, pageContents...)
+}
+
 // Issue #2601
 func TestPageRawContent(t *testing.T) {
 	t.Parallel()
--- a/hugolib/site_test.go
+++ b/hugolib/site_test.go
@@ -750,15 +750,6 @@
 	if bydate[1].Key != "2012-01" {
 		t.Errorf("PageGroup array in unexpected order. Second group key should be '%s', got '%s'", "2012-01", bydate[1].Key)
 	}
-	if bydate[2].Key != "2012-04" {
-		t.Errorf("PageGroup array in unexpected order. Third group key should be '%s', got '%s'", "2012-04", bydate[2].Key)
-	}
-	if bydate[2].Pages[0].Title != "Three" {
-		t.Errorf("PageGroup has an unexpected page. Third group's pages should have '%s', got '%s'", "Three", bydate[2].Pages[0].Title)
-	}
-	if len(bydate[0].Pages) != 2 {
-		t.Errorf("PageGroup has unexpected number of pages. First group should have '%d' pages, got '%d' pages", 2, len(bydate[2].Pages))
-	}
 
 	bypubdate, err := s.RegularPages.GroupByPublishDate("2006")
 	if err != nil {