Fix rebuild logic when editing template using a base template

We have been doing too much work in that case.

Fixes #6968
This commit is contained in:
Bjørn Erik Pedersen 2020-02-28 12:39:58 +01:00
parent b66d38c419
commit b0d850321e
2 changed files with 31 additions and 0 deletions

View file

@ -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)

View file

@ -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
}