Fix bug with CRLF in new-lines and require-starting-space
Pound-signs followed by a lone CRLF should not raise if require-starting-space is specified. If require-starting-space is true, *and* either: - new-lines: disbale, or - newlines: type: dos is specified, a line with `#\r` or `#\r\n` should not raise a false positive. This commit also uses a Set for O(1) membership testing and uses the correct escape sequence for the nul byte. If we find a CRLF when looking for Unix newlines, yamllint should always raise, regardless of logic with require-starting-space. Closes: Issue #171.
This commit is contained in:
@@ -186,6 +186,27 @@ class CommentsTestCase(RuleTestCase):
|
||||
'inline: comment #\n'
|
||||
'foo: bar\n', conf)
|
||||
|
||||
def test_empty_comment_crlf_dos_newlines(self):
|
||||
conf = ('comments:\n'
|
||||
' require-starting-space: true\n'
|
||||
' min-spaces-from-content: 2\n'
|
||||
'new-lines:\n'
|
||||
' type: dos\n')
|
||||
self.check('---\r\n'
|
||||
'# This is paragraph 1.\r\n'
|
||||
'#\r\n'
|
||||
'# This is paragraph 2.\r\n', conf)
|
||||
|
||||
def test_empty_comment_crlf_disabled_newlines(self):
|
||||
conf = ('comments:\n'
|
||||
' require-starting-space: true\n'
|
||||
' min-spaces-from-content: 2\n'
|
||||
'new-lines: disable\n')
|
||||
self.check('---\r\n'
|
||||
'# This is paragraph 1.\r\n'
|
||||
'#\r\n'
|
||||
'# This is paragraph 2.\r\n', conf)
|
||||
|
||||
def test_first_line(self):
|
||||
conf = ('comments:\n'
|
||||
' require-starting-space: true\n'
|
||||
|
||||
@@ -40,6 +40,16 @@ class NewLinesTestCase(RuleTestCase):
|
||||
self.check('---\ntext\n', conf)
|
||||
self.check('---\r\ntext\r\n', conf, problem=(1, 4))
|
||||
|
||||
def test_unix_type_required_st_sp(self):
|
||||
# If we find a CRLF when looking for Unix newlines, yamllint
|
||||
# should always raise, regardless of logic with
|
||||
# require-starting-space.
|
||||
conf = ('new-line-at-end-of-file: disable\n'
|
||||
'new-lines: {type: unix}\n'
|
||||
'comments:\n'
|
||||
' require-starting-space: true\n')
|
||||
self.check('---\r\n#\r\n', conf, problem=(1, 4))
|
||||
|
||||
def test_dos_type(self):
|
||||
conf = ('new-line-at-end-of-file: disable\n'
|
||||
'new-lines: {type: dos}\n')
|
||||
|
||||
Reference in New Issue
Block a user