]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Make sure replaced pages gets marked as stale
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 30 Apr 2024 16:25:55 +0000 (18:25 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 30 Apr 2024 18:57:44 +0000 (20:57 +0200)
Fixes #12436

hugolib/content_map_page.go
hugolib/rebuild_test.go
hugolib/site_benchmark_new_test.go

index 50e1bc35dcb709aad552adae055299f78031fd3f..5a6b49c55d0ebf31b2430838f703170f208fb6b7 100644 (file)
@@ -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
                }
@@ -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:
@@ -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:
index 4336d8b61057981528427055e9a3ccd36ad10f14..a847af3afc95bc0034bd177fe16cdb70a0800f5e 100644 (file)
@@ -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")
+}
index 023d8e4d5f96c6df170c2261892385c2a7adbd99..c028ca526fd076770c136e6113f54beaf9845d08 100644 (file)
@@ -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!!")
 }