mirror of
https://github.com/borgbackup/borg.git
synced 2026-06-11 09:59:19 -04:00
fix argparsing test
This commit is contained in:
parent
223a834a3d
commit
a708397612
1 changed files with 19 additions and 16 deletions
|
|
@ -1,6 +1,8 @@
|
|||
import argparse
|
||||
import pytest
|
||||
|
||||
from jsonargparse import ArgumentParser
|
||||
|
||||
from . import Archiver, RK_ENCRYPTION, cmd
|
||||
|
||||
|
||||
|
|
@ -93,15 +95,15 @@ class TestCommonOptions:
|
|||
|
||||
@pytest.fixture
|
||||
def basic_parser(self):
|
||||
parser = argparse.ArgumentParser(prog="test", description="test parser", add_help=False)
|
||||
parser = ArgumentParser(prog="test", description="test parser", add_help=False)
|
||||
parser.common_options = Archiver.CommonOptions(
|
||||
self.define_common_options, suffix_precedence=("_level0", "_level1")
|
||||
)
|
||||
return parser
|
||||
|
||||
@pytest.fixture
|
||||
def subparsers(self, basic_parser):
|
||||
return basic_parser.add_subparsers(title="required arguments", metavar="<command>")
|
||||
def subcommands(self, basic_parser):
|
||||
return basic_parser.add_subcommands(required=False, title="required arguments", metavar="<command>")
|
||||
|
||||
@pytest.fixture
|
||||
def parser(self, basic_parser):
|
||||
|
|
@ -110,27 +112,28 @@ class TestCommonOptions:
|
|||
|
||||
@pytest.fixture
|
||||
def common_parser(self, parser):
|
||||
common_parser = argparse.ArgumentParser(add_help=False, prog="test")
|
||||
common_parser = ArgumentParser(add_help=False, prog="test")
|
||||
parser.common_options.add_common_group(common_parser, "_level1")
|
||||
return common_parser
|
||||
|
||||
@pytest.fixture
|
||||
def parse_vars_from_line(self, parser, subparsers, common_parser):
|
||||
subparser = subparsers.add_parser(
|
||||
"subcommand",
|
||||
def parse_vars_from_line(self, parser, subcommands, common_parser):
|
||||
from ...helpers.jap_helpers import flatten_namespace
|
||||
|
||||
subparser = ArgumentParser(
|
||||
parents=[common_parser],
|
||||
add_help=False,
|
||||
description="foo",
|
||||
epilog="bar",
|
||||
help="baz",
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||
)
|
||||
subparser.set_defaults(func=1234)
|
||||
subparser.add_argument("--foo-bar", dest="foo_bar", action="store_true")
|
||||
subcommands.add_subcommand("subcmd", subparser, help="baz")
|
||||
|
||||
def parse_vars_from_line(*line):
|
||||
print(line)
|
||||
args = parser.parse_args(line)
|
||||
args = flatten_namespace(args)
|
||||
parser.common_options.resolve(args)
|
||||
return vars(args)
|
||||
|
||||
|
|
@ -144,25 +147,25 @@ class TestCommonOptions:
|
|||
"progress": False,
|
||||
}
|
||||
|
||||
assert parse_vars_from_line("--error", "subcommand", "--critical") == {
|
||||
assert parse_vars_from_line("--error", "subcmd", "--critical") == {
|
||||
"append": [],
|
||||
"lock_wait": 1,
|
||||
"log_level": "critical",
|
||||
"progress": False,
|
||||
"foo_bar": False,
|
||||
"func": 1234,
|
||||
"subcommand": "subcmd",
|
||||
}
|
||||
|
||||
with pytest.raises(SystemExit):
|
||||
parse_vars_from_line("--foo-bar", "subcommand")
|
||||
parse_vars_from_line("--foo-bar", "subcmd")
|
||||
|
||||
assert parse_vars_from_line("--append=foo", "--append", "bar", "subcommand", "--append", "baz") == {
|
||||
assert parse_vars_from_line("--append=foo", "--append", "bar", "subcmd", "--append", "baz") == {
|
||||
"append": ["foo", "bar", "baz"],
|
||||
"lock_wait": 1,
|
||||
"log_level": "warning",
|
||||
"progress": False,
|
||||
"foo_bar": False,
|
||||
"func": 1234,
|
||||
"subcommand": "subcmd",
|
||||
}
|
||||
|
||||
@pytest.mark.parametrize("position", ("before", "after", "both"))
|
||||
|
|
@ -171,7 +174,7 @@ class TestCommonOptions:
|
|||
line = []
|
||||
if position in ("before", "both"):
|
||||
line.append(flag)
|
||||
line.append("subcommand")
|
||||
line.append("subcmd")
|
||||
if position in ("after", "both"):
|
||||
line.append(flag)
|
||||
|
||||
|
|
@ -181,7 +184,7 @@ class TestCommonOptions:
|
|||
"log_level": "warning",
|
||||
"progress": False,
|
||||
"foo_bar": False,
|
||||
"func": 1234,
|
||||
"subcommand": "subcmd",
|
||||
args_key: args_value,
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue