mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-27 20:42:26 +00:00
* Unit test batch 1 * CLI controller * Test batch 3 * Test batch 4 * Test batch 5 * clean some workflows and setup actions * test * rename wfs * rename * update action * Skip * fix cli tests --------- Co-authored-by: Henrique Joaquim <henriquecjoaquim@gmail.com> Co-authored-by: Diogo Sousa <montezdesousa@gmail.com> Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com>
95 lines
2.5 KiB
Python
95 lines
2.5 KiB
Python
"""Test the Argparse Translator."""
|
|
|
|
from argparse import ArgumentParser
|
|
|
|
import pytest
|
|
from openbb_cli.argparse_translator.argparse_translator import (
|
|
ArgparseTranslator,
|
|
CustomArgument,
|
|
CustomArgumentGroup,
|
|
)
|
|
|
|
# pylint: disable=protected-access
|
|
|
|
|
|
def test_custom_argument_action_validation():
|
|
"""Test that CustomArgument raises an error for invalid actions."""
|
|
with pytest.raises(ValueError) as excinfo:
|
|
CustomArgument(
|
|
name="test",
|
|
type=bool,
|
|
dest="test",
|
|
default=False,
|
|
required=True,
|
|
action="store",
|
|
help="Test argument",
|
|
nargs=None,
|
|
choices=None,
|
|
)
|
|
assert 'action must be "store_true"' in str(excinfo.value)
|
|
|
|
|
|
def test_custom_argument_remove_props_on_store_true():
|
|
"""Test that CustomArgument removes type, nargs, and choices on store_true."""
|
|
argument = CustomArgument(
|
|
name="verbose",
|
|
type=None,
|
|
dest="verbose",
|
|
default=None,
|
|
required=False,
|
|
action="store_true",
|
|
help="Verbose output",
|
|
nargs=None,
|
|
choices=None,
|
|
)
|
|
assert argument.type is None
|
|
assert argument.nargs is None
|
|
assert argument.choices is None
|
|
|
|
|
|
def test_custom_argument_group():
|
|
"""Test the CustomArgumentGroup class."""
|
|
args = [
|
|
CustomArgument(
|
|
name="test",
|
|
type=int,
|
|
dest="test",
|
|
default=1,
|
|
required=True,
|
|
action="store",
|
|
help="Test argument",
|
|
nargs=None,
|
|
choices=None,
|
|
)
|
|
]
|
|
group = CustomArgumentGroup(name="Test Group", arguments=args)
|
|
assert group.name == "Test Group"
|
|
assert len(group.arguments) == 1
|
|
assert group.arguments[0].name == "test"
|
|
|
|
|
|
def test_argparse_translator_setup():
|
|
"""Test the ArgparseTranslator setup."""
|
|
|
|
def test_function(test_arg: int):
|
|
"""A test function."""
|
|
return test_arg * 2
|
|
|
|
translator = ArgparseTranslator(func=test_function)
|
|
parser = translator.parser
|
|
assert isinstance(parser, ArgumentParser)
|
|
assert "--test_arg" in parser._option_string_actions
|
|
|
|
|
|
def test_argparse_translator_execution():
|
|
"""Test the ArgparseTranslator execution."""
|
|
|
|
def test_function(test_arg: int) -> int:
|
|
"""A test function."""
|
|
return test_arg * 2
|
|
|
|
translator = ArgparseTranslator(func=test_function)
|
|
parsed_args = translator.parser.parse_args(["--test_arg", "3"])
|
|
result = translator.execute_func(parsed_args)
|
|
assert result == 6
|