Add a pair of rules to forbid flow collection styles as needed
Add a pair of new rules to forbid flow collection styles (flow mapping and flow sequence) as needed, add those test cases and update default configuration to disable these rules by default.pull/314/head
parent
597e88bb7b
commit
731a9f52ea
@ -0,0 +1,34 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright (C) 2020 Satoru SATOH
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
#
|
||||||
|
# pylint: disable=missing-function-docstring
|
||||||
|
"""test cases for flow-mapping rule.
|
||||||
|
"""
|
||||||
|
import tests.common
|
||||||
|
|
||||||
|
|
||||||
|
class FlowMappingTestCase(tests.common.RuleTestCase):
|
||||||
|
"""Flow Mapping test cases.
|
||||||
|
"""
|
||||||
|
rule_id = 'flow-mapping'
|
||||||
|
|
||||||
|
def test_disabled(self):
|
||||||
|
conf = 'flow-mapping: disable'
|
||||||
|
self.check('---\n'
|
||||||
|
'1: {"a": 2}\n', conf)
|
||||||
|
|
||||||
|
def test_enabled(self):
|
||||||
|
conf = 'flow-mapping: enable\n'
|
||||||
|
self.check('---\n'
|
||||||
|
'1: {"a": 2}\n',
|
||||||
|
conf, problem1=(2, 4))
|
||||||
|
self.check('---\n'
|
||||||
|
'1:\n'
|
||||||
|
' a: 2\n', conf)
|
||||||
|
self.check('---\n'
|
||||||
|
'1: {\n'
|
||||||
|
' "a": 2,\n'
|
||||||
|
'}\n', conf,
|
||||||
|
problem1=(2, 4))
|
@ -0,0 +1,36 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright (C) 2020 Satoru SATOH
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
#
|
||||||
|
# pylint: disable=missing-function-docstring
|
||||||
|
"""test cases for flow-sequence rule.
|
||||||
|
"""
|
||||||
|
import tests.common
|
||||||
|
|
||||||
|
|
||||||
|
class FlowSequenceTestCase(tests.common.RuleTestCase):
|
||||||
|
"""Flow Sequence test cases.
|
||||||
|
"""
|
||||||
|
rule_id = 'flow-sequence'
|
||||||
|
|
||||||
|
def test_disabled(self):
|
||||||
|
conf = 'flow-sequence: disable'
|
||||||
|
self.check('---\n'
|
||||||
|
'1: [2, 3]\n', conf)
|
||||||
|
|
||||||
|
def test_enabled(self):
|
||||||
|
conf = 'flow-sequence: enable\n'
|
||||||
|
self.check('---\n'
|
||||||
|
'1: [2, 3]\n',
|
||||||
|
conf, problem1=(2, 4))
|
||||||
|
self.check('---\n'
|
||||||
|
'1:\n'
|
||||||
|
' - 2\n'
|
||||||
|
' - 3\n', conf)
|
||||||
|
self.check('---\n'
|
||||||
|
'[\n'
|
||||||
|
' 1,\n'
|
||||||
|
' 2\n'
|
||||||
|
']\n', conf,
|
||||||
|
problem1=(2, 1))
|
@ -0,0 +1,42 @@
|
|||||||
|
#
|
||||||
|
# Copyright (C) 2020 Satoru SATOH
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
#
|
||||||
|
"""
|
||||||
|
Use this rule to forbid flow mappings of which content is denoted by
|
||||||
|
surrounding "{" and "}".
|
||||||
|
|
||||||
|
.. rubric:: Examples
|
||||||
|
|
||||||
|
#. The following code snippet would **PASS**:
|
||||||
|
::
|
||||||
|
|
||||||
|
foo:
|
||||||
|
bar: 1
|
||||||
|
baz:
|
||||||
|
a: b
|
||||||
|
|
||||||
|
#. The following code snippet would **FAIL**:
|
||||||
|
::
|
||||||
|
|
||||||
|
foo: {'bar': 1}
|
||||||
|
baz: {
|
||||||
|
'a': 'b'
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
from yamllint.linter import LintProblem
|
||||||
|
|
||||||
|
|
||||||
|
ID = 'flow-mapping'
|
||||||
|
TYPE = 'token'
|
||||||
|
|
||||||
|
|
||||||
|
def check(conf, token, _prev, _next, _nextnext, _context):
|
||||||
|
"""Check if the toke starts flow mapping is found.
|
||||||
|
"""
|
||||||
|
if isinstance(token, yaml.FlowMappingStartToken):
|
||||||
|
yield LintProblem(token.start_mark.line + 1,
|
||||||
|
token.start_mark.column + 1,
|
||||||
|
"Flow mappings are forbidden.")
|
@ -0,0 +1,39 @@
|
|||||||
|
#
|
||||||
|
# Copyright (C) 2020 Satoru SATOH
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
#
|
||||||
|
"""
|
||||||
|
Use this rule to forbid flow sequences of which content is denoted by
|
||||||
|
surrounding "[" and "]".
|
||||||
|
|
||||||
|
.. rubric:: Examples
|
||||||
|
|
||||||
|
#. The following code snippet would **PASS**:
|
||||||
|
::
|
||||||
|
|
||||||
|
foo:
|
||||||
|
- bar
|
||||||
|
- baz
|
||||||
|
|
||||||
|
#. The following code snippet would **FAIL**:
|
||||||
|
::
|
||||||
|
|
||||||
|
foo: ['bar', 'baz']
|
||||||
|
|
||||||
|
"""
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
from yamllint.linter import LintProblem
|
||||||
|
|
||||||
|
|
||||||
|
ID = 'flow-sequence'
|
||||||
|
TYPE = 'token'
|
||||||
|
|
||||||
|
|
||||||
|
def check(conf, token, _prev, _next, _nextnext, _context):
|
||||||
|
"""Check if the toke starts flow sequnce is found.
|
||||||
|
"""
|
||||||
|
if isinstance(token, yaml.FlowSequenceStartToken):
|
||||||
|
yield LintProblem(token.start_mark.line + 1,
|
||||||
|
token.start_mark.column + 1,
|
||||||
|
"Flow Sequences are forbidden.")
|
Loading…
Reference in New Issue