shithub: hugo

Download patch

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
 }