summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--hugolib/hugo_sites_build.go2
-rw-r--r--hugolib/site.go17
-rw-r--r--hugolib/site_test.go17
3 files changed, 32 insertions, 4 deletions
diff --git a/hugolib/hugo_sites_build.go b/hugolib/hugo_sites_build.go
index 059b0fe1e..2715e8977 100644
--- a/hugolib/hugo_sites_build.go
+++ b/hugolib/hugo_sites_build.go
@@ -168,7 +168,7 @@ func (h *HugoSites) assemble(config *BuildCfg) error {
for _, s := range h.Sites {
s.refreshPageCaches()
- s.setupPrevNext()
+ s.setupSitePages()
}
if err := h.assignMissingTranslations(); err != nil {
diff --git a/hugolib/site.go b/hugolib/site.go
index 31a8606f9..a9a150f7e 100644
--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -821,7 +821,9 @@ func (s *Site) process(config BuildCfg) (err error) {
}
-func (s *Site) setupPrevNext() {
+func (s *Site) setupSitePages() {
+ var siteLastChange time.Time
+
for i, page := range s.Pages {
if i < len(s.Pages)-1 {
page.Next = s.Pages[i+1]
@@ -830,7 +832,18 @@ func (s *Site) setupPrevNext() {
if i > 0 {
page.Prev = s.Pages[i-1]
}
+
+ // Determine Site.Info.LastChange
+ // Note that the logic to determine which date to use for Lastmod
+ // is already applied, so this is *the* date to use.
+ // We cannot just pick the last page in the default sort, because
+ // that may not be ordered by date.
+ if page.Lastmod.After(siteLastChange) {
+ siteLastChange = page.Lastmod
+ }
}
+
+ s.Info.LastChange = siteLastChange
}
func (s *Site) render() (err error) {
@@ -1371,8 +1384,6 @@ func (s *Site) buildSiteMeta() (err error) {
s.assembleMenus()
- s.Info.LastChange = s.Pages[0].Lastmod
-
return
}
diff --git a/hugolib/site_test.go b/hugolib/site_test.go
index 9629f763a..7919ba377 100644
--- a/hugolib/site_test.go
+++ b/hugolib/site_test.go
@@ -184,6 +184,23 @@ func TestFutureExpirationRender(t *testing.T) {
}
}
+func TestLastChange(t *testing.T) {
+ t.Parallel()
+
+ cfg, fs := newTestCfg()
+
+ writeSource(t, fs, filepath.Join("content", "sect/doc1.md"), "---\ntitle: doc1\nweight: 1\ndate: 2014-05-29\n---\n# doc1\n*some content*")
+ writeSource(t, fs, filepath.Join("content", "sect/doc2.md"), "---\ntitle: doc2\nweight: 2\ndate: 2015-05-29\n---\n# doc2\n*some content*")
+ writeSource(t, fs, filepath.Join("content", "sect/doc3.md"), "---\ntitle: doc3\nweight: 3\ndate: 2017-05-29\n---\n# doc3\n*some content*")
+ writeSource(t, fs, filepath.Join("content", "sect/doc4.md"), "---\ntitle: doc4\nweight: 4\ndate: 2016-05-29\n---\n# doc4\n*some content*")
+ writeSource(t, fs, filepath.Join("content", "sect/doc5.md"), "---\ntitle: doc5\nweight: 3\n---\n# doc5\n*some content*")
+
+ s := buildSingleSite(t, deps.DepsCfg{Fs: fs, Cfg: cfg}, BuildCfg{SkipRender: true})
+
+ require.False(t, s.Info.LastChange.IsZero(), "Site.LastChange is zero")
+ require.Equal(t, 2017, s.Info.LastChange.Year(), "Site.LastChange should be set to the page with latest Lastmod (year 2017)")
+}
+
// Issue #957
func TestCrossrefs(t *testing.T) {
t.Parallel()