shithub: hugo

Download patch

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 {