Rules: document-start: Allow directives
This commit is contained in:
@@ -85,6 +85,20 @@ class DocumentStartTestCase(RuleTestCase):
|
||||
'third: document\n', conf, problem=(4, 1))
|
||||
|
||||
def test_directives(self):
|
||||
# TODO
|
||||
# %YAML 1.2
|
||||
pass
|
||||
conf = 'document-start: {present: yes}'
|
||||
self.check('%YAML 1.2\n'
|
||||
'---\n'
|
||||
'doc: ument\n'
|
||||
'...\n', conf)
|
||||
self.check('%YAML 1.2\n'
|
||||
'%TAG ! tag:clarkevans.com,2002:\n'
|
||||
'---\n'
|
||||
'doc: ument\n'
|
||||
'...\n', conf)
|
||||
self.check('---\n'
|
||||
'doc: 1\n'
|
||||
'...\n'
|
||||
'%YAML 1.2\n'
|
||||
'---\n'
|
||||
'doc: 2\n'
|
||||
'...\n', conf)
|
||||
|
||||
@@ -29,3 +29,9 @@ class YamlLintTestCase(RuleTestCase):
|
||||
'this is an error: [\n'
|
||||
'\n'
|
||||
'...\n', None, problem=(6, 1))
|
||||
|
||||
def test_directives(self):
|
||||
self.check('%YAML 1.2\n'
|
||||
'%TAG ! tag:clarkevans.com,2002:\n'
|
||||
'doc: ument\n'
|
||||
'...\n', None, problem=(3, 1))
|
||||
|
||||
@@ -24,15 +24,14 @@ TYPE = 'token'
|
||||
CONF = {'present': bool}
|
||||
|
||||
|
||||
# TODO: Don't fail if document contains directives such as
|
||||
# %YAML 1.2
|
||||
|
||||
def check(conf, token, prev, next):
|
||||
if conf['present']:
|
||||
if ((isinstance(prev, yaml.StreamStartToken) or
|
||||
isinstance(prev, yaml.DocumentEndToken)) and
|
||||
not (isinstance(token, yaml.DocumentStartToken) or
|
||||
isinstance(token, yaml.StreamEndToken))):
|
||||
if (isinstance(prev, (yaml.StreamStartToken,
|
||||
yaml.DocumentEndToken,
|
||||
yaml.DirectiveToken)) and
|
||||
not isinstance(token, (yaml.DocumentStartToken,
|
||||
yaml.DirectiveToken,
|
||||
yaml.StreamEndToken))):
|
||||
yield LintProblem(token.start_mark.line + 1, 1,
|
||||
'missing document start "---"')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user