Tests: Reorganize common and global tests
This commit is contained in:
@@ -1,51 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Copyright (C) 2016 Adrien Vergé
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import unittest
|
||||
|
||||
import yaml
|
||||
|
||||
from yamllint.config import YamlLintConfig
|
||||
from yamllint import linter
|
||||
|
||||
|
||||
class RuleTestCase(unittest.TestCase):
|
||||
def build_fake_config(self, conf):
|
||||
if conf is None:
|
||||
conf = {}
|
||||
else:
|
||||
conf = yaml.safe_load(conf)
|
||||
conf = {'extends': 'default',
|
||||
'rules': conf}
|
||||
return YamlLintConfig(yaml.safe_dump(conf))
|
||||
|
||||
def check(self, source, conf, **kwargs):
|
||||
expected_problems = []
|
||||
for key in kwargs:
|
||||
assert key.startswith('problem')
|
||||
if len(kwargs[key]) > 2:
|
||||
if kwargs[key][2] == 'syntax':
|
||||
rule_id = None
|
||||
else:
|
||||
rule_id = kwargs[key][2]
|
||||
else:
|
||||
rule_id = self.rule_id
|
||||
expected_problems.append(linter.LintProblem(
|
||||
kwargs[key][0], kwargs[key][1], rule=rule_id))
|
||||
expected_problems.sort()
|
||||
|
||||
real_problems = list(linter.run(source, self.build_fake_config(conf)))
|
||||
self.assertEqual(real_problems, expected_problems)
|
||||
@@ -14,7 +14,7 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from tests.rules.common import RuleTestCase
|
||||
from tests.common import RuleTestCase
|
||||
|
||||
|
||||
class ColonTestCase(RuleTestCase):
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from tests.rules.common import RuleTestCase
|
||||
from tests.common import RuleTestCase
|
||||
|
||||
|
||||
class ColonTestCase(RuleTestCase):
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from tests.rules.common import RuleTestCase
|
||||
from tests.common import RuleTestCase
|
||||
|
||||
|
||||
class ColonTestCase(RuleTestCase):
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from tests.rules.common import RuleTestCase
|
||||
from tests.common import RuleTestCase
|
||||
|
||||
|
||||
class CommaTestCase(RuleTestCase):
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from tests.rules.common import RuleTestCase
|
||||
from tests.common import RuleTestCase
|
||||
|
||||
|
||||
class CommentsTestCase(RuleTestCase):
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from tests.rules.common import RuleTestCase
|
||||
from tests.common import RuleTestCase
|
||||
|
||||
|
||||
class CommentsIndentationTestCase(RuleTestCase):
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from tests.rules.common import RuleTestCase
|
||||
from tests.common import RuleTestCase
|
||||
|
||||
|
||||
class DocumentEndTestCase(RuleTestCase):
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from tests.rules.common import RuleTestCase
|
||||
from tests.common import RuleTestCase
|
||||
|
||||
|
||||
class DocumentStartTestCase(RuleTestCase):
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from tests.rules.common import RuleTestCase
|
||||
from tests.common import RuleTestCase
|
||||
|
||||
|
||||
class EmptyLinesTestCase(RuleTestCase):
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from tests.rules.common import RuleTestCase
|
||||
from tests.common import RuleTestCase
|
||||
|
||||
|
||||
class HyphenTestCase(RuleTestCase):
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from tests.rules.common import RuleTestCase
|
||||
from tests.common import RuleTestCase
|
||||
|
||||
|
||||
class IndentationTestCase(RuleTestCase):
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from tests.rules.common import RuleTestCase
|
||||
from tests.common import RuleTestCase
|
||||
|
||||
|
||||
class LineLengthTestCase(RuleTestCase):
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from tests.rules.common import RuleTestCase
|
||||
from tests.common import RuleTestCase
|
||||
|
||||
|
||||
class NewLineAtEndOfFileTestCase(RuleTestCase):
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from tests.rules.common import RuleTestCase
|
||||
from tests.common import RuleTestCase
|
||||
|
||||
|
||||
class NewLinesTestCase(RuleTestCase):
|
||||
|
||||
@@ -1,79 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Copyright (C) 2016 Adrien Vergé
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from tests.rules.common import RuleTestCase
|
||||
|
||||
|
||||
class YamlLintTestCase(RuleTestCase):
|
||||
rule_id = None # syntax error
|
||||
|
||||
def test_lint(self):
|
||||
self.check('---\n'
|
||||
'this is not: valid: YAML\n', None, problem=(2, 19))
|
||||
self.check('---\n'
|
||||
'this is: valid YAML\n'
|
||||
'\n'
|
||||
'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))
|
||||
|
||||
def test_empty_flows(self):
|
||||
self.check('---\n'
|
||||
'- []\n'
|
||||
'- {}\n'
|
||||
'- [\n'
|
||||
']\n'
|
||||
'- {\n'
|
||||
'}\n'
|
||||
'...\n', None)
|
||||
|
||||
def test_explicit_mapping(self):
|
||||
self.check('---\n'
|
||||
'? key\n'
|
||||
': - value 1\n'
|
||||
' - value 2\n'
|
||||
'...\n', None)
|
||||
self.check('---\n'
|
||||
'?\n'
|
||||
' key\n'
|
||||
': {a: 1}\n'
|
||||
'...\n', None)
|
||||
self.check('---\n'
|
||||
'?\n'
|
||||
' key\n'
|
||||
':\n'
|
||||
' val\n'
|
||||
'...\n', None)
|
||||
|
||||
def test_mapping_between_sequences(self):
|
||||
# This is valid YAML. See http://www.yaml.org/spec/1.2/spec.html,
|
||||
# example 2.11
|
||||
self.check('---\n'
|
||||
'? - Detroit Tigers\n'
|
||||
' - Chicago cubs\n'
|
||||
':\n'
|
||||
' - 2001-07-23\n'
|
||||
'\n'
|
||||
'? [New York Yankees,\n'
|
||||
' Atlanta Braves]\n'
|
||||
': [2001-07-02, 2001-08-12,\n'
|
||||
' 2001-08-14]\n', None)
|
||||
@@ -14,7 +14,7 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from tests.rules.common import RuleTestCase
|
||||
from tests.common import RuleTestCase
|
||||
|
||||
|
||||
class TrailingSpacesTestCase(RuleTestCase):
|
||||
|
||||
Reference in New Issue
Block a user