From bc36d468ab56b5bcf01c3dc1478b1818dd17e4ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Tue, 4 Apr 2017 17:21:04 +0200 Subject: [PATCH] tplimpl: Reintroduce the double template lookup in Partial So it works as before without the html suffix. Fixes #3272 --- tpl/tplimpl/templateFuncster.go | 4 ++++ tpl/tplimpl/template_funcs_test.go | 34 ++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/tpl/tplimpl/templateFuncster.go b/tpl/tplimpl/templateFuncster.go index 1fbaebd43..ddcafedfd 100644 --- a/tpl/tplimpl/templateFuncster.go +++ b/tpl/tplimpl/templateFuncster.go @@ -63,6 +63,10 @@ func (t *templateFuncster) partial(name string, contextList ...interface{}) (int 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) diff --git a/tpl/tplimpl/template_funcs_test.go b/tpl/tplimpl/template_funcs_test.go index b50765fcb..075581c66 100644 --- a/tpl/tplimpl/template_funcs_test.go +++ b/tpl/tplimpl/template_funcs_test.go @@ -2908,6 +2908,40 @@ func TestPartialHTMLAndText(t *testing.T) { } +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())