mirror of
https://github.com/PyCQA/flake8.git
synced 2026-03-31 11:16:54 +00:00
196 lines
6.7 KiB
Python
196 lines
6.7 KiB
Python
"""Unit tests for flake.options.manager.OptionManager."""
|
|
import optparse
|
|
import os
|
|
|
|
import pytest
|
|
|
|
from flake8.options import manager
|
|
|
|
TEST_VERSION = '3.0.0b1'
|
|
|
|
|
|
@pytest.fixture
|
|
def optmanager():
|
|
"""Generate a simple OptionManager with default test arguments."""
|
|
return manager.OptionManager(prog='flake8', version=TEST_VERSION)
|
|
|
|
|
|
def test_option_manager_creates_option_parser(optmanager):
|
|
"""Verify that a new manager creates a new parser."""
|
|
assert optmanager.parser is not None
|
|
assert isinstance(optmanager.parser, optparse.OptionParser) is True
|
|
|
|
|
|
def test_add_option_short_option_only(optmanager):
|
|
"""Verify the behaviour of adding a short-option only."""
|
|
assert optmanager.options == []
|
|
assert optmanager.config_options_dict == {}
|
|
|
|
optmanager.add_option('-s', help='Test short opt')
|
|
assert optmanager.options[0].short_option_name == '-s'
|
|
|
|
|
|
def test_add_option_long_option_only(optmanager):
|
|
"""Verify the behaviour of adding a long-option only."""
|
|
assert optmanager.options == []
|
|
assert optmanager.config_options_dict == {}
|
|
|
|
optmanager.add_option('--long', help='Test long opt')
|
|
assert optmanager.options[0].short_option_name is None
|
|
assert optmanager.options[0].long_option_name == '--long'
|
|
|
|
|
|
def test_add_short_and_long_option_names(optmanager):
|
|
"""Verify the behaviour of using both short and long option names."""
|
|
assert optmanager.options == []
|
|
assert optmanager.config_options_dict == {}
|
|
|
|
optmanager.add_option('-b', '--both', help='Test both opts')
|
|
assert optmanager.options[0].short_option_name == '-b'
|
|
assert optmanager.options[0].long_option_name == '--both'
|
|
|
|
|
|
def test_add_option_with_custom_args(optmanager):
|
|
"""Verify that add_option handles custom Flake8 parameters."""
|
|
assert optmanager.options == []
|
|
assert optmanager.config_options_dict == {}
|
|
|
|
optmanager.add_option('--parse', parse_from_config=True)
|
|
optmanager.add_option('--commas', comma_separated_list=True)
|
|
optmanager.add_option('--files', normalize_paths=True)
|
|
|
|
attrs = ['parse_from_config', 'comma_separated_list', 'normalize_paths']
|
|
for option, attr in zip(optmanager.options, attrs):
|
|
assert getattr(option, attr) is True
|
|
|
|
|
|
def test_parse_args_normalize_path(optmanager):
|
|
"""Show that parse_args handles path normalization."""
|
|
assert optmanager.options == []
|
|
assert optmanager.config_options_dict == {}
|
|
|
|
optmanager.add_option('--config', normalize_paths=True)
|
|
|
|
options, args = optmanager.parse_args(['--config', '../config.ini'])
|
|
assert options.config == os.path.abspath('../config.ini')
|
|
|
|
|
|
def test_parse_args_handles_comma_separated_defaults(optmanager):
|
|
"""Show that parse_args handles defaults that are comma-separated."""
|
|
assert optmanager.options == []
|
|
assert optmanager.config_options_dict == {}
|
|
|
|
optmanager.add_option('--exclude', default='E123,W234',
|
|
comma_separated_list=True)
|
|
|
|
options, args = optmanager.parse_args([])
|
|
assert options.exclude == ['E123', 'W234']
|
|
|
|
|
|
def test_parse_args_handles_comma_separated_lists(optmanager):
|
|
"""Show that parse_args handles user-specified comma-separated lists."""
|
|
assert optmanager.options == []
|
|
assert optmanager.config_options_dict == {}
|
|
|
|
optmanager.add_option('--exclude', default='E123,W234',
|
|
comma_separated_list=True)
|
|
|
|
options, args = optmanager.parse_args(['--exclude', 'E201,W111,F280'])
|
|
assert options.exclude == ['E201', 'W111', 'F280']
|
|
|
|
|
|
def test_parse_args_normalize_paths(optmanager):
|
|
"""Verify parse_args normalizes a comma-separated list of paths."""
|
|
assert optmanager.options == []
|
|
assert optmanager.config_options_dict == {}
|
|
|
|
optmanager.add_option('--extra-config', normalize_paths=True,
|
|
comma_separated_list=True)
|
|
|
|
options, args = optmanager.parse_args([
|
|
'--extra-config', '../config.ini,tox.ini,flake8/some-other.cfg'
|
|
])
|
|
assert options.extra_config == [
|
|
os.path.abspath('../config.ini'),
|
|
'tox.ini',
|
|
os.path.abspath('flake8/some-other.cfg'),
|
|
]
|
|
|
|
|
|
def test_format_plugin():
|
|
"""Verify that format_plugin turns a tuple into a dictionary."""
|
|
plugin = manager.OptionManager.format_plugin(('T101', 'Testing', '0.0.0'))
|
|
assert plugin['entry'] == 'T101'
|
|
assert plugin['name'] == 'Testing'
|
|
assert plugin['version'] == '0.0.0'
|
|
|
|
|
|
def test_generate_versions(optmanager):
|
|
"""Verify a comma-separated string is generated of registered plugins."""
|
|
optmanager.registered_plugins = [
|
|
('T100', 'Testing 100', '0.0.0'),
|
|
('T101', 'Testing 101', '0.0.0'),
|
|
('T300', 'Testing 300', '0.0.0'),
|
|
]
|
|
assert (optmanager.generate_versions() ==
|
|
'Testing 100: 0.0.0, Testing 101: 0.0.0, Testing 300: 0.0.0')
|
|
|
|
|
|
def test_generate_versions_with_format_string(optmanager):
|
|
"""Verify a comma-separated string is generated of registered plugins."""
|
|
optmanager.registered_plugins = [
|
|
('T100', 'Testing', '0.0.0'),
|
|
('T101', 'Testing', '0.0.0'),
|
|
('T300', 'Testing', '0.0.0'),
|
|
]
|
|
assert (
|
|
optmanager.generate_versions('%(name)s(%(entry)s): %(version)s') ==
|
|
'Testing(T100): 0.0.0, Testing(T101): 0.0.0, Testing(T300): 0.0.0'
|
|
)
|
|
|
|
|
|
def test_update_version_string(optmanager):
|
|
"""Verify we update the version string idempotently."""
|
|
assert optmanager.version == TEST_VERSION
|
|
assert optmanager.parser.version == TEST_VERSION
|
|
|
|
optmanager.registered_plugins = [
|
|
('T100', 'Testing 100', '0.0.0'),
|
|
('T101', 'Testing 101', '0.0.0'),
|
|
('T300', 'Testing 300', '0.0.0'),
|
|
]
|
|
|
|
optmanager.update_version_string()
|
|
|
|
assert optmanager.version == TEST_VERSION
|
|
assert (optmanager.parser.version == TEST_VERSION + ' ('
|
|
'Testing 100: 0.0.0, Testing 101: 0.0.0, Testing 300: 0.0.0)')
|
|
|
|
|
|
def test_generate_epilog(optmanager):
|
|
"""Verify how we generate the epilog for help text."""
|
|
assert optmanager.parser.epilog is None
|
|
|
|
optmanager.registered_plugins = [
|
|
('T100', 'Testing 100', '0.0.0'),
|
|
('T101', 'Testing 101', '0.0.0'),
|
|
('T300', 'Testing 300', '0.0.0'),
|
|
]
|
|
|
|
expected_value = (
|
|
'Installed plugins: Testing 100(T100): 0.0.0, Testing 101(T101): '
|
|
'0.0.0, Testing 300(T300): 0.0.0'
|
|
)
|
|
|
|
optmanager.generate_epilog()
|
|
assert optmanager.parser.epilog == expected_value
|
|
|
|
|
|
def test_extend_default_ignore(optmanager):
|
|
"""Verify that we update the extended default ignore list."""
|
|
assert optmanager.extended_default_ignore == set()
|
|
|
|
optmanager.extend_default_ignore(['T100', 'T101', 'T102'])
|
|
assert optmanager.extended_default_ignore == set(['T100',
|
|
'T101',
|
|
'T102'])
|