pull/393/merge
♫ Christian Krause ♫ 2 years ago committed by GitHub
commit 69aebc39fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -71,3 +71,15 @@ class DocumentEndTestCase(RuleTestCase):
'---\n'
'third: document\n'
'...\n', conf, problem=(6, 1))
def test_empty_lines(self):
conf = ('document-end:\n'
' present: true\n'
' max-empty-lines-before: 0\n')
self.check('---\n'
'doc: ument\n'
'...\n', conf)
self.check('---\n'
'doc: ument\n'
'\n'
'...\n', conf, problem=(3, 0))

@ -101,3 +101,49 @@ class DocumentStartTestCase(RuleTestCase):
'---\n'
'doc: 2\n'
'...\n', conf)
def test_empty_lines(self):
conf = ('document-start:\n'
' present: true\n'
' max-empty-lines-after: 0\n')
self.check('---\n'
'doc: ument\n', conf)
self.check('---\n'
'\n'
'doc: ument\n', conf, problem=(3, 1))
conf = ('document-start:\n'
' present: true\n'
' max-empty-lines-after: 1\n')
self.check('---\n'
'doc: ument\n', conf)
self.check('---\n'
'\n'
'doc: ument\n', conf)
self.check('---\n'
'\n'
'\n'
'doc: ument\n', conf, problem=(4, 1))
conf = ('document-start:\n'
' present: true\n'
' min-empty-lines-after: 1\n')
self.check('---\n'
'\n'
'doc: ument\n', conf)
self.check('---\n'
'doc: ument\n', conf, problem=(2, 1))
conf = ('document-start:\n'
' present: true\n'
' max-empty-lines-after: 1\n'
' min-empty-lines-after: 1\n')
self.check('---\n'
'doc: ument\n', conf, problem=(2, 1))
self.check('---\n'
'\n'
'doc: ument\n', conf)
self.check('---\n'
'\n'
'\n'
'doc: ument\n', conf, problem=(4, 1))

@ -20,6 +20,10 @@ Use this rule to require or forbid the use of document end marker (``...``).
* Set ``present`` to ``true`` when the document end marker is required, or to
``false`` when it is forbidden.
* ``min-empty-lines-before`` defines the minimal number of empty lines before
the document end marker.
* ``max-empty-lines-before`` defines the maximal number of empty lines before
the document end marker.
.. rubric:: Default values (when enabled)
@ -88,8 +92,12 @@ from yamllint.linter import LintProblem
ID = 'document-end'
TYPE = 'token'
CONF = {'present': bool}
DEFAULT = {'present': True}
CONF = {'present': bool,
'max-empty-lines-before': int,
'min-empty-lines-before': int}
DEFAULT = {'present': True,
'max-empty-lines-before': -1,
'min-empty-lines-before': 0}
def check(conf, token, prev, next, nextnext, context):
@ -107,6 +115,21 @@ def check(conf, token, prev, next, nextnext, context):
yield LintProblem(token.start_mark.line + 1, 1,
'missing document end "..."')
if isinstance(next, yaml.DocumentEndToken):
empty_lines = next.start_mark.line - prev.start_mark.line - 1
if (conf['max-empty-lines-before'] >= 0 and
empty_lines > conf['max-empty-lines-before']):
yield LintProblem(token.start_mark.line,
token.start_mark.column,
'too many empty lines before document end')
if (conf['min-empty-lines-before'] > 0 and
empty_lines < conf['min-empty-lines-before']):
yield LintProblem(token.start_mark.line,
token.start_mark.column,
'too few empty lines before document end')
else:
if isinstance(token, yaml.DocumentEndToken):
yield LintProblem(token.start_mark.line + 1,

@ -20,6 +20,10 @@ Use this rule to require or forbid the use of document start marker (``---``).
* Set ``present`` to ``true`` when the document start marker is required, or to
``false`` when it is forbidden.
* ``min-empty-lines-after`` defines the minimal number of empty lines after the
document start marker.
* ``max-empty-lines-after`` defines the maximal number of empty lines after the
document start marker.
.. rubric:: Default values (when enabled)
@ -78,8 +82,12 @@ from yamllint.linter import LintProblem
ID = 'document-start'
TYPE = 'token'
CONF = {'present': bool}
DEFAULT = {'present': True}
CONF = {'present': bool,
'max-empty-lines-after': int,
'min-empty-lines-after': int}
DEFAULT = {'present': True,
'max-empty-lines-after': -1,
'min-empty-lines-after': 0}
def check(conf, token, prev, next, nextnext, context):
@ -93,6 +101,21 @@ def check(conf, token, prev, next, nextnext, context):
yield LintProblem(token.start_mark.line + 1, 1,
'missing document start "---"')
if isinstance(prev, yaml.DocumentStartToken):
empty_lines = token.start_mark.line - prev.start_mark.line - 1
if (conf['max-empty-lines-after'] >= 0 and
empty_lines > conf['max-empty-lines-after']):
yield LintProblem(token.start_mark.line + 1,
token.start_mark.column + 1,
'too many empty lines after document start')
if (conf['min-empty-lines-after'] > 0 and
empty_lines < conf['min-empty-lines-after']):
yield LintProblem(token.start_mark.line + 1,
token.start_mark.column + 1,
'too few empty lines after document start')
else:
if isinstance(token, yaml.DocumentStartToken):
yield LintProblem(token.start_mark.line + 1,

Loading…
Cancel
Save