Fix confusing ReadError traceback
Avoids confusing tracebacks when ReadErrors exceptions are raised from the yaml reader. Now we do print the filename that failed to load and stop processing in order to avoid additional exceptions. Also adds tests to prevent future regressions. Fixes: #261
This commit is contained in:
@@ -186,6 +186,15 @@ def get_syntax_error(buffer):
|
||||
'syntax error: ' + e.problem + ' (syntax)')
|
||||
problem.level = 'error'
|
||||
return problem
|
||||
except yaml.reader.ReaderError as e:
|
||||
# we need to convert position into line+column
|
||||
line = buffer.count('\n', 0, e.position)
|
||||
col = e.position - (buffer.rindex('\n', 0, e.position) if line else 1)
|
||||
problem = LintProblem(line + 1,
|
||||
col,
|
||||
'syntax error: ' + e.reason + ' (syntax)')
|
||||
problem.level = 'error'
|
||||
return problem
|
||||
|
||||
|
||||
def _run(buffer, conf, filepath):
|
||||
|
||||
@@ -121,9 +121,9 @@ def comments_between_tokens(token1, token2):
|
||||
|
||||
|
||||
def token_or_comment_generator(buffer):
|
||||
yaml_loader = yaml.BaseLoader(buffer)
|
||||
|
||||
try:
|
||||
yaml_loader = yaml.BaseLoader(buffer)
|
||||
prev = None
|
||||
curr = yaml_loader.get_token()
|
||||
while curr is not None:
|
||||
@@ -139,7 +139,8 @@ def token_or_comment_generator(buffer):
|
||||
prev = curr
|
||||
curr = next
|
||||
|
||||
except yaml.scanner.ScannerError:
|
||||
# errors like this are already analysed by get_syntax_error
|
||||
except (yaml.scanner.ScannerError, yaml.reader.ReaderError):
|
||||
pass
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user