ref: 0aeadfd02ddee35f1fe46eac9b08479742b074b6
parent: 5c5efa03d2512749950b0d05a7d4bde35ecbdc37
author: Bjørn Erik Pedersen <[email protected]>
date: Sun Apr 2 08:06:21 EDT 2017
tplimpl: Add test with failing partial Main motivation to see that the containing template name is included in the error message name. It is.
--- a/tpl/tplimpl/template_funcs_test.go
+++ b/tpl/tplimpl/template_funcs_test.go
@@ -2908,6 +2908,46 @@
}
+func TestPartialWithError(t *testing.T) {
+ t.Parallel()
+ config := newDepsConfig(viper.New())
+
+ data := struct {
+ Name string
+ }{
+ Name: "bep",
+ }
+
+ config.WithTemplate = func(templ tpl.TemplateHandler) error {
+ if err := templ.AddTemplate("container.html", `HTML Test Partial: {{ partial "fail.foo" . -}}`); err != nil {
+ return err
+ }
+
+ if err := templ.AddTemplate("partials/fail.foo", "Template: {{ .DoesNotExist }}"); err != nil {
+ return err
+ }
+
+ return nil
+ }
+
+ de, err := deps.New(config)
+ require.NoError(t, err)
+ require.NoError(t, de.LoadResources())
+
+ templ := de.Tmpl.Lookup("container.html")
+ require.NotNil(t, templ)
+ result, err := templ.ExecuteToString(data)
+ require.Error(t, err)
+
+ errStr := err.Error()
+
+ require.Contains(t, errStr, `template: container.html:1:22: executing "container.html" at <partial "fail.foo" .>`)
+ require.Contains(t, errStr, `can't evaluate field DoesNotExist`)
+
+ require.Empty(t, result)
+
+}
+
func TestPartialCached(t *testing.T) {
t.Parallel()
testCases := []struct {