mirror of
https://github.com/gohugoio/hugo.git
synced 2025-08-27 22:09:53 +02:00
@@ -38,6 +38,7 @@ func TestToLineNumberError(t *testing.T) {
|
||||
{errors.New("parse failed: template: _default/bundle-resource-meta.html:11: unexpected in operand"), 0, 11, 1},
|
||||
{errors.New(`failed:: template: _default/bundle-resource-meta.html:2:7: executing "main" at <.Titles>`), 0, 2, 7},
|
||||
{errors.New("error in front matter: Near line 32 (last key parsed 'title')"), 0, 32, 1},
|
||||
{errors.New(`failed to load translations: (6, 7): was expecting token =, but got "g" instead`), 0, 6, 7},
|
||||
} {
|
||||
|
||||
got := ToFileErrorWithOffset("template", test.in, test.offset)
|
||||
@@ -46,7 +47,7 @@ func TestToLineNumberError(t *testing.T) {
|
||||
le, ok := got.(FileError)
|
||||
|
||||
if test.lineNumber > 0 {
|
||||
assert.True(ok)
|
||||
assert.True(ok, errMsg)
|
||||
assert.Equal(test.lineNumber, le.LineNumber(), errMsg)
|
||||
assert.Equal(test.columnNumber, le.ColumnNumber(), errMsg)
|
||||
assert.Contains(got.Error(), strconv.Itoa(le.LineNumber()))
|
||||
|
@@ -20,13 +20,17 @@ import (
|
||||
|
||||
var lineNumberExtractors = []lineNumberExtractor{
|
||||
// Template/shortcode parse errors
|
||||
newLineNumberErrHandlerFromRegexp("(.*?:)(\\d+)(:)(\\d+)?(.*)"),
|
||||
newLineNumberErrHandlerFromRegexp(".*:(\\d+):(\\d*):"),
|
||||
newLineNumberErrHandlerFromRegexp(".*:(\\d+):"),
|
||||
|
||||
// TOML parse errors
|
||||
newLineNumberErrHandlerFromRegexp("(.*Near line )(\\d+)(\\s.*)"),
|
||||
newLineNumberErrHandlerFromRegexp(".*Near line (\\d+)(\\s.*)"),
|
||||
|
||||
// YAML parse errors
|
||||
newLineNumberErrHandlerFromRegexp("(line )(\\d+)(:)"),
|
||||
newLineNumberErrHandlerFromRegexp("line (\\d+):"),
|
||||
|
||||
// i18n bundle errors
|
||||
newLineNumberErrHandlerFromRegexp("\\((\\d+),\\s(\\d*)"),
|
||||
}
|
||||
|
||||
type lineNumberExtractor func(e error) (int, int)
|
||||
@@ -44,10 +48,10 @@ func extractLineNo(re *regexp.Regexp) lineNumberExtractor {
|
||||
col := 1
|
||||
s := e.Error()
|
||||
m := re.FindStringSubmatch(s)
|
||||
if len(m) >= 4 {
|
||||
lno, _ := strconv.Atoi(m[2])
|
||||
if len(m) > 4 {
|
||||
col, _ = strconv.Atoi(m[4])
|
||||
if len(m) >= 2 {
|
||||
lno, _ := strconv.Atoi(m[1])
|
||||
if len(m) > 2 {
|
||||
col, _ = strconv.Atoi(m[2])
|
||||
}
|
||||
|
||||
if col <= 0 {
|
||||
|
Reference in New Issue
Block a user