Don't treat non-importable YAML as syntax error
`yaml.load()` exceptions are not necessarily syntax errors. For
instance, the following YAML source cannot be `load()`ed into a Python
object, but is valid nonetheless:
? - Detroit Tigers
- Chicago cubs
:
- 2001-07-23
? [ New York Yankees,
Atlanta Braves ]
: [ 2001-07-02, 2001-08-12,
2001-08-14 ]
This commit detects syntax errors from `yaml.parse()` exceptions rather
than `yaml.load_all()`.
This commit is contained in:
@@ -35,3 +35,17 @@ class YamlLintTestCase(RuleTestCase):
|
|||||||
'%TAG ! tag:clarkevans.com,2002:\n'
|
'%TAG ! tag:clarkevans.com,2002:\n'
|
||||||
'doc: ument\n'
|
'doc: ument\n'
|
||||||
'...\n', None, problem=(3, 1))
|
'...\n', None, problem=(3, 1))
|
||||||
|
|
||||||
|
def test_mapping_between_sequences(self):
|
||||||
|
# This is valid YAML. See http://www.yaml.org/spec/1.2/spec.html,
|
||||||
|
# example 2.11
|
||||||
|
self.check('---\n'
|
||||||
|
'? - Detroit Tigers\n'
|
||||||
|
' - Chicago cubs\n'
|
||||||
|
':\n'
|
||||||
|
' - 2001-07-23\n'
|
||||||
|
'\n'
|
||||||
|
'? [New York Yankees,\n'
|
||||||
|
' Atlanta Braves]\n'
|
||||||
|
': [2001-07-02, 2001-08-12,\n'
|
||||||
|
' 2001-08-14]\n', None)
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ def get_costemic_problems(buffer, conf):
|
|||||||
|
|
||||||
def get_syntax_error(buffer):
|
def get_syntax_error(buffer):
|
||||||
try:
|
try:
|
||||||
list(yaml.safe_load_all(buffer))
|
list(yaml.parse(buffer))
|
||||||
except yaml.error.MarkedYAMLError as e:
|
except yaml.error.MarkedYAMLError as e:
|
||||||
problem = LintProblem(e.problem_mark.line + 1,
|
problem = LintProblem(e.problem_mark.line + 1,
|
||||||
e.problem_mark.column + 1,
|
e.problem_mark.column + 1,
|
||||||
|
|||||||
Reference in New Issue
Block a user