custom linter rules test: Load rules in test setup.

This commit is contained in:
Robert Hönig 2017-09-13 15:31:00 +02:00 committed by Tim Abbott
parent 402d7fca50
commit 5294e10801
1 changed files with 32 additions and 24 deletions

View File

@ -4,16 +4,19 @@ from itertools import chain
from mock import patch, MagicMock from mock import patch, MagicMock
from unittest import TestCase from unittest import TestCase
from typing import Any, Dict, List
from tools.linter_lib.custom_check import build_custom_checkers from tools.linter_lib.custom_check import build_custom_checkers
ROOT_DIR = os.path.abspath(os.path.join(__file__, '..', '..', '..')) ROOT_DIR = os.path.abspath(os.path.join(__file__, '..', '..', '..'))
CHECK_MESSAGE = "Fix the corresponding rule in `tools/linter_lib/custom_check.py`." CHECK_MESSAGE = "Fix the corresponding rule in `tools/linter_lib/custom_check.py`."
@patch('tools.linter_lib.custom_check.custom_check_file', return_value=False)
class TestCustomRulesFormat(TestCase): class TestCustomRulesFormat(TestCase):
def test_paths_in_rules(self, mock_custom_check_file):
# type: (MagicMock) -> None def setUp(self):
"""Verifies that the paths mentioned in linter rules actually exist""" # type: () -> None
self.all_rules = [] # type: List[Dict[str, Any]]
with patch('tools.linter_lib.custom_check.custom_check_file', return_value=False) as mock_custom_check_file:
by_lang = dict.fromkeys(['py', 'js', 'sh', 'css', 'handlebars', 'html', 'json', 'md', 'txt', 'text', 'yaml'], by_lang = dict.fromkeys(['py', 'js', 'sh', 'css', 'handlebars', 'html', 'json', 'md', 'txt', 'text', 'yaml'],
['foo/bar.baz']) ['foo/bar.baz'])
check_custom_checks_py, check_custom_checks_nonpy = build_custom_checkers(by_lang) check_custom_checks_py, check_custom_checks_nonpy = build_custom_checkers(by_lang)
@ -21,7 +24,12 @@ class TestCustomRulesFormat(TestCase):
check_custom_checks_nonpy() check_custom_checks_nonpy()
for call_args in mock_custom_check_file.call_args_list: for call_args in mock_custom_check_file.call_args_list:
rule_set = call_args[0][2] rule_set = call_args[0][2]
for rule in rule_set: self.all_rules.extend(rule_set)
def test_paths_in_rules(self):
# type: () -> None
"""Verifies that the paths mentioned in linter rules actually exist"""
for rule in self.all_rules:
for path in rule.get('exclude', {}): for path in rule.get('exclude', {}):
abs_path = os.path.abspath(os.path.join(ROOT_DIR, path)) abs_path = os.path.abspath(os.path.join(ROOT_DIR, path))
self.assertTrue(os.path.exists(abs_path), self.assertTrue(os.path.exists(abs_path),