shithub: hugo

Download patch

ref: bc36d468ab56b5bcf01c3dc1478b1818dd17e4ff
parent: 7da1b65968cd78970de8c8b61f5056dc7b0ec6b2
author: Bjørn Erik Pedersen <[email protected]>
date: Tue Apr 4 13:21:04 EDT 2017

tplimpl: Reintroduce the double template lookup in Partial

So it works as before without the html suffix.

Fixes #3272

--- a/tpl/tplimpl/templateFuncster.go
+++ b/tpl/tplimpl/templateFuncster.go
@@ -63,6 +63,10 @@
 
 	for _, n := range []string{"partials/" + name, "theme/partials/" + name} {
 		templ := t.Tmpl.Lookup(n)
+		if templ == nil {
+			// For legacy reasons.
+			templ = t.Tmpl.Lookup(n + ".html")
+		}
 		if templ != nil {
 			b := bp.GetBuffer()
 			defer bp.PutBuffer(b)
--- a/tpl/tplimpl/template_funcs_test.go
+++ b/tpl/tplimpl/template_funcs_test.go
@@ -2908,6 +2908,40 @@
 
 }
 
+func TestPartialHTMLWithNoSuffix(t *testing.T) {
+	t.Parallel()
+	config := newDepsConfig(viper.New())
+
+	data := struct {
+		Name string
+	}{
+		Name: "a",
+	}
+
+	config.WithTemplate = func(templ tpl.TemplateHandler) error {
+		if err := templ.AddTemplate("htmlTemplate.html", `HTML Test Partial: {{ partial "test" . -}}`); err != nil {
+			return err
+		}
+
+		if err := templ.AddTemplate("partials/test.html", "HTML Name: {{ .Name }}"); err != nil {
+			return err
+		}
+		return nil
+	}
+
+	de, err := deps.New(config)
+	require.NoError(t, err)
+	require.NoError(t, de.LoadResources())
+
+	templ := de.Tmpl.Lookup("htmlTemplate.html")
+	require.NotNil(t, templ)
+	resultHTML, err := templ.ExecuteToString(data)
+	require.NoError(t, err)
+
+	require.Contains(t, resultHTML, "HTML Test Partial: HTML Name: a")
+
+}
+
 func TestPartialWithError(t *testing.T) {
 	t.Parallel()
 	config := newDepsConfig(viper.New())