Repository: gohugoio/hugo (language: go)

Issue:
Editing 404 templates when server is running does not refresh



Discussion / hints:

Fix patch:
diff --git a/hugolib/content_map_page.go b/hugolib/content_map_page.go
index eda6f769ec2..b369dfe13fd 100644
--- a/hugolib/content_map_page.go
+++ b/hugolib/content_map_page.go
@@ -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 {


Test patch:
diff --git a/hugolib/404_test.go b/hugolib/404_test.go
index fef02090559..78cf0e70ce2 100644
--- a/hugolib/404_test.go
+++ b/hugolib/404_test.go
@@ -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.`)
+}