ref: b0d850321e58a052ead25f7014b7851f63497601
parent: b66d38c41939252649365822d9edb10cf5990617
author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
date: Fri Feb 28 07:39:58 EST 2020
Fix rebuild logic when editing template using a base template We have been doing too much work in that case. Fixes #6968
--- a/hugolib/hugo_sites_rebuild_test.go
+++ b/hugolib/hugo_sites_rebuild_test.go
@@ -15,6 +15,8 @@
import (
"testing"
+
+ qt "github.com/frankban/quicktest"
)
func TestSitesRebuild(t *testing.T) {
@@ -139,6 +141,29 @@
b.AssertFileContent("public/index.html", `
Data: Rules!
Data Inline: Rules!`)
+
+ })
+
+ // https://github.com/gohugoio/hugo/issues/6968
+ t.Run("Edit single.html with base", func(t *testing.T) {
+ b := newTestSitesBuilder(t).Running()
+
+ b.WithTemplates(
+ "_default/single.html", `{{ define "main" }}Single{{ end }}`,
+ "_default/baseof.html", `Base: {{ block "main" .}}Block{{ end }}`,
+ )
+
+ b.WithContent("p1.md", "---\ntitle: Page\n---")
+
+ b.Build(BuildCfg{})
+
+ b.EditFiles("layouts/_default/single.html", `Single Edit: {{ define "main" }}Single{{ end }}`)
+
+ counters := &testCounters{}
+
+ b.Build(BuildCfg{testCounters: counters})
+
+ b.Assert(int(counters.contentRenderCounter), qt.Equals, 0)
})
--- a/tpl/tplimpl/template.go
+++ b/tpl/tplimpl/template.go
@@ -383,9 +383,15 @@
}
func (t *templateHandler) HasTemplate(name string) bool {
+
if _, found := t.baseof[name]; found {
return true
}
+
+ if _, found := t.needsBaseof[name]; found {
+ return true
+ }
+
_, found := t.Lookup(name)
return found
}