2020-04-23 03:34:16 +08:00
|
|
|
from pathlib import PosixPath
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
from rpmlint.cli import process_lint_args
|
2020-10-21 21:17:38 +08:00
|
|
|
from rpmlint.config import Config
|
|
|
|
from rpmlint.lint import Lint
|
2020-04-23 03:34:16 +08:00
|
|
|
|
2021-06-05 11:32:28 +08:00
|
|
|
from Testing import HAS_CHECKBASHISMS, HAS_DASH
|
|
|
|
|
2020-04-23 03:34:16 +08:00
|
|
|
|
|
|
|
@pytest.mark.parametrize('test_arguments', [['-c', 'rpmlint/configs/thisdoesntexist.toml']])
|
|
|
|
def test_parsing_non_existing_config_file(test_arguments):
|
|
|
|
with pytest.raises(SystemExit) as exc:
|
|
|
|
process_lint_args(test_arguments)
|
|
|
|
assert exc.value.code == 2
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize('test_arguments', [['-c', 'rpmlint/configdefaults.toml']])
|
|
|
|
def test_parsing_config_file(test_arguments):
|
|
|
|
parsed = process_lint_args(test_arguments)
|
|
|
|
|
|
|
|
assert len(parsed['config']) == 1
|
|
|
|
assert parsed['config'][0] == PosixPath('rpmlint/configdefaults.toml')
|
2020-10-20 09:17:10 +08:00
|
|
|
|
|
|
|
|
2021-06-05 11:32:28 +08:00
|
|
|
@pytest.mark.skipif(not HAS_CHECKBASHISMS, reason='Optional dependency checkbashisms not installed')
|
|
|
|
@pytest.mark.skipif(not HAS_DASH, reason='Optional dependency dash not installed')
|
2020-10-20 09:17:10 +08:00
|
|
|
@pytest.mark.parametrize('test_arguments', [['-c', 'configs/openSUSE']])
|
|
|
|
def test_parsing_opensuse_conf(test_arguments):
|
|
|
|
parsed = process_lint_args(test_arguments)
|
|
|
|
|
2020-11-03 17:05:09 +08:00
|
|
|
assert len(parsed['config']) == 7
|
2020-10-21 01:01:10 +08:00
|
|
|
assert PosixPath('configs/openSUSE/opensuse.toml') in parsed['config']
|
|
|
|
assert PosixPath('configs/openSUSE/licenses.toml') in parsed['config']
|
2020-10-21 01:19:28 +08:00
|
|
|
assert PosixPath('configs/openSUSE/pie-executables.toml') in parsed['config']
|
2020-10-21 21:17:38 +08:00
|
|
|
|
|
|
|
defaultcfg = Config()
|
|
|
|
lint = Lint(parsed)
|
|
|
|
default_checks = defaultcfg.configuration['Checks']
|
|
|
|
checks = lint.config.configuration['Checks']
|
|
|
|
# Verify that all original Checks are enabled and some new are added
|
|
|
|
for check in default_checks:
|
|
|
|
assert check in checks
|
|
|
|
assert len(checks) > len(default_checks)
|
2020-11-03 17:05:09 +08:00
|
|
|
|
|
|
|
# Verify that all scoring keys are a known checks
|
|
|
|
checks = set(lint.output.error_details.keys())
|
|
|
|
checks |= set(defaultcfg.configuration['Descriptions'].keys())
|
|
|
|
|
|
|
|
score_keys = lint.config.configuration['Scoring'].keys()
|
|
|
|
for score_key in score_keys:
|
|
|
|
if score_key.startswith('percent-in-'):
|
|
|
|
continue
|
|
|
|
assert score_key in checks
|
2021-03-24 04:24:38 +08:00
|
|
|
|
|
|
|
|
2021-06-05 11:32:28 +08:00
|
|
|
@pytest.mark.skipif(not HAS_CHECKBASHISMS, reason='Optional dependency checkbashisms not installed')
|
|
|
|
@pytest.mark.skipif(not HAS_DASH, reason='Optional dependency dash not installed')
|
2021-03-24 04:24:38 +08:00
|
|
|
@pytest.mark.parametrize('test_arguments', [['-c', 'configs/Fedora']])
|
|
|
|
def test_parsing_fedora_conf(test_arguments):
|
|
|
|
parsed = process_lint_args(test_arguments)
|
|
|
|
|
|
|
|
assert len(parsed['config']) == 5
|
|
|
|
assert PosixPath('configs/Fedora/fedora.toml') in parsed['config']
|
|
|
|
assert PosixPath('configs/Fedora/licenses.toml') in parsed['config']
|
|
|
|
assert PosixPath('configs/Fedora/users-groups.toml') in parsed['config']
|
|
|
|
|
|
|
|
defaultcfg = Config()
|
|
|
|
lint = Lint(parsed)
|
|
|
|
default_checks = defaultcfg.configuration['Checks']
|
|
|
|
checks = lint.config.configuration['Checks']
|
|
|
|
# Verify that all original Checks are enabled and some new are added
|
|
|
|
for check in default_checks:
|
|
|
|
assert check in checks
|
|
|
|
assert len(checks) > len(default_checks)
|
|
|
|
|
|
|
|
# Verify that all scoring keys are a known checks
|
|
|
|
checks = set(lint.output.error_details.keys())
|
|
|
|
checks |= set(defaultcfg.configuration['Descriptions'].keys())
|
|
|
|
|
|
|
|
score_keys = lint.config.configuration['Scoring'].keys()
|
|
|
|
for score_key in score_keys:
|
|
|
|
if score_key.startswith('percent-in-'):
|
|
|
|
continue
|
|
|
|
assert score_key in checks
|
2024-01-03 22:00:55 +08:00
|
|
|
|
|
|
|
|
|
|
|
def test_reset_check():
|
|
|
|
files = ['test/spec/SpecCheck2.spec', 'test/spec/SpecCheck3.spec']
|
|
|
|
options = process_lint_args(['--checks', 'SpecCheck'] + files)
|
|
|
|
lint = Lint(options)
|
|
|
|
lint.run()
|
|
|
|
out = lint.output.print_results(lint.output.results, lint.config)
|
|
|
|
assert 'more-than-one-%changelog-section' not in out
|