85 lines
3.1 KiB
Python
85 lines
3.1 KiB
Python
import pytest
|
|
|
|
from argparse import ArgumentError
|
|
|
|
from tiramisu_cmdline_parser import TiramisuCmdlineParser
|
|
from tiramisu import StrOption, BoolOption, OptionDescription, Config
|
|
from .utils import TestHelpFormatter
|
|
|
|
|
|
def get_config(has_tree=False, default_verbosity=False):
|
|
booloption = BoolOption('disabled',
|
|
'disabled',
|
|
properties=('disabled',),
|
|
)
|
|
booloption2 = BoolOption('verbosity',
|
|
'increase output verbosity',
|
|
default=default_verbosity,
|
|
)
|
|
stroption = StrOption('option',
|
|
'an option',
|
|
)
|
|
root = OptionDescription('root',
|
|
'root',
|
|
[booloption, booloption2, stroption],
|
|
)
|
|
if has_tree:
|
|
root = OptionDescription('root',
|
|
'root',
|
|
[root],
|
|
)
|
|
config = Config(root)
|
|
config.property.read_write()
|
|
return config
|
|
|
|
|
|
def test_exit_boolean():
|
|
config = get_config(default_verbosity=True)
|
|
parser = TiramisuCmdlineParser(config, 'prog.py', formatter_class=TestHelpFormatter, color=False, exit_on_error=False)
|
|
parser.parse_args(['--verbosity'])
|
|
parser.parse_known_args(['--verbosity'])
|
|
|
|
|
|
def test_exit_disabled():
|
|
config = get_config(default_verbosity=True)
|
|
parser = TiramisuCmdlineParser(config, 'prog.py', formatter_class=TestHelpFormatter, color=False, exit_on_error=False)
|
|
error = None
|
|
try:
|
|
parser.parse_args(['--disabled'])
|
|
except ArgumentError as err:
|
|
error = err
|
|
assert error
|
|
assert str(error) == 'unrecognized arguments: --disabled (cannot access to option "disabled" because has property "disabled")'
|
|
|
|
|
|
def test_exit_string():
|
|
config = get_config(default_verbosity=True)
|
|
parser = TiramisuCmdlineParser(config, 'prog.py', formatter_class=TestHelpFormatter, color=False, exit_on_error=False)
|
|
parser.parse_args(['--option', 'value'])
|
|
parser.parse_known_args(['--option', 'value'])
|
|
|
|
|
|
def test_exit_unknown():
|
|
config = get_config(default_verbosity=True)
|
|
parser = TiramisuCmdlineParser(config, 'prog.py', formatter_class=TestHelpFormatter, color=False, exit_on_error=False)
|
|
error = None
|
|
try:
|
|
parser.parse_args(['--unknown', 'value'])
|
|
except ArgumentError as err:
|
|
error = err
|
|
assert error
|
|
assert str(error) == 'unrecognized arguments: --unknown value'
|
|
parser.parse_known_args(['--unknown', 'value'])
|
|
|
|
|
|
def test_exit_known_unknown():
|
|
config = get_config(default_verbosity=True)
|
|
parser = TiramisuCmdlineParser(config, 'prog.py', formatter_class=TestHelpFormatter, color=False, exit_on_error=False)
|
|
error = None
|
|
try:
|
|
parser.parse_args(['--option', 'value', '--unknown', 'value'])
|
|
except ArgumentError as err:
|
|
error = err
|
|
assert error
|
|
assert str(error) == 'unrecognized arguments: --unknown value'
|
|
parser.parse_known_args(['--unknown', 'value'])
|