summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorKevin Van Brunt <kmvanbrunt@gmail.com>2020-08-25 11:25:00 -0400
committerGitHub <noreply@github.com>2020-08-25 11:25:00 -0400
commitae7e67c20217baaa17e6d182a3fd33b9e8c982e8 (patch)
treeb8cfbaca2ec4622a981d96c33c7a964ca621108e /tests
parenta540cfc5373cee2272de6c81be8b6fa8a78c6462 (diff)
parent9b5a98825a9b00807a40494e8c634c392077ccd2 (diff)
downloadcmd2-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.py23
-rw-r--r--tests/test_plugin.py2
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())
###
#