Add --force-linters option to pylint (#179)

When this option is provided, linters will be run regardless of the
version installed. Normally tests are skipped if the linters are not the
supported version.
This commit is contained in:
Tim Byrne 2019-12-03 07:54:59 -06:00
parent 5d484ca825
commit 437ae2b719
No known key found for this signature in database
GPG Key ID: 14DB4FC2465A4B12
2 changed files with 30 additions and 16 deletions

View File

@ -12,6 +12,16 @@ import py
import pytest
def pytest_addoption(parser):
"""Add options to pytest"""
parser.addoption(
"--force-linters",
action="store_true",
default=False,
help="Run linters regardless of installed versions",
)
@pytest.fixture(scope='session')
def shellcheck_version():
"""Version of shellcheck supported"""

View File

@ -10,20 +10,22 @@ def test_yadm_syntax(runner, yadm):
assert run.success
def test_shellcheck(runner, yadm, shellcheck_version):
def test_shellcheck(pytestconfig, runner, yadm, shellcheck_version):
"""Passes shellcheck"""
run = runner(command=['shellcheck', '-V'], report=False)
if f'version: {shellcheck_version}' not in run.out:
pytest.skip('Unsupported shellcheck version')
if not pytestconfig.getoption("--force-linters"):
run = runner(command=['shellcheck', '-V'], report=False)
if f'version: {shellcheck_version}' not in run.out:
pytest.skip('Unsupported shellcheck version')
run = runner(command=['shellcheck', '-s', 'bash', yadm])
assert run.success
def test_pylint(runner, pylint_version):
def test_pylint(pytestconfig, runner, pylint_version):
"""Passes pylint"""
run = runner(command=['pylint', '--version'], report=False)
if f'pylint {pylint_version}' not in run.out:
pytest.skip('Unsupported pylint version')
if not pytestconfig.getoption("--force-linters"):
run = runner(command=['pylint', '--version'], report=False)
if f'pylint {pylint_version}' not in run.out:
pytest.skip('Unsupported pylint version')
pyfiles = list()
for tfile in os.listdir('test'):
if tfile.endswith('.py'):
@ -32,20 +34,22 @@ def test_pylint(runner, pylint_version):
assert run.success
def test_flake8(runner, flake8_version):
def test_flake8(pytestconfig, runner, flake8_version):
"""Passes flake8"""
run = runner(command=['flake8', '--version'], report=False)
if not run.out.startswith(flake8_version):
pytest.skip('Unsupported flake8 version')
if not pytestconfig.getoption("--force-linters"):
run = runner(command=['flake8', '--version'], report=False)
if not run.out.startswith(flake8_version):
pytest.skip('Unsupported flake8 version')
run = runner(command=['flake8', 'test'])
assert run.success
def test_yamllint(runner, yamllint_version):
def test_yamllint(pytestconfig, runner, yamllint_version):
"""Passes yamllint"""
run = runner(command=['yamllint', '--version'], report=False)
if not run.out.strip().endswith(yamllint_version):
pytest.skip('Unsupported yamllint version')
if not pytestconfig.getoption("--force-linters"):
run = runner(command=['yamllint', '--version'], report=False)
if not run.out.strip().endswith(yamllint_version):
pytest.skip('Unsupported yamllint version')
run = runner(
command=['yamllint', '-s', '$(find . -name \\*.yml)'],
shell=True)