diff options
author | Kevin Van Brunt <kmvanbrunt@gmail.com> | 2020-08-25 11:25:00 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-25 11:25:00 -0400 |
commit | ae7e67c20217baaa17e6d182a3fd33b9e8c982e8 (patch) | |
tree | b8cfbaca2ec4622a981d96c33c7a964ca621108e /tests | |
parent | a540cfc5373cee2272de6c81be8b6fa8a78c6462 (diff) | |
parent | 9b5a98825a9b00807a40494e8c634c392077ccd2 (diff) | |
download | cmd2-git-ae7e67c20217baaa17e6d182a3fd33b9e8c982e8.tar.gz |
Merge pull request #984 from python-cmd2/recursion_error
Fixed RecursionError when printing an argparse.Namespace
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_argparse.py | 23 | ||||
-rw-r--r-- | tests/test_plugin.py | 2 |
2 files changed, 24 insertions, 1 deletions
diff --git a/tests/test_argparse.py b/tests/test_argparse.py index 0d46b15a..9806c9b5 100644 --- a/tests/test_argparse.py +++ b/tests/test_argparse.py @@ -290,6 +290,24 @@ class SubcommandApp(cmd2.Cmd): func(self, args) + # Add a subcommand using as_subcommand_to decorator + has_subcmd_parser = cmd2.Cmd2ArgumentParser(description="Tests as_subcmd_to decorator") + has_subcmd_subparsers = has_subcmd_parser.add_subparsers(dest='subcommand', metavar='SUBCOMMAND') + has_subcmd_subparsers.required = True + + @cmd2.with_argparser(has_subcmd_parser) + def do_test_subcmd_decorator(self, args: argparse.Namespace): + handler = args.get_handler() + handler(args) + + subcmd_parser = cmd2.Cmd2ArgumentParser(add_help=False, description="The subcommand") + + @cmd2.as_subcommand_to('test_subcmd_decorator', 'subcmd', subcmd_parser, help='the subcommand') + def subcmd_func(self, args: argparse.Namespace): + # Make sure printing the Namespace works. The way we originally added get_hander() + # to it resulted in a RecursionError when printing. + print(args) + @pytest.fixture def subcommand_app(): app = SubcommandApp() @@ -373,6 +391,11 @@ def test_add_another_subcommand(subcommand_app): assert new_parser.prog == "base new_sub" +def test_subcmd_decorator(subcommand_app): + out, err = run_cmd(subcommand_app, 'test_subcmd_decorator subcmd') + assert out[0].startswith('Namespace(') + + def test_unittest_mock(): from unittest import mock from cmd2 import CommandSetRegistrationError diff --git a/tests/test_plugin.py b/tests/test_plugin.py index e49cbbfc..d40a9b61 100644 --- a/tests/test_plugin.py +++ b/tests/test_plugin.py @@ -279,7 +279,7 @@ class PluggedApp(Plugin, cmd2.Cmd): @with_argparser(parser) def do_argparse_cmd(self, namespace: argparse.Namespace): """Repeat back the arguments""" - self.poutput(namespace.__statement__) + self.poutput(namespace.get_statement()) ### # |