134 lines
4.3 KiB
Python
134 lines
4.3 KiB
Python
from pathlib import Path
|
|
|
|
from rpmlint.config import Config
|
|
|
|
from Testing import TEST_CONFIG, testpath
|
|
|
|
|
|
TEST_CONFIG_2 = testpath() / 'configs/test2.config'
|
|
TEST_CONFIG_FILTERS = testpath() / 'configs/testfilters.config'
|
|
TEST_LIST1 = testpath() / 'configs/testlists1.config'
|
|
TEST_LIST2 = testpath() / 'configs/testlists2.config'
|
|
TEST_RPMLINTRC = testpath() / 'configs/testing-rpmlintrc'
|
|
TEST_BROKEN = testpath() / 'configs/broken.config'
|
|
|
|
|
|
def test_printing(capsys):
|
|
cfg = Config()
|
|
cfg.print_config()
|
|
out, err = capsys.readouterr()
|
|
assert not err
|
|
assert out
|
|
|
|
|
|
def test_custom_config(capsys):
|
|
cfg = Config()
|
|
# bullshit config
|
|
cfg.find_configs(Path('BULLSHIT'))
|
|
out, err = capsys.readouterr()
|
|
assert Path('BULLSHIT') not in cfg.conf_files
|
|
assert 'BULLSHIT' in err
|
|
# existing config
|
|
cfg.find_configs(TEST_CONFIG)
|
|
out, err = capsys.readouterr()
|
|
assert cfg.conf_files
|
|
assert not err
|
|
|
|
|
|
def test_broken_config(capsys):
|
|
cfg = Config(TEST_BROKEN)
|
|
out, err = capsys.readouterr()
|
|
assert 'error parsing configuration' in err
|
|
assert cfg.conf_files
|
|
assert len(cfg.conf_files) == 1
|
|
|
|
|
|
def test_parsing():
|
|
# ugly content variables from old config
|
|
bad_crypto_warning = \
|
|
"""This application package calls a function to explicitly set crypto ciphers
|
|
for SSL/TLS. That may cause the application not to use the system-wide set
|
|
cryptographic policy and should be modified in accordance to:
|
|
https://fedoraproject.org/wiki/Packaging:CryptoPolicies"""
|
|
call_blacklist = {
|
|
'crypto-policy-non-compliance-openssl': {
|
|
'f_name': 'SSL_CTX_set_cipher_list',
|
|
'description': bad_crypto_warning,
|
|
},
|
|
'crypto-policy-non-compliance-gnutls-1': {
|
|
'f_name': 'gnutls_priority_set_direct',
|
|
'description': bad_crypto_warning,
|
|
},
|
|
'crypto-policy-non-compliance-gnutls-2': {
|
|
'f_name': 'gnutls_priority_init',
|
|
'good_param': 'SYSLOG',
|
|
'description': bad_crypto_warning
|
|
},
|
|
}
|
|
cfg = Config(TEST_CONFIG)
|
|
assert cfg.configuration
|
|
assert cfg.configuration['Distribution'] == 'Fedora Project'
|
|
assert cfg.configuration['WarnOnFunction'] == call_blacklist
|
|
# default value check
|
|
assert cfg.configuration['UseDefaultRunlevels'] is True
|
|
|
|
|
|
def test_double_config():
|
|
"""
|
|
Load two configs and make sure we properly load all the values
|
|
"""
|
|
cfg = Config(TEST_CONFIG)
|
|
assert len(cfg.conf_files) == 2
|
|
assert cfg.configuration['ExtraMenuNeeds'][0] == 'gnome'
|
|
# shovel in another config
|
|
cfg.load_config(TEST_CONFIG_2)
|
|
assert len(cfg.conf_files) == 3
|
|
assert cfg.configuration['ExtraMenuNeeds'][0] == 'windows'
|
|
assert cfg.configuration['WarnOnFunction']['crypto-policy-non-compliance-openssl']['f_name'] == 'REPLACED'
|
|
assert cfg.configuration['WarnOnFunction']['crypto-policy-3']['f_name'] == 'new_blobie'
|
|
|
|
|
|
def test_filters():
|
|
"""
|
|
Load some filters and make sure we generate nice regexp
|
|
"""
|
|
cfg = Config(TEST_CONFIG_FILTERS)
|
|
assert len(cfg.configuration['Filters']) == 7
|
|
assert cfg.configuration['Filters'][0] == '.*invalid-buildhost.*'
|
|
|
|
|
|
def test_list_merging():
|
|
"""
|
|
Load two configs and check we loaded up in proper older with
|
|
replacing based on TOML syntax
|
|
"""
|
|
cfg = Config(TEST_LIST1)
|
|
assert len(cfg.configuration['Filters']) == 1
|
|
assert cfg.configuration['ValidGroups'][0] == 'bullshitgroup'
|
|
cfg.load_config(TEST_LIST2)
|
|
assert len(cfg.conf_files) == 3
|
|
assert len(cfg.configuration['Filters']) == 1
|
|
assert len(cfg.configuration['ValidGroups']) == 1
|
|
assert cfg.configuration['ValidGroups'][0] == 'System/Libraries'
|
|
|
|
|
|
def test_badness_functions():
|
|
"""
|
|
Test badness settings
|
|
"""
|
|
cfg = Config(TEST_CONFIG_2)
|
|
assert len(cfg.configuration['Scoring']) == 0
|
|
cfg.set_badness('suse-dbus-unauthorized-service', 15)
|
|
assert len(cfg.configuration['Scoring']) == 1
|
|
assert cfg.configuration['Scoring']['suse-dbus-unauthorized-service'] == 15
|
|
|
|
|
|
def test_rpmlint_loading():
|
|
"""
|
|
Make sure we can load up rpmlintrc file without executing any code
|
|
"""
|
|
cfg = Config(TEST_CONFIG)
|
|
cfg.load_rpmlintrc(TEST_RPMLINTRC)
|
|
assert len(cfg.configuration['Filters']) == 109
|
|
assert len(cfg.configuration['Scoring']) == 2
|