tiramisu-cmdline-parser/tests/test_exit.py

86 lines
3.1 KiB
Python
Raw Normal View History

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'])