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",
|
||||
fileType: shortcode,
|
||||
|
|
|
@ -133,7 +133,9 @@ func (t *TemplateAdapter) Execute(w io.Writer, data interface{}) (execErr error)
|
|||
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 {
|
||||
m := identifiersRe.FindAllStringSubmatch(line, -1)
|
||||
|
|
Loading…
Reference in a new issue