From 437ae2b71942d224b347b02cee49737157a0f23a Mon Sep 17 00:00:00 2001 From: Tim Byrne Date: Tue, 3 Dec 2019 07:54:59 -0600 Subject: [PATCH] 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. --- test/conftest.py | 10 ++++++++++ test/test_syntax.py | 36 ++++++++++++++++++++---------------- 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/test/conftest.py b/test/conftest.py index 8982a6c..4b6208b 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -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""" diff --git a/test/test_syntax.py b/test/test_syntax.py index 5e39b3a..f78fd51 100644 --- a/test/test_syntax.py +++ b/test/test_syntax.py @@ -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)