]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Fix server refresh on 404 template changes
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 1 Jan 2025 12:48:18 +0000 (13:48 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Thu, 2 Jan 2025 10:21:25 +0000 (11:21 +0100)
Fixes #13209

hugolib/404_test.go
hugolib/content_map_page.go

index fef02090559e6018f238e7528c8bf132ad66a924..78cf0e70ce21bc7dc390c5e153ab82524ff7bf94 100644 (file)
@@ -14,6 +14,7 @@
 package hugolib
 
 import (
+       "fmt"
        "testing"
 )
 
@@ -82,3 +83,33 @@ Page not found
 Base:
 Page not found`)
 }
+
+func Test404EditTemplate(t *testing.T) {
+       t.Parallel()
+
+       files := `
+-- hugo.toml --
+baseURL = "http://example.com/"
+disableLiveReload = true
+[internal]
+fastRenderMode = true
+-- layouts/_default/baseof.html --
+Base: {{ block "main" . }}{{ end }}
+-- layouts/404.html --
+{{ define "main" }}
+Not found.
+{{ end }}
+       
+       `
+
+       b := TestRunning(t, files)
+
+       b.AssertFileContent("public/404.html", `Not found.`)
+
+       b.EditFiles("layouts/404.html", `Not found. Updated.`).Build()
+
+       fmt.Println("Rebuilding")
+       b.BuildPartial("/does-not-exist")
+
+       b.AssertFileContent("public/404.html", `Not found. Updated.`)
+}
index eda6f769ec23bfc79c54e39539c9971a0880daba..b369dfe13fddbbda752d02551822984421f91b65 100644 (file)
@@ -1274,7 +1274,7 @@ func (h *HugoSites) resolveAndResetDependententPageOutputs(ctx context.Context,
 
                po.renderState = 0
                po.p.resourcesPublishInit = &sync.Once{}
-               if r == identity.FinderFoundOneOfMany {
+               if r == identity.FinderFoundOneOfMany || po.f.Name == output.HTTPStatusHTMLFormat.Name {
                        // Will force a re-render even in fast render mode.
                        po.renderOnce = false
                }
@@ -1310,6 +1310,7 @@ func (h *HugoSites) resolveAndResetDependententPageOutputs(ctx context.Context,
                                if !po.isRendered() {
                                        continue
                                }
+
                                for _, id := range changes {
                                        checkedCounter.Add(1)
                                        if r := depsFinder.Contains(id, po.dependencyManagerOutput, 50); r > identity.FinderFoundOneOfManyRepetition {