Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CPPLintBear.py: Add check_invalid_config test #1165

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion bears/c_languages/CPPLintBear.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,12 @@
from coalib.settings.Setting import typed_list


def check_invalid_config(use_spaces, indent_size):
if not use_spaces or indent_size != 2:
raise ValueError("CPPLint doesn't support indent_size other "
'than 2 or not using spaces.')


@linter(executable='cpplint',
use_stdout=False,
use_stderr=True,
Expand All @@ -26,12 +32,20 @@ class CPPLintBear:
def create_arguments(filename, file, config_file,
max_line_length: int=79,
cpplint_ignore: typed_list(str)=(),
cpplint_include: typed_list(str)=()):
cpplint_include: typed_list(str) = (),
indent_size: int=2,
use_spaces: bool=True,):
"""
:param max_line_length: Maximum number of characters for a line.
:param cpplint_ignore: List of checkers to ignore.
:param cpplint_include: List of checkers to explicitly enable.
:param use_spaces: Only spaces are supported, hence a `True`
value.
:param indent_size: Only an indent size of 2 is permitted by
the bear.
"""
check_invalid_config(use_spaces, indent_size)

ignore = ','.join('-'+part.strip() for part in cpplint_ignore)
include = ','.join('+'+part.strip() for part in cpplint_include)
return ('--filter=' + ignore + ',' + include,
Expand Down
38 changes: 37 additions & 1 deletion tests/c_languages/CPPLintBearTest.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
from bears.c_languages.CPPLintBear import CPPLintBear
from coalib.testing.LocalBearTestHelper import verify_local_bear
from coalib.testing.LocalBearTestHelper import verify_local_bear,\
LocalBearTestHelper
from coalib.testing.BearTestHelper import generate_skip_decorator
from coalib.settings.Section import Section
from coalib.settings.Setting import Setting
import queue

test_file = """
int main() {
Expand All @@ -26,3 +31,34 @@
settings={'cpplint_ignore': 'legal',
'max_line_length': '13'},
tempfile_kwargs={'suffix': '.cpp'})


@generate_skip_decorator(CPPLintBear)
class CPPLintBearTest(LocalBearTestHelper):

def setUp(self):
self.section = Section('name')
self.uut = CPPLintBear(self.section,
queue.Queue())

def test_use_spaces_config(self):
settings = {'cpplint_ignore': 'legal',
'use_spaces': 'False'}
for name, value in settings.items():
self.section.append(Setting(name, value))
with self.assertRaisesRegex(AssertionError, 'Bear returned None'
' on execution\n'):
self.check_validity(self.uut,
test_file.splitlines(keepends=True),
valid=False)

def test_indent_size_config(self):
settings = {'cpplint_ignore': 'legal',
'indent_size': '4'}
for name, value in settings.items():
self.section.append(Setting(name, value))
with self.assertRaisesRegex(AssertionError, 'Bear returned None'
' on execution\n'):
self.check_validity(self.uut,
test_file.splitlines(keepends=True),
valid=False)