fix(rules): Use true/false, not yes/no
Although `yes` and `no` are recognized as booleans by the pyyaml parser, the correct keywords are `true` and `false` (as highlighted by the newly added `truthy` rule). This commit replaces the use of `yes`/`no` by `true`/`false` and advertise it in the docs, but also makes sure this change is backward-compatible (so that `yes` and `no` still work).
This commit is contained in:
@@ -43,7 +43,7 @@ class CommentsTestCase(RuleTestCase):
|
||||
|
||||
def test_starting_space(self):
|
||||
conf = ('comments:\n'
|
||||
' require-starting-space: yes\n'
|
||||
' require-starting-space: true\n'
|
||||
' min-spaces-from-content: -1\n'
|
||||
'comments-indentation: disable\n')
|
||||
self.check('---\n'
|
||||
@@ -82,7 +82,7 @@ class CommentsTestCase(RuleTestCase):
|
||||
|
||||
def test_spaces_from_content(self):
|
||||
conf = ('comments:\n'
|
||||
' require-starting-space: no\n'
|
||||
' require-starting-space: false\n'
|
||||
' min-spaces-from-content: 2\n')
|
||||
self.check('---\n'
|
||||
'# comment\n'
|
||||
@@ -104,7 +104,7 @@ class CommentsTestCase(RuleTestCase):
|
||||
|
||||
def test_both(self):
|
||||
conf = ('comments:\n'
|
||||
' require-starting-space: yes\n'
|
||||
' require-starting-space: true\n'
|
||||
' min-spaces-from-content: 2\n'
|
||||
'comments-indentation: disable\n')
|
||||
self.check('---\n'
|
||||
@@ -134,7 +134,7 @@ class CommentsTestCase(RuleTestCase):
|
||||
|
||||
def test_empty_comment(self):
|
||||
conf = ('comments:\n'
|
||||
' require-starting-space: yes\n'
|
||||
' require-starting-space: true\n'
|
||||
' min-spaces-from-content: 2\n')
|
||||
self.check('---\n'
|
||||
'# This is paragraph 1.\n'
|
||||
@@ -146,13 +146,13 @@ class CommentsTestCase(RuleTestCase):
|
||||
|
||||
def test_first_line(self):
|
||||
conf = ('comments:\n'
|
||||
' require-starting-space: yes\n'
|
||||
' require-starting-space: true\n'
|
||||
' min-spaces-from-content: 2\n')
|
||||
self.check('# comment\n', conf)
|
||||
|
||||
def test_last_line(self):
|
||||
conf = ('comments:\n'
|
||||
' require-starting-space: yes\n'
|
||||
' require-starting-space: true\n'
|
||||
' min-spaces-from-content: 2\n'
|
||||
'new-line-at-end-of-file: disable\n')
|
||||
self.check('# comment with no newline char:\n'
|
||||
@@ -160,7 +160,7 @@ class CommentsTestCase(RuleTestCase):
|
||||
|
||||
def test_multi_line_scalar(self):
|
||||
conf = ('comments:\n'
|
||||
' require-starting-space: yes\n'
|
||||
' require-starting-space: true\n'
|
||||
' min-spaces-from-content: 2\n'
|
||||
'trailing-spaces: disable\n')
|
||||
self.check('---\n'
|
||||
|
||||
@@ -31,7 +31,7 @@ class DocumentEndTestCase(RuleTestCase):
|
||||
' document: end\n', conf)
|
||||
|
||||
def test_required(self):
|
||||
conf = 'document-end: {present: yes}'
|
||||
conf = 'document-end: {present: true}'
|
||||
self.check('', conf)
|
||||
self.check('\n', conf)
|
||||
self.check('---\n'
|
||||
@@ -43,7 +43,7 @@ class DocumentEndTestCase(RuleTestCase):
|
||||
' document: end\n', conf, problem=(3, 1))
|
||||
|
||||
def test_forbidden(self):
|
||||
conf = 'document-end: {present: no}'
|
||||
conf = 'document-end: {present: false}'
|
||||
self.check('---\n'
|
||||
'with:\n'
|
||||
' document: end\n'
|
||||
@@ -53,7 +53,7 @@ class DocumentEndTestCase(RuleTestCase):
|
||||
' document: end\n', conf)
|
||||
|
||||
def test_multiple_documents(self):
|
||||
conf = ('document-end: {present: yes}\n'
|
||||
conf = ('document-end: {present: true}\n'
|
||||
'document-start: disable\n')
|
||||
self.check('---\n'
|
||||
'first: document\n'
|
||||
|
||||
@@ -28,7 +28,7 @@ class DocumentStartTestCase(RuleTestCase):
|
||||
'key: val\n', conf)
|
||||
|
||||
def test_required(self):
|
||||
conf = ('document-start: {present: yes}\n'
|
||||
conf = ('document-start: {present: true}\n'
|
||||
'empty-lines: disable\n')
|
||||
self.check('', conf)
|
||||
self.check('\n', conf)
|
||||
@@ -44,7 +44,7 @@ class DocumentStartTestCase(RuleTestCase):
|
||||
'key: val\n', conf)
|
||||
|
||||
def test_forbidden(self):
|
||||
conf = ('document-start: {present: no}\n'
|
||||
conf = ('document-start: {present: false}\n'
|
||||
'empty-lines: disable\n')
|
||||
self.check('', conf)
|
||||
self.check('key: val\n', conf)
|
||||
@@ -62,7 +62,7 @@ class DocumentStartTestCase(RuleTestCase):
|
||||
'key: val\n', conf, problem=(2, 1))
|
||||
|
||||
def test_multiple_documents(self):
|
||||
conf = 'document-start: {present: yes}'
|
||||
conf = 'document-start: {present: true}'
|
||||
self.check('---\n'
|
||||
'first: document\n'
|
||||
'...\n'
|
||||
@@ -85,7 +85,7 @@ class DocumentStartTestCase(RuleTestCase):
|
||||
'third: document\n', conf, problem=(4, 1, 'syntax'))
|
||||
|
||||
def test_directives(self):
|
||||
conf = 'document-start: {present: yes}'
|
||||
conf = 'document-start: {present: true}'
|
||||
self.check('%YAML 1.2\n'
|
||||
'---\n'
|
||||
'doc: ument\n'
|
||||
|
||||
@@ -549,7 +549,7 @@ class IndentationTestCase(RuleTestCase):
|
||||
'...\n', conf)
|
||||
|
||||
def test_one_space(self):
|
||||
conf = 'indentation: {spaces: 1, indent-sequences: no}'
|
||||
conf = 'indentation: {spaces: 1, indent-sequences: false}'
|
||||
self.check('---\n'
|
||||
'object:\n'
|
||||
' k1:\n'
|
||||
@@ -562,7 +562,7 @@ class IndentationTestCase(RuleTestCase):
|
||||
' - name: Linux\n'
|
||||
' date: 1991\n'
|
||||
'...\n', conf)
|
||||
conf = 'indentation: {spaces: 1, indent-sequences: yes}'
|
||||
conf = 'indentation: {spaces: 1, indent-sequences: true}'
|
||||
self.check('---\n'
|
||||
'object:\n'
|
||||
' k1:\n'
|
||||
@@ -577,7 +577,7 @@ class IndentationTestCase(RuleTestCase):
|
||||
'...\n', conf)
|
||||
|
||||
def test_two_spaces(self):
|
||||
conf = 'indentation: {spaces: 2, indent-sequences: no}'
|
||||
conf = 'indentation: {spaces: 2, indent-sequences: false}'
|
||||
self.check('---\n'
|
||||
'object:\n'
|
||||
' k1:\n'
|
||||
@@ -590,7 +590,7 @@ class IndentationTestCase(RuleTestCase):
|
||||
' - name: Linux\n'
|
||||
' date: 1991\n'
|
||||
'...\n', conf)
|
||||
conf = 'indentation: {spaces: 2, indent-sequences: yes}'
|
||||
conf = 'indentation: {spaces: 2, indent-sequences: true}'
|
||||
self.check('---\n'
|
||||
'object:\n'
|
||||
' k1:\n'
|
||||
@@ -605,7 +605,7 @@ class IndentationTestCase(RuleTestCase):
|
||||
'...\n', conf)
|
||||
|
||||
def test_three_spaces(self):
|
||||
conf = 'indentation: {spaces: 3, indent-sequences: no}'
|
||||
conf = 'indentation: {spaces: 3, indent-sequences: false}'
|
||||
self.check('---\n'
|
||||
'object:\n'
|
||||
' k1:\n'
|
||||
@@ -618,7 +618,7 @@ class IndentationTestCase(RuleTestCase):
|
||||
' - name: Linux\n'
|
||||
' date: 1991\n'
|
||||
'...\n', conf)
|
||||
conf = 'indentation: {spaces: 3, indent-sequences: yes}'
|
||||
conf = 'indentation: {spaces: 3, indent-sequences: true}'
|
||||
self.check('---\n'
|
||||
'object:\n'
|
||||
' k1:\n'
|
||||
@@ -1130,7 +1130,7 @@ class IndentationTestCase(RuleTestCase):
|
||||
problem=(2, 3))
|
||||
|
||||
def test_multi_lines(self):
|
||||
conf = 'indentation: {spaces: consistent, indent-sequences: yes}'
|
||||
conf = 'indentation: {spaces: consistent, indent-sequences: true}'
|
||||
self.check('---\n'
|
||||
'long_string: >\n'
|
||||
' bla bla blah\n'
|
||||
@@ -1438,7 +1438,7 @@ class IndentationTestCase(RuleTestCase):
|
||||
'- !!map # Block collection\n'
|
||||
' foo: bar\n', conf)
|
||||
|
||||
conf = 'indentation: {spaces: consistent, indent-sequences: no}'
|
||||
conf = 'indentation: {spaces: consistent, indent-sequences: false}'
|
||||
self.check('---\n'
|
||||
'sequence: !!seq\n'
|
||||
'- entry\n'
|
||||
@@ -1505,7 +1505,7 @@ class ScalarIndentationTestCase(RuleTestCase):
|
||||
|
||||
def test_basics_plain(self):
|
||||
conf = ('indentation: {spaces: consistent,\n'
|
||||
' check-multi-line-strings: no}\n'
|
||||
' check-multi-line-strings: false}\n'
|
||||
'document-start: disable\n')
|
||||
self.check('multi\n'
|
||||
'line\n', conf)
|
||||
@@ -1534,7 +1534,7 @@ class ScalarIndentationTestCase(RuleTestCase):
|
||||
|
||||
def test_check_multi_line_plain(self):
|
||||
conf = ('indentation: {spaces: consistent,\n'
|
||||
' check-multi-line-strings: yes}\n'
|
||||
' check-multi-line-strings: true}\n'
|
||||
'document-start: disable\n')
|
||||
self.check('multi\n'
|
||||
' line\n', conf, problem=(2, 2))
|
||||
@@ -1557,7 +1557,7 @@ class ScalarIndentationTestCase(RuleTestCase):
|
||||
|
||||
def test_basics_quoted(self):
|
||||
conf = ('indentation: {spaces: consistent,\n'
|
||||
' check-multi-line-strings: no}\n'
|
||||
' check-multi-line-strings: false}\n'
|
||||
'document-start: disable\n')
|
||||
self.check('"multi\n'
|
||||
' line"\n', conf)
|
||||
@@ -1588,7 +1588,7 @@ class ScalarIndentationTestCase(RuleTestCase):
|
||||
|
||||
def test_check_multi_line_quoted(self):
|
||||
conf = ('indentation: {spaces: consistent,\n'
|
||||
' check-multi-line-strings: yes}\n'
|
||||
' check-multi-line-strings: true}\n'
|
||||
'document-start: disable\n')
|
||||
self.check('"multi\n'
|
||||
'line"\n', conf, problem=(2, 1))
|
||||
@@ -1644,7 +1644,7 @@ class ScalarIndentationTestCase(RuleTestCase):
|
||||
|
||||
def test_basics_folded_style(self):
|
||||
conf = ('indentation: {spaces: consistent,\n'
|
||||
' check-multi-line-strings: no}\n'
|
||||
' check-multi-line-strings: false}\n'
|
||||
'document-start: disable\n')
|
||||
self.check('>\n'
|
||||
' multi\n'
|
||||
@@ -1682,7 +1682,7 @@ class ScalarIndentationTestCase(RuleTestCase):
|
||||
|
||||
def test_check_multi_line_folded_style(self):
|
||||
conf = ('indentation: {spaces: consistent,\n'
|
||||
' check-multi-line-strings: yes}\n'
|
||||
' check-multi-line-strings: true}\n'
|
||||
'document-start: disable\n')
|
||||
self.check('>\n'
|
||||
' multi\n'
|
||||
@@ -1723,7 +1723,7 @@ class ScalarIndentationTestCase(RuleTestCase):
|
||||
|
||||
def test_basics_literal_style(self):
|
||||
conf = ('indentation: {spaces: consistent,\n'
|
||||
' check-multi-line-strings: no}\n'
|
||||
' check-multi-line-strings: false}\n'
|
||||
'document-start: disable\n')
|
||||
self.check('|\n'
|
||||
' multi\n'
|
||||
@@ -1761,7 +1761,7 @@ class ScalarIndentationTestCase(RuleTestCase):
|
||||
|
||||
def test_check_multi_line_literal_style(self):
|
||||
conf = ('indentation: {spaces: consistent,\n'
|
||||
' check-multi-line-strings: yes}\n'
|
||||
' check-multi-line-strings: true}\n'
|
||||
'document-start: disable\n')
|
||||
self.check('|\n'
|
||||
' multi\n'
|
||||
@@ -1805,7 +1805,7 @@ class ScalarIndentationTestCase(RuleTestCase):
|
||||
|
||||
def test_paragraph_plain(self):
|
||||
conf = ('indentation: {spaces: consistent,\n'
|
||||
' check-multi-line-strings: yes}\n'
|
||||
' check-multi-line-strings: true}\n'
|
||||
'document-start: disable\n')
|
||||
self.check('- long text: very "long"\n'
|
||||
' \'string\' with\n'
|
||||
@@ -1827,7 +1827,7 @@ class ScalarIndentationTestCase(RuleTestCase):
|
||||
|
||||
def test_paragraph_double_quoted(self):
|
||||
conf = ('indentation: {spaces: consistent,\n'
|
||||
' check-multi-line-strings: yes}\n'
|
||||
' check-multi-line-strings: true}\n'
|
||||
'document-start: disable\n')
|
||||
self.check('- long text: "very \\"long\\"\n'
|
||||
' \'string\' with\n'
|
||||
@@ -1855,7 +1855,7 @@ class ScalarIndentationTestCase(RuleTestCase):
|
||||
|
||||
def test_paragraph_single_quoted(self):
|
||||
conf = ('indentation: {spaces: consistent,\n'
|
||||
' check-multi-line-strings: yes}\n'
|
||||
' check-multi-line-strings: true}\n'
|
||||
'document-start: disable\n')
|
||||
self.check('- long text: \'very "long"\n'
|
||||
' \'\'string\'\' with\n'
|
||||
@@ -1883,7 +1883,7 @@ class ScalarIndentationTestCase(RuleTestCase):
|
||||
|
||||
def test_paragraph_folded(self):
|
||||
conf = ('indentation: {spaces: consistent,\n'
|
||||
' check-multi-line-strings: yes}\n'
|
||||
' check-multi-line-strings: true}\n'
|
||||
'document-start: disable\n')
|
||||
self.check('- long text: >\n'
|
||||
' very "long"\n'
|
||||
@@ -1901,7 +1901,7 @@ class ScalarIndentationTestCase(RuleTestCase):
|
||||
|
||||
def test_paragraph_literal(self):
|
||||
conf = ('indentation: {spaces: consistent,\n'
|
||||
' check-multi-line-strings: yes}\n'
|
||||
' check-multi-line-strings: true}\n'
|
||||
'document-start: disable\n')
|
||||
self.check('- long text: |\n'
|
||||
' very "long"\n'
|
||||
@@ -1919,7 +1919,7 @@ class ScalarIndentationTestCase(RuleTestCase):
|
||||
|
||||
def test_consistent(self):
|
||||
conf = ('indentation: {spaces: consistent,\n'
|
||||
' check-multi-line-strings: yes}\n'
|
||||
' check-multi-line-strings: true}\n'
|
||||
'document-start: disable\n')
|
||||
self.check('multi\n'
|
||||
'line\n', conf)
|
||||
|
||||
@@ -66,7 +66,7 @@ class LineLengthTestCase(RuleTestCase):
|
||||
self.check('---\n' + 81 * ' ' + '\n', conf, problem=(2, 81))
|
||||
|
||||
def test_non_breakable_word(self):
|
||||
conf = 'line-length: {max: 20, allow-non-breakable-words: yes}'
|
||||
conf = 'line-length: {max: 20, allow-non-breakable-words: true}'
|
||||
self.check('---\n' + 30 * 'A' + '\n', conf)
|
||||
self.check('---\n'
|
||||
'this:\n'
|
||||
@@ -91,7 +91,7 @@ class LineLengthTestCase(RuleTestCase):
|
||||
'long_line: http://localhost/very/very/long/url\n', conf,
|
||||
problem=(2, 21))
|
||||
|
||||
conf = 'line-length: {max: 20, allow-non-breakable-words: no}'
|
||||
conf = 'line-length: {max: 20, allow-non-breakable-words: false}'
|
||||
self.check('---\n' + 30 * 'A' + '\n', conf, problem=(2, 21))
|
||||
self.check('---\n'
|
||||
'this:\n'
|
||||
@@ -116,7 +116,7 @@ class LineLengthTestCase(RuleTestCase):
|
||||
'long_line: http://localhost/very/very/long/url\n'
|
||||
'...\n', conf, problem=(2, 21))
|
||||
|
||||
conf = ('line-length: {max: 20, allow-non-breakable-words: yes}\n'
|
||||
conf = ('line-length: {max: 20, allow-non-breakable-words: true}\n'
|
||||
'trailing-spaces: disable')
|
||||
self.check('---\n'
|
||||
'loooooooooong+word+and+some+space+at+the+end \n',
|
||||
@@ -124,7 +124,7 @@ class LineLengthTestCase(RuleTestCase):
|
||||
|
||||
def test_non_breakable_inline_mappings(self):
|
||||
conf = 'line-length: {max: 20, ' \
|
||||
'allow-non-breakable-inline-mappings: yes}'
|
||||
'allow-non-breakable-inline-mappings: true}'
|
||||
self.check('---\n'
|
||||
'long_line: http://localhost/very/very/long/url\n'
|
||||
'long line: http://localhost/very/very/long/url\n', conf)
|
||||
@@ -137,7 +137,7 @@ class LineLengthTestCase(RuleTestCase):
|
||||
conf, problem1=(2, 21), problem2=(3, 21))
|
||||
|
||||
conf = ('line-length: {max: 20,'
|
||||
' allow-non-breakable-inline-mappings: yes}\n'
|
||||
' allow-non-breakable-inline-mappings: true}\n'
|
||||
'trailing-spaces: disable')
|
||||
self.check('---\n'
|
||||
'long_line: and+some+space+at+the+end \n',
|
||||
@@ -150,7 +150,7 @@ class LineLengthTestCase(RuleTestCase):
|
||||
conf, problem=(2, 21))
|
||||
|
||||
# See https://github.com/adrienverge/yamllint/issues/21
|
||||
conf = 'line-length: {allow-non-breakable-inline-mappings: yes}'
|
||||
conf = 'line-length: {allow-non-breakable-inline-mappings: true}'
|
||||
self.check('---\n'
|
||||
'content: |\n'
|
||||
' {% this line is' + 99 * ' really' + ' long %}\n',
|
||||
|
||||
@@ -62,6 +62,45 @@ class SimpleConfigTestCase(unittest.TestCase):
|
||||
' max-spaces-after: 1\n'
|
||||
' abcdef: yes\n')
|
||||
|
||||
def test_yes_no_for_booleans(self):
|
||||
c = config.YamlLintConfig('rules:\n'
|
||||
' indentation:\n'
|
||||
' spaces: 2\n'
|
||||
' indent-sequences: true\n'
|
||||
' check-multi-line-strings: false\n')
|
||||
self.assertEqual(c.rules['indentation']['indent-sequences'], True)
|
||||
self.assertEqual(c.rules['indentation']['check-multi-line-strings'],
|
||||
False)
|
||||
|
||||
c = config.YamlLintConfig('rules:\n'
|
||||
' indentation:\n'
|
||||
' spaces: 2\n'
|
||||
' indent-sequences: yes\n'
|
||||
' check-multi-line-strings: false\n')
|
||||
self.assertEqual(c.rules['indentation']['indent-sequences'], True)
|
||||
self.assertEqual(c.rules['indentation']['check-multi-line-strings'],
|
||||
False)
|
||||
|
||||
c = config.YamlLintConfig('rules:\n'
|
||||
' indentation:\n'
|
||||
' spaces: 2\n'
|
||||
' indent-sequences: whatever\n'
|
||||
' check-multi-line-strings: false\n')
|
||||
self.assertEqual(c.rules['indentation']['indent-sequences'],
|
||||
'whatever')
|
||||
self.assertEqual(c.rules['indentation']['check-multi-line-strings'],
|
||||
False)
|
||||
|
||||
with self.assertRaisesRegexp(
|
||||
config.YamlLintConfigError,
|
||||
'invalid config: option "indent-sequences" of "indentation" '
|
||||
'should be in '):
|
||||
c = config.YamlLintConfig('rules:\n'
|
||||
' indentation:\n'
|
||||
' spaces: 2\n'
|
||||
' indent-sequences: YES!\n'
|
||||
' check-multi-line-strings: false\n')
|
||||
|
||||
def test_validate_rule_conf(self):
|
||||
class Rule(object):
|
||||
ID = 'fake'
|
||||
|
||||
@@ -67,7 +67,7 @@ conf_overrides = {
|
||||
'example-2.18': ('empty-lines: {max-end: 1}\n'),
|
||||
'example-2.19': ('empty-lines: {max-end: 1}\n'),
|
||||
'example-2.28': ('empty-lines: {max-end: 3}\n'),
|
||||
'example-5.3': ('indentation: {indent-sequences: no}\n'
|
||||
'example-5.3': ('indentation: {indent-sequences: false}\n'
|
||||
'colons: {max-spaces-before: 1}\n'),
|
||||
'example-6.4': ('trailing-spaces: disable\n'),
|
||||
'example-6.5': ('trailing-spaces: disable\n'),
|
||||
@@ -115,11 +115,11 @@ conf_overrides = {
|
||||
'example-8.14': ('colons: {max-spaces-before: 1}\n'),
|
||||
'example-8.16': ('indentation: {spaces: 1}\n'),
|
||||
'example-8.17': ('indentation: disable\n'),
|
||||
'example-8.20': ('indentation: {indent-sequences: no}\n'
|
||||
'example-8.20': ('indentation: {indent-sequences: false}\n'
|
||||
'colons: {max-spaces-before: 1}\n'),
|
||||
'example-8.22': ('indentation: disable\n'),
|
||||
'example-10.1': ('colons: {max-spaces-before: 2}\n'),
|
||||
'example-10.2': ('indentation: {indent-sequences: no}\n'),
|
||||
'example-10.2': ('indentation: {indent-sequences: false}\n'),
|
||||
'example-10.8': ('truthy: disable\n'),
|
||||
'example-10.9': ('truthy: disable\n'),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user