summaryrefslogtreecommitdiff
path: root/tests/test_argparse.py
diff options
context:
space:
mode:
authorJared Crapo <jared@kotfu.net>2018-01-07 12:06:11 -0700
committerJared Crapo <jared@kotfu.net>2018-01-07 12:06:11 -0700
commitd63c878413006630834324d71bd22f012bc543a8 (patch)
tree70cd68c89067338921653038df21d3947bdfa46e /tests/test_argparse.py
parent67e669e3345fb637e4f4779691a7a8ec4b1763f6 (diff)
downloadcmd2-git-d63c878413006630834324d71bd22f012bc543a8.tar.gz
New test cases for argparse
Diffstat (limited to 'tests/test_argparse.py')
-rw-r--r--tests/test_argparse.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/test_argparse.py b/tests/test_argparse.py
new file mode 100644
index 00000000..82932e6d
--- /dev/null
+++ b/tests/test_argparse.py
@@ -0,0 +1,54 @@
+# coding=utf-8
+"""
+Cmd2 testing for argument parsing
+"""
+import argparse
+import pytest
+
+import cmd2
+from conftest import run_cmd, StdOut
+
+class ArgparseApp(cmd2.Cmd):
+ def __init__(self):
+ self.maxrepeats = 3
+ cmd2.Cmd.__init__(self)
+
+ argparser = argparse.ArgumentParser(
+ prog='say',
+ description='Repeats what you tell me to'
+ )
+ argparser.add_argument('-p', '--piglatin', action='store_true', help='atinLay')
+ argparser.add_argument('-s', '--shout', action='store_true', help='N00B EMULATION MODE')
+ argparser.add_argument('-r', '--repeat', type=int, help='output [n] times')
+ argparser.add_argument('word', nargs='?', help='word to say')
+ @cmd2.with_argument_parser(argparser)
+ def do_say(self, cmdline, args=None):
+ word = args.word
+ if word is None:
+ word = ''
+ if args.piglatin:
+ word = '%s%say' % (word[1:], word[0])
+ if args.shout:
+ word = word.upper()
+ repetitions = args.repeat or 1
+ for i in range(min(repetitions, self.maxrepeats)):
+ self.stdout.write(word)
+ self.stdout.write('\n')
+
+@pytest.fixture
+def argparse_app():
+ app = ArgparseApp()
+ app.stdout = StdOut()
+ return app
+
+def test_argparse_basic_command(argparse_app):
+ out = run_cmd(argparse_app, 'say hello')
+ assert out == ['hello']
+
+#def test_argparse_quoted_arguments(argparse_app):
+# out = run_cmd(argparse_app, 'say "hello there"')
+# assert out == ['hello there']
+
+#def test_pargparse_quoted_arguments_too_many(argparse_app):
+# out = run_cmd(argparse_app, 'say "hello there" morty')
+# assert out == ['hello there morty']