hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
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:
Mhugolib/hugo_sites_rebuild_test.go | 25+++++++++++++++++++++++++
Mtpl/tplimpl/template.go | 6++++++
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
 }