Skip to content

Commit

Permalink
Make sure replaced pages gets marked as stale
Browse files Browse the repository at this point in the history
Fixes #12436
  • Loading branch information
bep committed Apr 30, 2024
1 parent 1961327 commit 9dd6870
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 3 deletions.
14 changes: 12 additions & 2 deletions hugolib/content_map_page.go
Original file line number Diff line number Diff line change
Expand Up @@ -824,6 +824,9 @@ func (s *contentNodeShifter) Insert(old, new contentNodeI) contentNodeI {
if !ok {
panic(fmt.Sprintf("unknown type %T", new))
}
if newp != old {
resource.MarkStale(old)
}
if vv.s.languagei == newp.s.languagei {
return new
}
Expand All @@ -836,7 +839,11 @@ func (s *contentNodeShifter) Insert(old, new contentNodeI) contentNodeI {
if !ok {
panic(fmt.Sprintf("unknown type %T", new))
}
resource.MarkStale(vv[newp.s.languagei])
oldp := vv[newp.s.languagei]
if oldp != newp {
resource.MarkStale(oldp)
}

vv[newp.s.languagei] = new
return vv
case *resourceSource:
Expand All @@ -856,7 +863,10 @@ func (s *contentNodeShifter) Insert(old, new contentNodeI) contentNodeI {
if !ok {
panic(fmt.Sprintf("unknown type %T", new))
}
resource.MarkStale(vv[newp.LangIndex()])
oldp := vv[newp.LangIndex()]
if oldp != newp {
resource.MarkStale(oldp)
}
vv[newp.LangIndex()] = newp
return vv
default:
Expand Down
36 changes: 36 additions & 0 deletions hugolib/rebuild_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1585,3 +1585,39 @@ title: p1
b.AddFiles("content/p2.md", "---\ntitle: p2\n---").Build()
b.AssertFileContent("public/index.html", "p1|p2|") // this test passes, which doesn't match reality
}

func TestRebuildHomeThenPageIssue12436(t *testing.T) {
t.Parallel()

files := `
-- hugo.toml --
baseURL = "https://example.com"
disableKinds = ['sitemap','taxonomy','term']
disableLiveReload = true
-- layouts/_default/list.html --
{{ .Content }}
-- layouts/_default/single.html --
{{ .Content }}
-- content/_index.md --
---
title: home
---
home-content|
-- content/p1/index.md --
---
title: p1
---
p1-content|
`

b := TestRunning(t, files)

b.AssertFileContent("public/index.html", "home-content|")
b.AssertFileContent("public/p1/index.html", "p1-content|")

b.EditFileReplaceAll("content/_index.md", "home-content", "home-content-foo").Build()
b.AssertFileContent("public/index.html", "home-content-foo")

b.EditFileReplaceAll("content/p1/index.md", "p1-content", "p1-content-foo").Build()
b.AssertFileContent("public/p1/index.html", "p1-content-foo")
}
2 changes: 1 addition & 1 deletion hugolib/site_benchmark_new_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -487,7 +487,7 @@ Edited!!`, p.Title()))

// We currently rebuild all the language versions of the same content file.
// We could probably optimize that case, but it's not trivial.
b.Assert(int(counters.contentRenderCounter.Load()), qt.Equals, 4)
b.Assert(int(counters.contentRenderCounter.Load()), qt.Equals, 33)
b.AssertFileContent("public"+p.RelPermalink()+"index.html", "Edited!!")
}

Expand Down

0 comments on commit 9dd6870

Please sign in to comment.