mirror of
https://github.com/PyCQA/flake8.git
synced 2026-04-04 12:16:53 +00:00
Start testing the OptionManager
This commit is contained in:
parent
7361603d7a
commit
a7ce4f00ec
2 changed files with 52 additions and 2 deletions
|
|
@ -105,8 +105,10 @@ class Option(object):
|
|||
|
||||
def to_optparse(self):
|
||||
"""Convert a Flake8 Option to an optparse Option."""
|
||||
return optparse.Option(*self.option_args,
|
||||
**self.option_kwargs)
|
||||
if not hasattr(self, '_opt'):
|
||||
self._opt = optparse.Option(*self.option_args,
|
||||
**self.option_kwargs)
|
||||
return self._opt
|
||||
|
||||
|
||||
class OptionManager(object):
|
||||
|
|
@ -130,6 +132,8 @@ class OptionManager(object):
|
|||
``short_option_name`` and ``long_option_name`` may be specified
|
||||
positionally as they are with optparse normally.
|
||||
"""
|
||||
if len(args) == 1 and args[0].startswith('--'):
|
||||
args = (None, args[0])
|
||||
option = Option(*args, **kwargs)
|
||||
self.parser.add_option(option.to_optparse())
|
||||
self.options.append(option)
|
||||
|
|
|
|||
46
tests/unit/test_option_manager.py
Normal file
46
tests/unit/test_option_manager.py
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
"""Unit tests for flake.options.manager.OptionManager."""
|
||||
import optparse
|
||||
|
||||
import pytest
|
||||
|
||||
from flake8.options import manager
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def optmanager():
|
||||
return manager.OptionManager(prog='flake8', version='3.0.0b1')
|
||||
|
||||
|
||||
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'
|
||||
Loading…
Add table
Add a link
Reference in a new issue