Skip to content

Commit f5166b8

Browse files
authored
Merge pull request #34 from pddg/fix/get_options
Fix to use get_options when initialize argument parser
2 parents 45d0b03 + 1593342 commit f5166b8

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

tests/test_command.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import pytest
66

7+
from uroboros import Option
78
from uroboros.errors import CommandDuplicateError
89
from .base import RootCommand, SecondCommand, ThirdCommand
910

@@ -318,3 +319,22 @@ def test_pre_hook_validated(self, commands):
318319
for cmd in commands:
319320
key = "after_validate_{}".format(cmd.name)
320321
assert getattr(args, key, None) == cmd.value
322+
323+
def test_create_default_parser(self):
324+
class Opt(Option):
325+
def build_option(self, parser):
326+
parser.add_argument("--test", type=str)
327+
return parser
328+
329+
class Cmd(RootCommand):
330+
options = [Opt()]
331+
332+
class Cmd2(RootCommand):
333+
def get_options(self):
334+
return [Opt()]
335+
336+
argv = ["--test", "test"]
337+
for cmd in [Cmd(), Cmd2()]:
338+
cmd_parser = cmd.create_default_parser()
339+
args = cmd_parser.parse_args(argv)
340+
assert args.test == 'test'

uroboros/command.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,15 +121,15 @@ def initialize_sub_parsers(self, parser: 'argparse.ArgumentParser'):
121121
name=cmd.name,
122122
description=cmd.long_description,
123123
help=cmd.short_description,
124-
parents=[o.get_parser() for o in cmd.options],
124+
parents=[o.get_parser() for o in cmd.get_options()],
125125
)
126126
cmd.initialize(sub_parser)
127127

128128
def create_default_parser(self) -> 'argparse.ArgumentParser':
129129
parser = argparse.ArgumentParser(
130130
prog=self.name,
131131
description=self.long_description,
132-
parents=[o.get_parser() for o in self.options]
132+
parents=[o.get_parser() for o in self.get_options()]
133133
)
134134
parser.set_defaults(func=self.run)
135135
return parser

0 commit comments

Comments
 (0)