mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-07 20:30:36 -05:00
tpl: Handle truncated identifiers in Go template errors
Long identifiers will give errors on the format: ```bash _default/single.html:5:14: executing "main" at <.ThisIsAVeryLongTitl...>: can't evaluate field ThisIsAVeryLongTitle ``` Hugo use this value to match the "base template or not", so we need to strip the "...". Fixes #5346
This commit is contained in:
parent
deff9e154b
commit
2d7709d155
2 changed files with 18 additions and 1 deletions
|
@ -107,6 +107,21 @@ func TestSiteBuildErrors(t *testing.T) {
|
||||||
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "Single template execute failed, long keyword",
|
||||||
|
fileType: single,
|
||||||
|
fileFixer: func(content string) string {
|
||||||
|
return strings.Replace(content, ".Title", ".ThisIsAVeryLongTitle", 1)
|
||||||
|
},
|
||||||
|
assertBuildError: func(a testSiteBuildErrorAsserter, err error) {
|
||||||
|
fe := a.getFileError(err)
|
||||||
|
assert.Equal(5, fe.LineNumber)
|
||||||
|
assert.Equal(14, fe.ColumnNumber)
|
||||||
|
assert.Equal("go-html-template", fe.ChromaLexer)
|
||||||
|
a.assertErrorMessage("\"layouts/_default/single.html:5:14\": execute of template failed", fe.Error())
|
||||||
|
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "Shortcode parse failed",
|
name: "Shortcode parse failed",
|
||||||
fileType: shortcode,
|
fileType: shortcode,
|
||||||
|
|
|
@ -133,7 +133,9 @@ func (t *TemplateAdapter) Execute(w io.Writer, data interface{}) (execErr error)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var identifiersRe = regexp.MustCompile("at \\<(.*?)\\>:")
|
// The identifiers may be truncated in the log, e.g.
|
||||||
|
// "executing "main" at <$scaled.SRelPermalin...>: can't evaluate field SRelPermalink in type *resource.Image"
|
||||||
|
var identifiersRe = regexp.MustCompile("at \\<(.*?)(\\.{3})?\\>:")
|
||||||
|
|
||||||
func (t *TemplateAdapter) extractIdentifiers(line string) []string {
|
func (t *TemplateAdapter) extractIdentifiers(line string) []string {
|
||||||
m := identifiersRe.FindAllStringSubmatch(line, -1)
|
m := identifiersRe.FindAllStringSubmatch(line, -1)
|
||||||
|
|
Loading…
Reference in a new issue