tplimpl: Add test with failing partial
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sun, 2 Apr 2017 10:06:21 +0000 (12:06 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sun, 2 Apr 2017 10:06:21 +0000 (12:06 +0200)
Main motivation to see that the containing template name is included in the error message name.

It is.

tpl/tplimpl/template_funcs_test.go

index 9b28ffcbd3dd7745b35d4e03c4211e4a83ae7e43..b50765fcb9549ce8c87a3ec361af46d80024990c 100644 (file)
@@ -2908,6 +2908,46 @@ func TestPartialHTMLAndText(t *testing.T) {
 
 }
 
+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 {