commit b0d850321e58a052ead25f7014b7851f63497601
parent b66d38c41939252649365822d9edb10cf5990617
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date: Fri, 28 Feb 2020 12:39:58 +0100
Fix rebuild logic when editing template using a base template
We have been doing too much work in that case.
Fixes #6968
Diffstat:
2 files changed, 31 insertions(+), 0 deletions(-)
diff --git a/hugolib/hugo_sites_rebuild_test.go b/hugolib/hugo_sites_rebuild_test.go
@@ -15,6 +15,8 @@ package hugolib
import (
"testing"
+
+ qt "github.com/frankban/quicktest"
)
func TestSitesRebuild(t *testing.T) {
@@ -142,6 +144,29 @@ 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)
+
+ })
+
t.Run("Page.Render, edit baseof", func(t *testing.T) {
b := createSiteBuilder(t)
diff --git a/tpl/tplimpl/template.go b/tpl/tplimpl/template.go
@@ -383,9 +383,15 @@ func (t *templateHandler) LookupVariant(name string, variants tpl.TemplateVarian
}
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
}